如何阻止对 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 机器,您应该在远程计算机上收到“请求超时”或“目标主机无法访问”消息。