我看到这个问题(如何阻止 Linux 发送 ICMP“目标不可达”响应?) 有很多讨论指出你不应该关闭 ICMP 不可达消息。我想知道为什么以及什么时候应该关闭?我也想知道怎么做。我知道这会破坏 MTU 路径发现,但还有什么呢?
在思科设备上,您可以打开和关闭此功能,这肯定是有原因的。在他们的文档中,它只是说关闭它是为了提高安全性,因为这样更难获取有关您的网络的信息?这就是思科文档所说的。我需要在公司的交换机上实现打开和关闭此功能的功能,所以我正在学习它。不管为什么,我仍然必须这样做,但我希望得到一个明智的答案,说明为什么要这样做,或者不告诉别人。
当我想关闭 ICMP 重定向时,我会这样做:
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
对于无法到达的地方有类似的东西吗?
另一个线程上的用户这样做了:
iptables -A OUTPUT -p icmp --icmp-type destination-unreachable -j DROP
这是一个好方法吗?然后我可以通过停止这种下降来再次打开它吗?
我应该告诉人们他们不需要这个功能吗?
编辑:我在网上看到这个:
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.
答案1
答案2
阻止服务器发送“目标无法访问”基本上可以让它对大多数端口扫描保持沉默,从而提高安全性。但是,效果并不大。它确实会破坏路径发现,而且没有真正的理由阻止它。扫描服务器的方法有很多种,ICMP 响应只是其中一种。
答案3
我认为你犯了一些错误。ICMP 重定向和ICMP 目标不可达是不同的。
应该禁用 ICMP 重定向,因为它极易被伪造,攻击者基本上可以伪造 ICMP 重定向数据包。
ICMP 目标不可达是您的主机进行路径 MTU 发现所必需的,禁用它可能会对您的主机通信产生一些误报。但攻击者也可以使用它来发现您的网络拓扑。
对您来说,简单的解决方案是让您的防火墙拒绝所有新进入的 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
因此,您的主机仍然可以进行路径 MTU 发现,并且对于某些自动扫描仪来说几乎是“隐形的”。