1.7. 使用 firewalld 区
zones 代表一种更透明管理传入流量的概念。这些区域连接到联网接口或者分配一系列源地址。您可以独立为每个区管理防火墙规则,这样就可以定义复杂的防火墙设置并将其应用到流量。
1.7.1. 为特定区域自定义防火墙设置,以增强安全性
您可以通过修改防火墙设置,关联特定的网络接口或与特定防火墙区域的连接来增强网络安全性。通过为区域定义粒度规则和限制,您可以根据您想要的安全级别控制入站和出站流量。
例如,您可以取得以下好处:
- 敏感数据的保护
- 防止未授权访问
- 潜在网络威胁的缓解
先决条件
-
firewalld
服务在运行。
流程
列出可用的防火墙区域:
# firewall-cmd --get-zones
firewall-cmd --get-zones
命令显示系统上所有可用的区,但不显示特定区的详情。要查看所有区域的详情,请使用firewall-cmd --list-all-zones
命令。- 选择您要用于此配置的区域。
修改所选区域的防火墙设置。例如,要允许
SSH
服务并删除ftp
服务:# firewall-cmd --add-service=ssh --zone=<your_chosen_zone> # firewall-cmd --remove-service=ftp --zone=<same_chosen_zone>
为防火墙区分配网络接口:
列出可用的网络接口:
# firewall-cmd --get-active-zones
区域的活动是由网络接口的存在或与其配置匹配的源地址范围确定的。默认区域对于未分类的流量处于活动状态,但如果没有流量匹配其规则,则并不是总是处于活动状态。
为所选区域分配一个网络接口:
# firewall-cmd --zone=<your_chosen_zone> --change-interface=<interface_name> --permanent
为区域分配一个网络接口更适合将一致的防火墙设置应用到特定接口(物理或虚拟)上的所有流量。
firewall-cmd
命令与--permanent
选项一起使用时,通常涉及更新 NetworkManager 连接配置文件,以永久更改防火墙配置。firewalld
和 NetworkManager 之间的这种集成确保一致的网络和防火墙设置。
验证
显示您选择的区域的更新设置:
# firewall-cmd --zone=<your_chosen_zone> --list-all
命令输出显示所有区设置,包括分配的服务、网络接口和网络连接(源)。
1.7.2. 更改默认区
系统管理员在其配置文件中为网络接口分配区域。如果接口没有被分配给指定区,它将被分配给默认区。每次重启 firewalld
服务后,firewalld
会加载默认区的设置,并使其处于活动状态。请注意,所有其他区域的设置都被保留并准备好使用。
通常,根据 NetworkManager 连接配置文件中的 connection.zone
设置,区域被分配给接口。另外,重启后,NetworkManager 管理“激活”这些区域的分配。
先决条件
-
firewalld
服务在运行。
流程
设置默认区:
显示当前的默认区:
# firewall-cmd --get-default-zone
设置新的默认区:
# firewall-cmd --set-default-zone <zone_name>
注意按照此流程,设置是一个永久设置,即使没有
--permanent
选项。
1.7.3. 将网络接口分配给区
可以为不同区定义不同的规则集,然后通过更改所使用的接口的区来快速改变设置。使用多个接口,可以为每个具体区设置一个区来区分通过它们的网络流量。
流程
要将区分配给特定的接口:
列出活跃区以及分配给它们的接口:
# firewall-cmd --get-active-zones
为不同的区分配接口:
# firewall-cmd --zone=zone_name --change-interface=interface_name --permanent
1.7.4. 使用 nmcli 为连接分配区域
您可以使用 nmcli
工具将 firewalld
区域添加到 NetworkManager
连接。
流程
将区分配给
NetworkManager
连接配置文件:# nmcli connection modify profile connection.zone zone_name
激活连接:
# nmcli connection up profile
1.7.5. 在连接配置文件文件中,手动将区域分配给网络连接
如果您无法使用 nmcli
工具修改连接配置文件,您可以手动编辑配置文件的对应文件来分配一个 firewalld
区域。
使用 nmcli
工具修改连接配置文件来分配 firewalld
区域效率更高。详情请参阅 将网络接口分配给区域。
流程
确定连接配置文件的路径及其格式:
# nmcli -f NAME,FILENAME connection NAME FILENAME enp1s0 /etc/NetworkManager/system-connections/enp1s0.nmconnection enp7s0 /etc/sysconfig/network-scripts/ifcfg-enp7s0
NetworkManager 对不同的连接配置文件格式使用单独的目录和文件名称:
-
/etc/NetworkManager/system-connections/<connection_name>.nmconnection
文件中的配置文件使用 keyfile 格式。 -
/etc/sysconfig/network-scripts/ifcfg-<interface_name>
文件中的配置文件使用 ifcfg 格式。
-
根据格式,更新对应的文件:
如果文件使用 keyfile 格式,请将
zone= <name>
附加到/etc/NetworkManager/system-connections/<connection_name>.nmconnection
文件的[connection]
部分:[connection] ... zone=internal
如果文件使用 ifcfg 格式,请将
ZONE= <name>
附加到/etc/sysconfig/network-scripts/ifcfg- <interface_name>
文件中:ZONE=internal
重新加载连接配置文件:
# nmcli connection reload
重新激活连接配置文件
# nmcli connection up <profile_name>
验证
显示接口的区域,例如:
# firewall-cmd --get-zone-of-interface enp1s0 internal
1.7.6. 创建一个新区
要使用自定义区,创建一个新的区并使用它像预定义区一样。新区需要 --permanent
选项,否则命令无法工作。
先决条件
-
firewalld
服务在运行。
流程
创建一个新区:
# firewall-cmd --permanent --new-zone=zone-name
使新区域可用:
# firewall-cmd --reload
命令将最新的更改应用到防火墙配置,而不中断已运行的网络服务。
验证
检查是否在您的永久设置中添加了新的区:
# firewall-cmd --get-zones --permanent
1.7.7. 使用 Web 控制台启用区域
您可以通过 RHEL web 控制台对特定接口或 IP 地址范围应用预定义和现有的防火墙区域。
先决条件
您已安装了 RHEL 9 web 控制台。
具体步骤请参阅安装并启用 Web 控制台。
流程
登录到 RHEL 9 web 控制台。
详情请参阅 登录到 web 控制台。
- 点 Networking。
点
按钮。如果没有看到
按钮,使用管理员权限登录到 web 控制台。- 在 Firewall 部分,点 Add new zone。
在 Add zone 对话框中,从信任级别选项选择一个区。
Web 控制台显示
firewalld
服务中预定义的所有区域。- 在接口部分,选择一个应用所选区的接口或接口。
在 Allowed Addresses 部分中,您可以选择是否应用该区:
- 整个子网
或者以以下格式表示的 IP 地址范围:
- 192.168.1.0
- 192.168.1.0/24
- 192.168.1.0/24, 192.168.1.0
点
按钮。
验证
检查 Firewall 部分中的配置:
1.7.8. 使用 Web 控制台禁用区域
您可以使用 Web 控制台在防火墙配置中禁用防火墙区域。
先决条件
您已安装了 RHEL 9 web 控制台。
具体步骤请参阅安装并启用 Web 控制台。
流程
登录到 RHEL 9 web 控制台。
详情请参阅 登录到 web 控制台。
- 点 Networking。
点
按钮。如果没有看到
按钮,使用管理员权限登录到 web 控制台。点您要删除的区的 Options 图标。
- 单击 Delete。
区域现在被禁用,接口不包括在区域中配置的打开的服务和端口。
1.7.9. 使用区目标设定传入流量的默认行为
对于每个区,您可以设置一种处理尚未进一步指定的传入流量的默认行为。此行为是通过设置区的目标来定义的。有四个选项:
-
ACCEPT
:接受除特定规则不允许的所有传入的数据包。 -
REJECT
:拒绝所有传入的数据包,但特定规则允许的数据包除外。当firewalld
拒绝数据包时,源机器会发出有关拒绝的信息。 -
DROP
:除非由特定规则允许,丢弃所有传入数据包。当firewalld
丢弃数据包时,源机器不知道数据包丢弃的信息。 -
default
:与REJECT
的行为类似,但在某些情况下有特殊含义。
先决条件
-
firewalld
服务在运行。
流程
为区设置目标:
列出特定区的信息以查看默认目标:
# firewall-cmd --zone=zone-name --list-all
在区中设置一个新目标:
# firewall-cmd --permanent --zone=zone-name --set-target=<default|ACCEPT|REJECT|DROP>
其他资源
-
您系统上的
firewall-cmd (1)
手册页