1. 概述
基于安全考虑,很多服务器是禁ping的,那怎么实现Linux服务器IP禁ping呢?Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:
- 内核参数
- 防火墙
需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping,具体的配置方法如下。
2. 内核参数设置
2.1. 允许ping设置
- 临时允许PING操作的命令为:
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
- 永久允许PING配置方法
/etc/sysctl.conf
中增加一行;
net.ipv4.icmp_echo_ignore_all=0
如果已经有net.ipv4.icmp_echo_ignore_all
这一行了,直接修改=号后面的值即可的(0表示允许,1表示禁止)。
修改完成后执行sysctl -p
使新配置生效。
对于某些系统,用户配置需在/etc/sysctl.d/目录下进行配置
# sysctl settings are defined through files in /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/. To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
2.2. 禁止Ping设置
- 临时禁止PING的命令为:
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
- 永久允许PING配置方法
/etc/sysctl.conf 中增加一行
net.ipv4.icmp_echo_ignore_all=1
如果已经有net.ipv4.icmp_echo_ignore_all
这一行了,直接修改=号后面的值即可的。(0表示允许,1表示禁止)
修改完成后执行sysctl -p
使新配置生效。
特别注意:这种禁止ping的方式,会导致本地服务ping其它服务器的ip也ping不同。
3. 防火墙设置(前提是内核配置是默认值,也就是没有禁止Ping)
这里以 iptables 防火墙为例,其他防火墙操作方法可参考防火墙的官方文档。
3.1. 1、允许ping设置
iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -I OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
或者也可以临时停止防火墙
service iptables stop
3.2. 禁止ping设置
iptables -I INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
若需要删除该规则,
iptables -D INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
#或者
iptables -I INPUT -p icmp --icmp-type 8 -s 0/0 -j ACCEPT
上面主要讲了从内核参数和防火墙设置来设置服务器是否禁ping操作,对安全方面有要求的可以参考设置。