RedHat 7.0及CentOS 7.0禁止Ping的三种方法

RedHat 7.0及CentOS 7.0禁止Ping的三种方法

操作环境:

RedHat 7.0(CentOS 7.0的操作方法与此一致)


方法一 临时禁用ICMP协议

修改文件/proc/sys/net/ipv4/icmp_echo_ignore_all的值。 

切换到root,输入命令:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all


这样就将/proc/sys/net/ipv4/icmp_echo_ignore_all文件里面的0临时改为了1,从而实现禁止ICMP报文的所有请求,达到禁止Ping的效果,网络中的其他主机Ping该主机时会显示“请求超时”,但该服务器此时是可以Ping其他主机的。


如果想启用ICMP响应,则输入:

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all


注0:由于/proc/sys/net/ipv4/icmp_echo_ignore_all这个文件是只读的,即使我们使用root用户登陆,vim打开/proc/sys/net/ipv4/icmp_echo_ignore_all,将里面的0该为1之后使用qw!强制保存也无法完成修改。因此上面这个方法只是临时的,一旦服务器重启就又会回到默认的0状态(假设修改前/proc/sys/net/ipv4/icmp_echo_ignore_all里面的值就是0)。如果想永久修改(当然也可以改回来,只是不再受服务器关机或重启的影响)请使用方法二或方法三。


方法二 永久禁用ICMP协议:

禁用ICMP协议,输入:

vim /etc/sysctl.conf


添加一条信息:

net.ipv4.icmp_echo_ignore_all = 1

保存并退出。

输入:

sysctl -p

使配置生效。


启用ICMP协议,输入:

vim /etc/sysctl.conf

将:

net.ipv4.icmp_echo_ignore_all = 1

修改为:

net.ipv4.icmp_echo_ignore_all = 0

如果没有net.ipv4.icmp_echo_ignore_all = 1就添加:

net.ipv4.icmp_echo_ignore_all = 0

保存并退出。 

输入:

sysctl -p

使配置生效。


注1:如果想启用ICMP响应,不能直接在/etc/sysctl.conf里删除net.ipv4.icmp_echo_ignore_all> = 1之后sysctl -p. 这样做仍然是禁止Ping的状态,此时使用命令:vim /proc/sys/net/ipv4/icmp_echo_ignore_all查看发现其值仍然是1, 即仍处于拒绝ICMP响应的状态。


方法三 配置IPTABLES防火墙

Iptables防火墙是集成于Linux内核的IP信息包过滤系统。方法三不能和上面的方法一和方法二组合使用。即,在使用方法三时不能已经使用方法一或方法二禁止了Ping.


禁止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"表示丢弃.


注2:由于方法三是对防火墙进行的设置,所以使用方法三禁止Ping后只会阻止来自外网的Ping请求,内网主机的Ping请求仍然会正常响应。使用方法一和方法二禁止Ping后不仅会阻止外网的Ping请求也会阻止内网的Ping请求。


猜你喜欢