iptables -L -n --line-number 列出鏈所有的規則
[root@GDY-TEST07 etc]# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 192.168.216.55 0.0.0.0/0 tcp dpt:22 2 ACCEPT tcp -- 192.168.228.0/24 0.0.0.0/0 tcp dpt:22 3 ACCEPT tcp -- 10.153.97.0/24 0.0.0.0/0 tcp dpt:22 4 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination
刪除指定的第4行規則:iptables -D INPUT 4
-A與-I 參數的區別
-A參數
iptables是由上往下進行匹配
iptables -A INPUT -s 192.168.228.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 10.153.97.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
執行以上三條命令后,防火牆由上往下匹配,既從num 1開始匹配到num 3,則允許192.168.228.0/24和10.153.97.0/24這兩個網段訪問,其他不允許訪問
[root@GDY-TEST07 etc]# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 192.168.228.0/24 0.0.0.0/0 tcp dpt:22 2 ACCEPT tcp -- 10.153.97.0/24 0.0.0.0/0 tcp dpt:22 3 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination
對比
-I 參數
iptables -I INPUT -s 192.168.228.0/24 -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -s 10.153.97.0/24 -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j DROP
執行以上三條命令后,防火牆由上往下匹配,既從num 1開始匹配,此時num 1的防火牆策略已將訪問拒絕,num 2和num 3即使accept也不會生效
[root@GDY-TEST07 etc]# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 2 ACCEPT tcp -- 192.168.228.0/24 0.0.0.0/0 tcp dpt:22 3 ACCEPT tcp -- 10.153.97.0/24 0.0.0.0/0 tcp dpt:22 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination
從以上的-A 和 -I參數可以看出,-A 會將后執行的策略添加到已有策略后,而-I 則會插入到已有策略的前(既成為第一條策略)。
按照上述所說,如果想加一條策略為允許192.168.216.55這台機器訪問,此時應采用-I 參數將策略添加到已有策略前,如果采用-A 參數將策略添加到已有策略后,
當前場景則是添加到drop策略后,則“允許192.168.216.55這台機器訪問”策略則不會生效。
正確命令:
iptables -I INPUT -s 192.168.216.55/32 -p tcp --dport 22 -j ACCEPT
[root@GDY-TEST07 etc]# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 192.168.216.55 0.0.0.0/0 tcp dpt:22 2 ACCEPT tcp -- 192.168.228.0/24 0.0.0.0/0 tcp dpt:22 3 ACCEPT tcp -- 10.153.97.0/24 0.0.0.0/0 tcp dpt:22 4 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination
以上所述,只適合上述所說場景。
因為上述場景drop策略是禁止所有從22端口進行訪問。