如何阻止Ping ICMP请求到Linux系统

一些系统管理员经常阻止ICMP消息到他们的服务器,以便在粗糙的网络上隐藏Linux外部世界,或者防止某种类型的IP泛滥和拒绝服务攻击。

一些系统管理员经常阻止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防火墙中阻止Ping ICMP请求

在UFW防火墙中阻止Ping ICMP请求

重新启动UFW防火墙以应用规则,通过发出以下命令。

# ufw disable && ufw enable

在使用Firewalld接口管理iptables规则的CentOSRed 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机器上,则您应该在远程机器上收到“ 请求超时 ”或“ 目标主机不可达 ”消息。