《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、允许连续范围端口可以使用 起始:结束端口 来指定。