我想我的CentOS 5.3系统几乎完成了我的iptables设置.这是我的剧本……
# Establish a clean slate iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F # Flush all rules iptables -X # Delete all chains # Disable routing. Drop packets if they reach the end of the chain. iptables -P FORWARD DROP # Drop all packets with a bad state iptables -A INPUT -m state --state INVALID -j DROP # Accept any packets that have something to do with ones we've sent on outbound iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Accept any packets coming or going on localhost (this can be very important) iptables -A INPUT -i lo -j ACCEPT # Accept ICMP iptables -A INPUT -p icmp -j ACCEPT # Allow ssh iptables -A INPUT -p tcp --dport 22 -j ACCEPT # Allow httpd iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Allow SSL iptables -A INPUT -p tcp --dport 443 -j ACCEPT # Block all other traffic iptables -A INPUT -j DROP
对于上下文,此计算机是虚拟专用服务器Web应用程序主机.
在一个previous question,Lee B说我应该“更多地锁定ICMP”.为什么不完全阻止它?如果我这样做会发生什么(会发生什么坏事)?
如果我不需要阻止ICMP,我怎么能更多地锁定它?
解决方法
ICMP的方式不仅仅是“traceroute”和“ping”.当您运行DNS服务器(端口不可达)时,它用于反馈,在现代DNS服务器中,它实际上可以帮助选择不同的计算机以更快地查询.
如上所述,ICMP也用于路径MTU发现.机会是你的OS在它发送的TCP数据包上设置“DF”(不碎片).如果路径上的某些内容无法处理该数据包大小,则期望获得ICMP“需要分片”数据包.如果你阻止所有ICMP,你的机器将不得不使用其他回退机制,它基本上使用超时来检测PMTU“黑洞”,并且永远不会正确优化.
此外,您应该问自己为什么要阻止ICMP.具体到底你想阻止什么?很明显你不明白ICMP的用途,这是很常见的.我会非常谨慎地阻止你不完全理解的东西.
为了更难以了解这一点,许多常见的防火墙书籍都说“阻止ICMP” – 很明显他们的作者从未阅读过RFC或者必须解决围绕这些建议的问题.阻止所有ICMP是不好的建议.
现在,限制它也可能会受到伤害.如果您的计算机正忙,或者即使不是,您也可以获得大量的ICMP流量.我的Web服务器每分钟可能获得大约10-100个ICMP数据包,其中大部分是PMTU发现.即使有人选择使用某种类型的ICMP数据包攻击我的服务器,它实际上并没有那么大的优惠.如果您的机器甚至接受一个TCP连接(ssh,http,邮件等),那么这可能是一个比误解ICMP更大的攻击向量.