我对此进行了大量研究,发现一些参考文献相互矛盾。
IPV6 例如RFC4890表示应允许以下类型以实现最佳功能:
类型 1、2、3、4、128、129,以及用于行动辅助的 144、145、146 和 147。
然而这来源没有提到需要行动援助:(也省略了类型 1 和 4)
类型 128、129、2、3 以及 NDP 和 SLAAC 133、134、135、136 和 137
另一方面,前者指出,NDP 和 SLAAC 不需要特别关注,因为无论如何它们都会被丢弃。那么谁是对的?最好让两个来源提到的这些都安全吗?
IPV4: 令人惊讶的是参考没有针对 IPv4 的任何建议,但其他来源说 IPv4 需要类型 8、0、3 和 11。是否有任何官方参考资料建议应允许哪些 IPv4 ICMP?
更新: 虽然答案很好,但我觉得它太笼统了,不能接受它作为真正的解决方案。如果阻止不是答案,那么速率限制一定是提供一定程度保护的正确方法。我相信带有正确代码示例的答案会更令人放心。
答案1
不应阻止所有 ICMP。默认情况下,这可以是拒绝列表,而不是允许列表。
从速率限制开始,但不进行其他过滤,ICMP。
读RFC 4890 第 3 节 取决于预期的安全考虑。特别是重定向转移数据包,但标准要求这些数据包在本地,在链路上。大容量时拒绝服务,但通常可以通过速率限制来缓解。也许可以发现主机,但这并不能揭示太多信息。ICMP 不是很危险。