我在这个问题上看到( 我怎样才能阻止Linux发送ICMP“Destination Unreachable”响应? ),有很多讨论指出不应该closuresICMP不可达消息。 我想知道为什么和什么时候你应该? 我也想知道如何去做。 我知道它打破MTUpath发现,但还有什么?
在思科设备上,你可以打开和closures这个,一定有一个原因。 在他们的文档中,它只是说,closures它应该是为了增加安全性,因为它很难得到有关您的networking的信息? 这就是思科文档所说的。 我需要实现在公司的一个开关上打开和closures这个function,所以我正在学习它。 不pipe为什么,我仍然必须这样做,但我想知道为什么要这样做或不要给别人。
当我想closuresICMPredirect时,我这样做:
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
有没有类似的不可达的东西?
在另一个线程上的用户这样做:
iptables -A OUTPUT -p icmp --icmp-type destination-unreachable -j DROP
这是一个好方法,那么我可以通过停止这个下降再次打开它?
我应该告诉人们他们不需要这个function吗?
编辑:在线我看到这个:
An attacker could gather information's about your network when scanning it, like unused IP's and networks. When working with (interface-) Access-Lists, a deny statement triggers an ICMP Type 3 Code 9/10 message (Network/Host is Administratively Prohibited). When disabling ICMP unreachables on the interface where the ACL is applied, the deny statement acts like a 'drop' and does not reply.
从一个非常详尽的,写得很好的关于同一个主题的答案 ,我非常推荐你阅读:
ICMP的核心是针对IP的debugging,故障排除和错误报告机制。 这使得它非常有价值,所以需要进行大量的思考才能closures它。 这将会有点像在你所有的cron项目结尾处添加/ dev / null 2>&1。
源Quench /redirect几乎已经过时,并从现代networking设备中删除。 IPv6 要求 ICMP充分发挥作用。
底线:除非您完全理解其含义,否则不要阻塞任何东西。 如果我要给你一个build议,那就是在你的外部防火墙中阻止icmp echo,并且保持其他所有的东西都打开。 但这只是我的观点。
防止您的服务器发送“目的地不可达”基本上使大多数端口扫描静音,这增加了安全性。 但是,不是太多。 它确实破坏了path发现,并没有真正的理由来阻止它。 扫描服务器有很多种方法,ICMP响应只是其中之一。
我想你有一些错误。 ICMPredirect和ICMP目标不可访问是不同的。
应该禁用ICMPredirect,因为伪造非常容易,攻击者基本上可以伪造ICMPredirect数据包。
ICMP Destination Unreachable需要你的主机做pathMTU发现,禁用它可以使你的主机通信有一些虚假的位置。 但攻击者也可以使用它来发现您的networking拓扑。
对你来说简单的解决办法是让你的防火墙拒绝所有新接收的ICMP数据包,只接受ESTABLISHED状态的数据包。
iptables -A INPUT -i eth0 -p icmp -m state --state ESTABLISHED -j ACCEPT iptables -A OUPUT -i eth0 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -e eth0 -p icmp -j DROP
所以你的主机仍然可以进行pathMTU发现,而且几乎是用一些自动扫描器“隐形”的。