我在这个问题上看到(如何阻止 Linux 发送 ICMP“目标无法访问”响应?)有很多讨论指出您不应该关闭 ICMP 无法访问的消息。我想知道为什么以及何时应该这样做?我也想知道怎么做。我知道它会破坏 MTU 路径发现,但还有什么?
在 cisco 设备上,您可以打开和关闭此功能,这肯定是有原因的。在他们的文档中,它只是说关闭它是为了提高安全性,因为更难获取有关您的网络的信息?这就是 cisco 文档所说的。我需要实现为我的公司打开和关闭开关的功能,所以我正在了解它。不管为什么我仍然必须这样做,但我想知道为什么要这样做或不给别人的答案。
当我想关闭 ICMP 重定向时,我会这样做:
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
Run Code Online (Sandbox Code Playgroud)
对于无法访问的对象是否有类似的东西?
另一个线程上的用户是这样做的:
iptables -A OUTPUT -p icmp --icmp-type destination-unreachable -j DROP
Run Code Online (Sandbox Code Playgroud)
这是一个好方法,然后我可以通过停止这种下降来再次打开它吗?
我应该告诉人们他们不需要这个功能吗?
编辑:在线我看到这个:
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.
Run Code Online (Sandbox Code Playgroud)
来自security.SE 上关于同一主题的非常详尽且写得很好的答案,我强烈建议您阅读:
ICMP 的核心是设计为 IP 的调试、故障排除和错误报告机制。这使得它非常有价值,因此需要花很多心思将其关闭。这有点像在所有 cron 条目的末尾添加 >/dev/null 2>&1 。
Source Quench / Redirect 几乎已经过时并从现代网络设备中删除。IPv6需要ICMP 才能完全发挥作用。
底线:除非您完全理解其含义,否则不要阻止任何事情。如果我要给您一个建议,那就是在您的外部防火墙中阻止 icmp echo,并让其他所有内容保持打开状态。但这只是我的观点。