如何通过 iptables 和 firewalld 允许或阻止 Ping 请求

Ping 是网络管理员和用户经常使用的一个工具,用于测试从一个网络节点到另一个网络节点的可达性。尽管它是一个非常有用的工具,但在某些情况下,你可能希望阻止ping请求以提高系统的安全性,或者允许特定的ping请求以进行网络诊断。在本文中,我们将深入探讨如何使用 Linux 中最流行的两款防火墙工具——iptables 和 firewalld——来管理 ping 请求。

通过 iptables 管理 Ping 请求

阻止所有的 Ping 请求

如果你想要阻止所有进入你的系统的 ping 请求,你可以通过添加以下规则到 iptables 来实现:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

这条规则的意思是,它会匹配所有 ICMP 协议类型为 echo-request 的数据包(即 ping 请求),并将它们丢弃。

允许所有的 Ping 请求

与此相反,如果你决定允许所有的 ping 请求,你可以使用下面的规则:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

这将接受所有 ICMP 协议类型为 echo-request 的数据包。

通过 firewalld 管理 Ping 请求

firewalld 使用的是“区域”(zones)和“服务”(services)的概念来进行更加直观的防火墙管理。它为常见的网络活动提供了预定义的服务选项,包括对 ping 的管理。

阻止所有的 Ping 请求

要在 firewalld 中禁止 ping 请求,首先你需要创造或者指定一个现有的区域对规则进行应用。下面的命令假定我们在 public 区域操作:

sudo firewall-cmd --zone=public --add-icmp-block=echo-request --permanent
sudo firewall-cmd --reload

这样设置后,public 区域中所有的 ping 请求都会被阻止。

允许所有的 Ping 请求

相对地,要允许 ping 请求,你可以使用下面的命令:

sudo firewall-cmd --zone=public --remove-icmp-block=echo-request --permanent
sudo firewall-cmd --reload

这将保证在 public 区域中所有的 ping 请求都被允许。

结语

管理你的系统对于 ping 请求的响应是网络安全管理的重要一环。无论你是倾向于通过 iptables 还是 firewalld 来管理你的 Linux 防火墙,都有相应的命令可以让你精确控制对 ping 请求的允许或阻止。根据你的安全策略需求选择最适合你的方法。

请记得在执行任何操作之前,总是先备份当前的防火墙规则。这样做可以在不小心阻碍了关键服务或是网络连接时快速恢复到之前的状态。