《Linux iptables:規則原理和基礎》和《Linux iptables:規則組成》介紹了iptables的基礎及iptables規則的組成,本篇通過實際操作進行iptables應用場景的實際演示。
防火牆設置策略
防火牆的設置策略一般分為兩種,一種叫“通”策略,一種叫“堵”策略:
通策略,默認所有數據包是不允許通過的,對於允許的數據包定義規則。
堵策略則是,默認所有數據包是全部允許通過的,對於要拒絕的數據包定義規則。
一般來說服務器的防火牆設置都是采用第一種策略,安全性更高,本篇介紹的場景實戰也是采用“通”策略。
場景實戰定義
假定本篇要實現以下場景定義的規則:
1、對所有的地址開放本機的80、22、10-21端口訪問;
2、對所有的地址開放ICMP協議的數據包訪問;
3、其他未被允許的端口禁止訪問。
iptables規則實現
實現以上定義的命令操作:
先清空所有默認規則
復制代碼代碼如下:
iptables -F
開放端口
復制代碼代碼如下:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
開放ICMP
復制代碼代碼如下:
iptables -I INPUT -p icmp -j ACCEPT
禁止其他端口
復制代碼代碼如下:
iptables -A INPUT -j REJECT
查看規則
復制代碼代碼如下:
iptables -L -n
操作結果:
iptables規則定義要點
在以上的操作過程中有幾個點需要注意:
1、一定要允許22端口訪問,否則在輸入iptables -A INPUT -j REJECT時,SSH會立即斷開,無法再進行遠程操作;
2、iptables -A INPUT -j REJECT一定要使用 A 命令追加到規則末尾,不能使用 I 命令插入,使拒絕操作在最後生效;
3、允許連續范圍端口可以使用 起始:結束端口 來指定。