一、iptables背景说明
使用iptables设置防火墙,可以有效管理防火墙各种规则,在动作目标中,有DROP和ACCEPT两种,这两种规则设置的顺序和要求是怎么样的呢?
一般而言,先把ACCEPT放在前面,DROP放在后面,但这个并非绝对,所以具体看应用场景是怎么样的。
只要记住一个原则,就知道怎么设置防火墙,根据匹配规则原则,设置防火墙规则完成后,系统是一条一条规则去匹配,直至匹配完所有规则。如果第一条规则就已经匹配,就不会继续往下匹配第二条规则,记住这个原则即可。
下面通过实际案例操作,演示说明。
二、iptables设置顺序
假设只允许一个ip地址访问服务器上的8080,8090端口,其他任何ip地址都无法访问该服务器上的8080,8090端口。
源端服务器A:10.2.17.205
目标端服务器B:10.2.17.206
(1). 在目标端服务器B(10.2.17.206)上设置如下规则:
iptables -I INPUT -p tcp -m multiport --dport 8080,8090 -j DROP
iptables -I INPUT -p tcp -m multiport -s10.2.17.205 --dport 8080,8090 -j ACCEPT
#注意:这里使用的是-I,使用-I后加的规则会变成第一个规则,你可以使用-A进行追加,这样规则添加进去的顺序就是你输入命令的顺序
(2). 查看新建的规则:
iptables -nL --line-number
如下图所示:ACCEPT成了1号规则,DROP成了2号规则
(3). 在源端服务器A(10.2.17.205)服务器上发起telnet测试:
可以看到telnet成功
(4). 清空规则:
iptables -F
(5). 重新添加规则:这里使用-A追加,顺序添加
iptables -A INPUT -p tcp -m multiport --dport 8080,8090 -j DROP
iptables -A INPUT -p tcp -m multiport -s10.2.17.205 --dport 8080,8090 -j ACCEPT
(6). 查看规则顺序:
iptables -nL --line-number
可以看见现在1号规则顺序是DROP,2号规则才是ACCEPT
(7). 再次在10.2.17.205服务器上发起telnet测试:
可以看到telnet不成功
三、iptables总结
设置规则时,到底是把DROP放在前,还是放在最后,需要根据实际场景定论,很多博主会说一般把DROP放在最后,这种说法不严谨。
结合规则匹配顺序,系统匹配规则时,是每条规则顺序匹配,如果第一个规则就能匹配成功,就不会往下继续匹配,按照这个原则设置防火墙即可。