正确配置防火墙

正确配置防火墙

自从我使用 Centos 以来,我一直使用 iptables 和自定义防火墙脚本来解析规则。但是由于 Centos 7,firewalld 是新的默认设置。这对我来说没问题,是时候继续前进了。

无论如何,我认为firewalld 的文档写得很差,并且只包含几个示例。

所以我的问题很简单,但我会说明我想要实现的目标。

我有一台有两个接口的服务器。一个接口连接到互联网,另一个接口连接到内部网络。内部接口上的所有流量都是允许的,所以我将它添加到了受信任区域。到目前为止一切顺利。

我默认的想法是,除了用于服务目的(我的情况是 http、https)之外,所有流量都被阻止。为了维护和备份,应该为一些 ip 地址打开 ssh。

我原本想使用自定义服务来为 ssh 创建规则,但这种方法行不通,因为服务不接受源标签。那么我该怎么做呢?我想创建一个文件,在其中定义我的例外(一个 IP 的 ssh、所有 IP 的 http 等),这样我就可以将它们复制到其他服务器。

提前致谢!

答案1

我最近也遇到了这个问题,但我能够添加对 http 和 https 服务的访问。但我遇到了 ssh 服务限制到源地址的问题。这是我的解决方法。

首先将接口添加到公共区域,然后

sudo firewall-cmd --permanent --zone=public --add-service=http 
sudo firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --add-rich-rule='rule family="ipv4" source address="x.x.x.x" service name="ssh" log prefix="ssh" level="info" accept'
sudo firewall-cmd --reload

源地址可以是范围,只需指定子网即可

由于公共区域未添加 ssh,因此默认情况下它将被阻止。 rich 规则将仅为该源 ip/范围启用它。

有任何更好的解决方案请添加。

我在

在 CentOS 7 中使用 Firewall-cmd 创建特定地址限制

答案2

我不知道这是否是“最佳”方法,但我通过添加新区域做到了这一点。您可以将源地址放入区域中。因此,创建一个管理区域并添加所需的源地址、服务和端口。由于我需要经常这样做,所以我只需保留区域 xml 文件并将其放入我启动的每个新服务器中。

例如。在 /etc/firewalld/zones 目录中创建一个名为 mgt.xml 的文件,或者您可以随意命名您的区域。然后执行以下操作:

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Management</short>
  <description>The services to manage the server and the ip addressees to manage it from.</description>
  <source address="2001:0DB8::/64"/>
  <source address="192.168.0.5"/>
  <service name="ssh"/>
  <port protocol="tcp" port="10000"/>
</zone>

然后您将需要重新启动firewalld。

我实际上也使用同样的方法来修改其他区域。如果您将 public.xml 或 drop.xml 放入同一文件夹中,您将覆盖这些区域的默认设置。我有 4 个 xml 文件,作为任何新服务器设置过程的一部分放入到防火墙中,以便为防火墙提供安全的起点。

仅供参考,您可以使用防火墙cmd 完成所有这些操作,但我发现在构建新服务器时删除 xml 文件的速度更快。

相关内容