-
iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
把这条语句插在input链的最前面(第一条),对状态为ESTABLISHED,RELATED的连接放行。
这条规则在某种情况下甚至比下面开放ssh服务都重要:① 如果INPUT连默认为DROP,② INPUT链默认为INPUT,但存在这条规则-A INPUT -j REJECT --reject-with icmp-host-prohibited
,上面两种情况下都必须添加--state RELATED,ESTABLISHED
为第一条,否则22端口无法通行,把自己锁在防火墙外面了。
有了这条规则,可保证只要当前ssh没有关闭,哪怕防火墙忘记开启22端口,也可以继续连接。 -
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
允许所有,不安全,默认。 -
iptables -A INPUT -s 172.29.73.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
限制指定IP范围能SSH,可取 -
iptables -A INPUT -s 10.30.0.0/16 -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT
允许一个IP段访问多个端口 -
iptables -A INPUT -s 10.30.26.0/24 -p tcp -m tcp --dport 80 -j DROP
禁止某IP段访问80端口,将-j DROP
改成-j REJECT --reject-with icmp-host-prohibited
作用相同。
iptables -A INPUT -s 172.29.73.23 -j ACCEPT
完全信任某一主机,尽量不使用
iptables -I INPUT 2 -i lo -j ACCEPT
允许loopback。回环接口是一个主机内部发送和接收数据的虚拟设备接口,应该放行所有数据包。指定插入位置为 2 则之前该编号为 2 规则依次后移。
-
-A INPUT -p icmp -j ACCEPT
接受icmp数据包,可以ping。也可以设置只允许某个特定的IP,见后文。
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
这条规则用在INPUT链默没有DROP的情况,作用与-P DROP
相同,当前面所有的规则都没匹配时,自然落到这个 REJECT 上。
类似的FORWARD链也可以这么用:iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
。
当然,更强的规则是将OUPUT
链也设置成DROP,这样一来情况就会复杂很多,如就是发送名解析请求,也要添加规则iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
。
正是因为这样的太过麻烦,所以一般OUTPUT策略默认为ACCEPT。(安全性比较高的系统除外)