Ping属于ICMP协议(即“Internet控制报文协议”),而ICMP协议是TCP/IP协议的一个子协议,工作在网际层。
ICMP协议主要用于传输网络是否连通、主机是否可达以及路由是否可用等控制信息。Ping可以回显TTL生存时间,网络延迟等信息,而且响应Ping请求也会消耗服务器资源。因此,在服务器上禁用ICMP响应可以尽可能的隐藏服务器在Internet上的踪迹,降低受攻击面。
linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A、内核参数,B、防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping。
禁止PING设置
方法一:内核参数设置 1)临时禁止PING操作 echo 1
/proc/sys/net/ipv4/icmp_echo_ignore_all
2)永久禁止PING操作: /etc/sysctl.conf中增加一行 net.ipv4.icmp_echo_ignore_all=1
sysctl -p
注:0表示允许,1表示禁止
方法二: Iptables防火墙是集成于Linux内核的IP信息包过滤系统。 禁止Ping iptables -A INPUT -p
icmp --icmp-type 8 -s 0/0 -j DROP
停止禁用Ping iptables -D INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
说明:
-A:添加防火墙规则. INPUT:入站规则.
-p icmp:指定包检查的协议为ICMP协议.
–icmp-type 8:指定ICMP类型为8.
-s:指定IP和掩码,“0/0”表示此规则针对所有IP和掩码.
-j:指定目标规则,即包匹配则应到做什么,"DROP"表示丢弃.
注:
1.使用方法一禁止Ping后不仅会阻止外网的Ping请求也会阻止内网的Ping请求。
2.使用方法二是对防火墙进行的设置,所以使用方法二禁止Ping后只会阻止来自外网的Ping请求,内网主机的Ping请求仍然会正常响应。