禁用ICMP回显响应是最直接有效的“隐身”手段,通过设置net.ipv4.icmp_echo_ignore_all=1可静默丢弃所有入站ping请求,使扫描器因无应答而跳过该IP,实现主动隐蔽;该参数仅影响ICMP Echo Request(Type 8),不干扰其他ICMP功能或TCP/UDP通信,需写入/etc/sysctl.conf并执行sysctl -p永久生效。

禁用ICMP回显响应是最直接有效的“隐身”手段。扫描器靠ping确认主机是否在线,一旦收不到应答,多数自动化工具会跳过该IP,相当于从扫描列表里自动剔除——这不是封堵攻击,而是让攻击者根本找不到入口。
为什么必须针对ICMP,而不是封端口
很多人误以为“关掉某个Ping端口”就能防扫描,但ICMP不走端口体系,它和TCP/UDP是平级的网络层协议。封22、80、3306这些端口只能防服务探测,对主机发现毫无作用。真正暴露服务器存在的,就是那一个Type 8(Echo Request)报文的应答。只要系统默认回包,等于主动举手说“我在这儿”。
Windows系统实操:防火墙+注册表双控
仅靠关闭“文件和打印机共享(回显请求)”规则不够稳妥,推荐组合配置:
- 在“高级安全Windows Defender防火墙”中新建入站规则:协议类型选ICMPv4,ICMP类型填8,操作设为“阻止”;同样建一条ICMPv6规则(类型8)
- 进注册表修改:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,新建DWORD值DisableIPSourceRouting并设为2,同时确保EnableICMPRedirect为0
- 执行netsh advfirewall set allprofiles state on确保防火墙开启,再重启“Windows Firewall”服务生效
Linux系统一行命令生效
编辑/etc/sysctl.conf,添加或修改:
net.ipv4.icmp_echo_ignore_all = 1
保存后运行sysctl -p重载。如需保留局域网内运维ping能力,可改用net.ipv4.icmp_echo_ignore_interfaces = eth0(按实际网卡名替换),只屏蔽外网接口。
别忘了底层网络协同验证
尤其在美国VPS等云环境中,hypervisor层常预设ICMP过滤。操作系统配完后,务必从外部用另一台机器执行ping 你的服务器IP测试。若仍通,说明云平台控制台或安全组里还开着ICMP通行策略,需同步关闭——单边配置无效。

















