在 CentOS 7 上,我已安装并设置了防火墙,如下所示:
- 将 ssh 服务添加到永久删除区域(
sudo firewall-cmd --zone=drop --permanent --add-service=ssh
) - 将 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 的几个示例也可能会有所帮助。