linux – 为什么不阻止ICMP?

前端之家收集整理的这篇文章主要介绍了linux – 为什么不阻止ICMP?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想我的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更大的攻击向量.

猜你在找的Linux相关文章