EC2 实例默认禁用 ICMP 服务。虽然我不太清楚为什么,但我认为这是因为它可能存在潜在的安全风险。目前,我仅在重新启动服务器时启用 Echo Responses,以便查看它是否已启动并正在运行,但一旦服务器上线,我就会再次禁用它。有必要吗?通常禁用 ICMP 的原因是什么?
答案1
ICMP由大量命令组成。禁止全部其中有些会以奇怪的方式破坏你的网络。
ICMP 允许“traceroute”和“ping”(ICMP 回显请求)等功能工作。因此,该部分对于常规诊断非常有用。它还用于在运行 DNS 服务器(端口不可达)时提供反馈,在现代 DNS 服务器中,它实际上可能有助于选择另一台机器进行更快的查询。
ICMP 用于路径 MTU 发现。您的操作系统可能会在其发送的 TCP 数据包上设置“DF”(不分段)。如果路径上的某个东西无法处理该大小的数据包,它期望收到 ICMP“需要分段”数据包。如果您阻止全部ICMP,您的机器将不得不使用其他后备机制,这些机制基本上使用超时来检测 PMTU“黑洞”,并且永远不会正确优化。
可能还有一些更好的理由来启用大部分 ICMP。
现在您要问为什么要禁用:
禁用的原因部分ICMP 包括:
- 保护免受老式蠕虫的攻击,老式蠕虫使用 ICMP 回显请求(又称 ping)来查看主机是否处于活动状态,然后再尝试攻击主机。如今,现代蠕虫无论如何都会尝试这样做,因此这种方法不再有效。
- 隐藏您的基础设施。如果您想这样做,请在您的网络边缘阻止它。不是在每一台计算机上。当出现问题并且所有常规分析工具都失败时,这只会导致您的管理员沮丧地拔掉头上的所有头发。(在这种情况下:亚马逊可以在云的边缘阻止它)。
- 基于 ICMP 的拒绝服务攻击。处理这些攻击的方式与其他 DOS 攻击相同:速率限制。
- 唯一有效的方法:如果您处于不安全的网络上,您可能想要阻止或禁用路由器已更改命令。Obfix:在安全的网络上使用您的服务器。
请注意,有“服务器强化”手册建议阻止 ICMP。他们错了(或者至少不够详细)。它们与通过 MAC 过滤或隐藏 SSID 实现的无线“安全”属于同一类别。
答案2
ICMP 拦截有几个原因,但主要是为了隐藏信息,防止探测者试图识别和分析您的网络。还有几种针对路由器和可公开访问的终端系统的攻击,它们利用 ICMP 流量作为攻击的一部分。
在您的情况下,您可能可以允许回声响应,但这会导致更多探测器注意到您。如今,基于 ping 的 DDOS 和 smurf 攻击等攻击已大大减轻。
http://en.wikipedia.org/wiki/Denial-of-service_attack#ICMP_flood
答案3
我建议通过使用以下方法iptables
而不是永久阻止来防止 ICMP 请求泛滥:
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/minute --limit-burst 100 -j ACCEPT
答案4
面向互联网的服务器上 ICMP 的最大风险是增加了拒绝服务 (DoS) 攻击的表面积。