如何阻止对 Linux 系统的 Ping ICMP 请求
一些系统管理员经常阻止发送到其服务器的ICMP消息,以便在恶劣的网络上将 Linux 机器隐藏在外界视线之外,或者防止某种 IP 泛洪和拒绝服务攻击。
在 Linux 系统上阻止ping 命令的最简单方法是添加iptables规则,如下例所示。Iptables是Linux 内核netfilter的一部分,通常在大多数 Linux 环境中默认安装。
# iptables -A INPUT --proto icmp -j DROP # iptables -L -n -v [List Iptables Rules]
在 Linux 系统中阻止 ICMP 消息的另一种常用方法是添加以下内核变量,该变量将丢弃所有 ping 数据包。
# echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_all
为了使上述规则永久生效,请将以下行附加到/etc/sysctl.conf文件,然后使用sysctl命令应用该规则。
# echo “net.ipv4.icmp_echo_ignore_all = 1” >> /etc/sysctl.conf # sysctl -p
在带有UFW应用程序防火墙的基于 Debian 的 Linux 发行版中,您可以通过将以下规则添加到/etc/ufw/before.rules文件来阻止 ICMP 消息,如下面的摘录所示。
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
通过发出以下命令重新启动UFW防火墙以应用规则。
# ufw disable && ufw enable
在使用Firewalld接口管理iptables规则的CentOS或Red Hat Enterprise Linux发行版中,添加以下规则以删除 ping 消息。
# firewall-cmd --zone=public --remove-icmp-block={echo-request,echo-reply,timestamp-reply,timestamp-request} --permanent # firewall-cmd --reload
为了测试防火墙规则是否已在上述所有情况下成功应用,请尝试从远程系统 ping 您的 Linux 计算机 IP 地址。如果 ICMP 消息被阻止发送到您的 Linux 计算机,您应该会在远程计算机上收到“请求超时”或“目标主机无法访问”消息。