iptables是linux系統下的一個功能強大的模塊,不僅可以用作防火墻,還可以實作NAT等眾多路由功能,iptables的容器有很清晰的層次關系:
1. iptables是表的容器,iptables包含表(4張表)
2. 表是鏈的容器,每個表都包含若干個鏈
3. 鏈是規則的容器,真正的過濾規則是屬于鏈里面的
iptables是采用資料包過濾機制作業的,它會對請求的資料包的包頭資料進行分析,并根據預先設定的規則來進行匹配,決定是否可以進入主機,流程如下:

從上圖不難看出,防火墻是一層層過濾的,按照配置規則的順序從上到下,從前到后進行過濾,如果匹配上規則,即明確了是阻止還是通過,此時資料包就不再往下匹配新規則了,否則一直向下匹配,直到匹配到默認規則,得到明確的阻止或通過;防火墻的默認規則是對應鏈的所有規則執行完后才會執行的,
iptables根據功能和表的定義劃分包含三個表,filter,nat,mangle,其每個表又包含不同的操作鏈(Chains),要使用iptables實作ip白名單、mac地址白名單,只需使用filter表,filter表包含的操作鏈有三個:INPUT、FORWARD、OUTPUT:
1.INPUT負責過濾所有目標地址是本機地址的資料包,即進入主機的資料包
2.FORWARD負責轉發流經主機的資料包
3.OUTPUT負責處理所有源地址是本機地址的資料包,即主機發出的資料包
防火墻功能主要設定INPUT鏈的規則,首先加載如下模塊到Linux內核:
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack 連接跟蹤
modprobe ip_conntrack_ftp 連接跟蹤
modprobe ip_nat_ftp
modprobe ipt_state
iptables的語法如下:
iptables -P INPUT DROP iptables [-A/-I num] INPUT -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT -A: 添加規則到指定鏈的結尾,最后一條 -I num: 添加規則到指定鏈的指定行,num默認為1,即添加到第一條 -t: 指定表,不指定默認為filter -p: 指定協議(all,tcp,udp,icmp),默認為all --dport: 指定埠 -j: 處理的行為, ACCEPT, DROP, REJECT(最好使用drop而非reject,因為'拒絕'會回傳給用戶資訊) -P: 設定默認策略 -s: 匹配來源地址IP/MASK -i: 接網卡名稱,匹配從這塊網卡流入的資料 -o: 接網卡名稱,匹配從這塊網卡流出的資料 #setting for loopback interface iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT -m mac --mac-source XX:XX:XX:XX:XX:XX -m state --state NEW/ESTABLISHED/RELATED/INVALID //可以用,連接多個
可以看到,實體的第二句即是將某個MAC地址加入白名單中,第一句則是將INPUT的默認規則設為DROP,以屏蔽來自其它MAC訊息,若要洗掉規則,可使用以下方法:
iptables -F //清除所有規則 iptables -D INPUT -p tcp --dport 8080 -j DROP(洗掉指定鏈中匹配的規則) /etc/init.d/iptables restart (用iptables命令列配置的命令都是臨時生效) iptables -D INPUT 規則序號
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/295847.html
標籤:Linux
上一篇:樹莓派遠程連接工具SSH使用教程
下一篇:linux:mysql資料庫備份
