公网上的服务器每天都会被大量来源不明的程序扫描着,为了降低影响并避免一些不必要的风险,我准备把服务器的 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 命令的文章:
Linux iptables 命令Linux iptables 命令使用介绍和选项参数参考。