问答题554/1053如何禁止服务器被 ping ?

难度:
2021-11-02 创建

参考答案:

要禁止服务器被 ping,主要是通过禁用 ICMP(Internet Control Message Protocol)响应来实现的。ping 命令实际上是使用 ICMP Echo 请求和响应来检测网络连通性。因此,禁用 ICMP Echo 响应即可实现禁止 ping

以下是几种常见的方法:

1. 使用 sysctl 禁用 ICMP 响应

在 Linux 系统中,可以通过修改 /proc/sys/net/ipv4/icmp_echo_ignore_all 来禁用 ICMP 响应。具体步骤如下:

临时禁用:

1sysctl -w net.ipv4.icmp_echo_ignore_all=1

该命令会立即生效,但重启后会失效。

永久禁用:

为了在系统重启后仍然有效,可以编辑 sysctl 配置文件 /etc/sysctl.conf,添加以下行:

1net.ipv4.icmp_echo_ignore_all = 1

然后应用该配置:

1sysctl -p

2. 使用 iptables 禁用 ICMP 响应

iptables 是 Linux 上的防火墙工具,您可以通过它来阻止 ICMP 请求。

临时禁用 ICMP:

1iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT

该命令会立即生效,但重启后会失效。

永久禁用 ICMP:

为了让 iptables 配置在系统重启后保持有效,您需要将规则保存到防火墙配置中,方法取决于您使用的 Linux 发行版。例如,在基于 Debian 的系统中,可以使用以下命令:

1iptables-save > /etc/iptables/rules.v4

在基于 Red Hat 系统中,您可以使用:

1service iptables save

3. 禁用特定接口的 ICMP 响应

如果只想禁用特定接口的 ping,可以使用以下命令:

1sysctl -w net.ipv4.icmp_echo_ignore_all=1

然后将其添加到特定的接口上。

4. 修改防火墙规则(使用 firewalld

如果您的系统使用的是 firewalld(如在 CentOS 或 RHEL 7 及更高版本中),您可以通过以下命令禁止 ping

禁止 ICMP:

1firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" reject protocol value="icmp"' 2firewall-cmd --reload

最近更新时间:2024-12-24