让防火墙允许 ping 请求

让防火墙允许 ping 请求

在 CentOS 7 上,我已安装并设置了防火墙,如下所示:

  1. 将 ssh 服务添加到永久删除区域(sudo firewall-cmd --zone=drop --permanent --add-service=ssh
  2. 将 drop zone 设为默认区域,以便丢弃所有非 ssh 请求(sudo firewall-cmd --set-default-zone=drop

我采用了上述方法,因为我想删除除我已配置的请求(ssh、http 等)之外的所有传入请求。但是,我发现我无法再 ping CentOS 服务器,我相信这是因为默认区域被删除了。

我的问题很简单。有人能告诉我如何编辑放置区域的配置,以便让我从外部 ping 服务器吗?

非常感谢。我是防火墙、网络等方面的新手,但我希望这个问题很容易回答 :)

答案1

我意识到这个问题已经存在一段时间了,但我找到了它,其他人可能也找到了,所以我要补充一个我认为更清晰的答案。Red Hat 有一篇关于此问题的好文章:管理 icmp 请求

我将在这里点击将目标切换到 DROP 后要使用的基本命令:

firewall-cmd --permanent --add-icmp-block-inversion
firewall-cmd --permanent --add-icmp-block=echo-reply
firewall-cmd --permanent --add-icmp-block=echo-request
firewall-cmd --reload

第一个命令将 icmp-block 的含义更改为 icmp-allow。之后,您只需列出要允许的 icmp 类型。您可以使用以下命令获取所有类型的列表:

firewall-cmd --get-icmptypes

您可能还希望允许其他一些事项(尤其是对于 IPv6)。

对于跟踪路由:

firewall-cmd --permanent --add-icmp-block=time-exceeded
firewall-cmd --permanent --add-icmp-block=port-unreachable

对于 mtu 发现:

firewall-cmd --permanent --add-icmp-block=fragmentation-needed
firewall-cmd --permanent --add-icmp-block=packet-too-big

对于动态 IPv6 环境:

firewall-cmd --permanent --add-icmp-block=neighbour-solicitation
firewall-cmd --permanent --add-icmp-block=neighbour-advertisement
firewall-cmd --permanent --add-icmp-block=router-advertisement
firewall-cmd --permanent --add-icmp-block=router-solicitation

答案2

将以下“iptables”规则添加到firewalld

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p icmp -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
sudo systemctl restart firewalld.service

答案3

我主要使用 iptables,但为我的客户安装和配置 CSF。

如果你必须使用控制台,那么为什么不使用 iptables 作为标准防火墙工具呢?如果你觉得不够舒服,那么就使用 CSF。它很好!

iptables -I INPUT 1 -p icmp -j ACCEPT

非常简单!看看吧这里有关 iptables 的几个示例也可能会有所帮助。

相关内容