关闭/打开无法接通消息的原因是什么?

关闭/打开无法接通消息的原因是什么?

我看到这个问题(如何阻止 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

来自一篇非常详尽且写得很好的回答关于同一主题安全,我强烈建议你阅读:

ICMP 的核心设计是作为 IP 的调试、故障排除和错误报告机制。这使得它非常有价值,因此需要花很多心思来关闭它。这有点像将 >/dev/null 2>&1 添加到所有 cron 条目的末尾。

源抑制/重定向已经过时,并从现代网络设备中移除。IPv6需要ICMP 完全发挥作用。

底线:除非您完全理解其含义,否则不要阻止任何东西。如果我给您一个建议,那就是在外部防火墙中阻止 icmp echo,而其他一切都保持开放。但这只是我的观点。

答案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 发现,并且对于某些自动扫描仪来说几乎是“隐形的”。

相关内容