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)。
感谢您的阅读。