zzxworld

Linux 服务器禁止 ping 命令的两种设置方法

公网上的服务器每天都会被大量来源不明的程序扫描着,为了降低影响并避免一些不必要的风险,我准备把服务器的 ping 命令响应功能给关了。测试了两个关闭的方法,分享给同样有此需求的朋友。

开始之前需要提醒一下,在服务器上禁止 ping 命令响应只是让客户端无法使用 ping 命令来感知服务器的状态,但这并不意味着完全就可以避免被一些恶意软件扫描,所以不要把服务器的安全完全寄于此操作。另外需确认自己没有用到任何基于 ping 命令的服务器监控软件或检测服务,在禁止 ping 命令后,这些软件也会无法正常工作。

使用 sysctl.conf 配置文件

打开 /etc/sysctl.conf 文件,在文件中添加一行配置:

net.ipv4.icmp_echo_ignore_all = 1

保存后,使用 sysctl -p 命令使配置生效。随便找台电脑使用 ping 命令试试,应该返回如下类似请求超时的结果:

❯ ping www.zzxworld.com
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3

使用 iptables

使用 iptables 的方式禁止 ping 命令响应的规则设置如下:

iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP

因为 ping 命令使用的时 ICMP 协议,所以直接把这种协议来源的数据包给拦截了。如果不太理解上面的 iptables 规则设置命令,可以参考前两天我刚总结的一篇讲 iptables 命令的文章: