一、前言
在日常网络服务器的维护和使用过程中,ping命令是最为常用的一个检测命令,它所使用的是ICMP协议。但是为了保护主机,很多时候我们需要禁止ICMP协议,即禁止用户ping操作,在这种情况下,终端再使用ping命令检测,服务器是不会再做出任何响应。
Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:
A、内核参数
B、防火墙
需要这2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping。
二、禁止Ping方法
方法1 通过sys配置禁止ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
方法2 通过iptables命令禁止ping
iptables -I INPUT -i ech0 -p icmp -s 0/0 -d 0/0 -j DROP
以上这些配置的话,重启一般就没掉了。如果需要开机启动,ubuntu提供以下的方式进行禁止ping操作,通过修改sysctl.conf
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
重新加载配置文件
sysctl -p
不过在今天,我发现重启之后,还是可以ping的,当前系统的版本是Ubuntu 18.04, 只能在启动后,在执行一下sysctl -p
。
三、允许ping方法
配置sys允许ping:
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
通过iptables允许ping:
iptables -I INPUT -i ech0 -p icmp -s 0/0 -d 0/0 -j ACCEPT