《Linux iptables:規(guī)則原理和基礎(chǔ)》和《Linux iptables:規(guī)則組成》介紹了iptables的基礎(chǔ)及iptables規(guī)則的組成,本篇通過(guò)實(shí)際操作進(jìn)行iptables應(yīng)用場(chǎng)景的實(shí)際演示。
防火墻設(shè)置策略
防火墻的設(shè)置策略一般分為兩種,一種叫“通”策略,一種叫“堵”策略:
通策略,默認(rèn)所有數(shù)據(jù)包是不允許通過(guò)的,對(duì)于允許的數(shù)據(jù)包定義規(guī)則。
堵策略則是,默認(rèn)所有數(shù)據(jù)包是全部允許通過(guò)的,對(duì)于要拒絕的數(shù)據(jù)包定義規(guī)則。
一般來(lái)說(shuō)服務(wù)器的防火墻設(shè)置都是采用第一種策略,安全性更高,本篇介紹的場(chǎng)景實(shí)戰(zhàn)也是采用“通”策略。
場(chǎng)景實(shí)戰(zhàn)定義
假定本篇要實(shí)現(xiàn)以下場(chǎng)景定義的規(guī)則:
1、對(duì)所有的地址開(kāi)放本機(jī)的80、22、10-21端口訪問(wèn);
2、對(duì)所有的地址開(kāi)放ICMP協(xié)議的數(shù)據(jù)包訪問(wèn);
3、其他未被允許的端口禁止訪問(wèn)。
iptables規(guī)則實(shí)現(xiàn)
實(shí)現(xiàn)以上定義的命令操作:
先清空所有默認(rèn)規(guī)則
iptables -F
開(kāi)放端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
開(kāi)放ICMP
iptables -I INPUT -p icmp -j ACCEPT
禁止其他端口
iptables -A INPUT -j REJECT
查看規(guī)則
iptables -L -n
操作結(jié)果:
iptables規(guī)則定義要點(diǎn)
在以上的操作過(guò)程中有幾個(gè)點(diǎn)需要注意:
1、一定要允許22端口訪問(wèn),否則在輸入iptables -A INPUT -j REJECT時(shí),SSH會(huì)立即斷開(kāi),無(wú)法再進(jìn)行遠(yuǎn)程操作;
2、iptables -A INPUT -j REJECT一定要使用 A 命令追加到規(guī)則末尾,不能使用 I 命令插入,使拒絕操作在最后生效;
3、允許連續(xù)范圍端口可以使用 起始:結(jié)束端口 來(lái)指定。