CentOS7 防火墙没有区域

CentOS7 防火墙没有区域

我已经在 VPS 上的全新 CentOS 7 最小安装中安装了 firewalld(奇怪的是,从我搜索的内容来看,firewalld 应该已经与系统一起安装了)。

我尝试打开一些端口,但是当运行如下命令时

firewall-cmd --zone=public --add-port=80/tcp --permanent

我收到以下错误消息:Error: INVALID_ZONE: public

当我查看可用区域时,firewall-cmd --get-zones什么也没得到。

应该如何配置呢?

答案1

这听起来像是一个非常奇怪的 VPS 设置和问题,但如果您不介意编写一些 XML,您可以轻松地构建自己的区域。

我的公共区域是:

<?xml version="1.0" encoding="utf-8"?>
<zone target="DROP">
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <port protocol="tcp" port="443"/>

</zone>

它是默认 public.xml 的轻微修改版本,它丢弃而不是拒绝数据包,并允许 HTTPS 和 SSH。

您可以将其放入(我认为)/etc/firewalld/zones/public.xml。

答案2

VPS 会做各种愚蠢的事情。有些 VPS 会在内核级别破坏 SELinux,因此您甚至无法启用它。首先,您需要使用 检查内核uname -r。它应该显示el7,例如

3.10.0-693.2.2.el7.x86_64

如果是 el7,那就没问题了。如果不是,您需要检查您的 VPS 是否可以使用原版 EL 内核,或者从您自己的 CentOS ISO 重新安装您的实例(我在 Vultr 上就是这么做的)。可能仍然可以使用自定义内核修复防火墙,但最好使用官方内核。

无论如何,如果firewalld 确实可以运行,只是没有区域,只需创建区域并添加服务。

firewall-cmd --new-zone=public --permanent
firewall-cmd --reload
firewall-cmd --zone=public --add-service=ssh --permanent
firewall-cmd --reload

注意:您必须在同一个会话中执行这些操作,否则您可能会被锁定在 SSH 之外,并且需要依靠控制台访问来修复您的防火墙。

相关内容