如何在 CentOS / RHEL 中安装和使用 Firewalld

Firewalld 是一个防火墙管理工具,用于允许或拒绝与 Linux 系统的连接。 它提供了一组规则来控制入站流量。 Firewalld 充当 Linux 内核 Netfilter 的前端。

永久配置从 `/usr/lib/firewalld` 或 `/etc/firewalld` 中的 XML 文件加载

在本文中,我们将安装和使用 firewalld。 另外,我将向您展示如何使用丰富的规则。

在 CentOS / RHEL 中安装 firewalld

Firewalld 附带 Redhat 或 Centos 的基本安装。 如果没有,可以通过以下方式安装。

在 RHEL 7.X 或 centos 7.X 上安装,

$ sudo yum install firewalld -y

在 RHEL 7.X 或 centos 8.X 上安装,

$ sudo dnf install firewalld -y

要启动服务,

$ sudo systemctl start firewalld

要启用 firewalld 服务,

$ sudo systemctl enable firewalld

检查firewalld的状态,

$ systemctl status firewalld

Firewalld 带有不同的预定义区域,也称为信任级别。 区域基本上是具有一组规则的托管组。 但是,这些规则不是预定义的。 为了 example,您可以设置一个包含公共主机端口的“公共”区域,而“家庭”区域允许 ssh 连接。 要列出 firewalld 中的区域,请使用以下命令,

$ sudo firewall-cmd --get-zones

要查看使用的区域中的活动区域,

$ sudo firewall-cmd --get-active-zone

现在,让我们添加一些端口以允许流量进入我们的系统。 要添加 tcp 端口,您必须键入以下内容。 记得添加 –permanent 选项,否则,您的规则将不会在重新加载/重新启动 firewalld 时保持不变。

$ sudo firewall-cmd --add-port=443/tcp --permanent

同样,你也可以允许UDP端口,

$ sudo firewall-cmd --add-port=161/udp --permanent

您还可以允许 DNS、HTTP 等服务。 它将允许服务的默认端口。 为了 example,

$ sudo firewall-cmd --add-service=http --permanent

添加端口/重新加载防火墙服务后生效

$ sudo firewall-cmd --reload

验证使用,

$ sudo firewall-cmd --list-all

请记住:当您不添加任何区域时,该规则将默认添加到“公共”区域。

要从 firewalld 中删除端口,您可以使用,

$ sudo firewall-cmd --remove-port=443/tcp --permanent

要从 firewalld 中删除服务,您可以使用,

$ sudo firewall-cmd --remove-service=http --permanent

添加或删除端口/服务后,请记住重新加载防火墙。

丰富的规则

丰富的规则为防火墙规则提供了更精细的选项。 它们用于配置端口转发、速率限制、日志记录等。

为了 example, 要接受来自单个 IP 的 ssh 连接,比如 192.168.10.25,您应该通过指定 IP 版本、源地址、端口、协议来添加丰富的规则。

$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.25/32" port protocol="tcp" port="22" accept"

类似的,你可以把整个网络的所有ip源都去掉,不允许22端口,如下所示,

$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.15.0/24" port protocol="tcp" port="22" drop"

要允许来自地址 192.168.0.0/24 的新 IPv4 连接用于服务 tftp 并使用 syslog 每分钟记录 1 个,您可以这样做,

sudo firewall-cmd --permanent --zone=public --add-rich-rule=’rule family="ipv4" source address="192.168.0.0/24" service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept’

卸载防火墙

如果您想从 CentOS / RHEL 中删除防火墙恶魔,然后停止正在运行的服务,

$ sudo systemctl stop firewalld

在 RHEL 7.X 或 Centos 7.X 上

$ sudo yum remove firewalld -y

在 RHEL 8.X 或 Centos 8.X 上

$ sudo dnf remove firewalld -y

结论

我们希望本文能帮助您提高 Linux 系统的安全性。 请注意,PCI DSS 等合规性建议使用基于主机的防火墙(如 firewalld)。

感谢您的阅读。