7.7. 使用 firewalld 区
zones 代表一种更透明管理传入流量的概念。这些区域连接到联网接口或者分配一系列源地址。您可以独立为每个区管理防火墙规则,这样就可以定义复杂的防火墙设置并将其应用到流量。
7.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
命令输出显示所有区设置,包括分配的服务、网络接口和网络连接(源)。
7.7.2. 更改默认区
系统管理员在其配置文件中为网络接口分配区域。如果接口没有被分配给指定区,它将被分配给默认区。每次重启 firewalld
服务后,firewalld
会加载默认区的设置,并使其处于活动状态。请注意,所有其他区域的设置都会被保留并可使用。
通常,区会根据 NetworkManager 连接配置文件中的 connection.zone
设置分配给接口。另外,重启 NetworkManager 后,管理这些区域的分配。
前提条件
-
firewalld
服务正在运行。
流程
设置默认区:
显示当前的默认区:
# firewall-cmd --get-default-zone
设置新的默认区:
# firewall-cmd --set-default-zone <zone_name>
注意按照此流程,设置是一个永久设置,即使没有
--permanent
选项。
7.7.3. 将网络接口分配给区
可以为不同区定义不同的规则集,然后通过更改所使用的接口的区来快速改变设置。使用多个接口,可以为每个具体区设置一个区来区分通过它们的网络流量。
流程
要将区分配给特定的接口:
列出活跃区以及分配给它们的接口:
# firewall-cmd --get-active-zones
为不同的区分配接口:
# firewall-cmd --zone=zone_name --change-interface=interface_name --permanent
7.7.4. 使用 nmcli 为连接分配区域
您可以使用 nmcli
实用程序在 NetworkManager
连接中添加 firewalld
区域。
流程
将区分配给
NetworkManager
连接配置文件:# nmcli connection modify profile connection.zone zone_name
激活连接:
# nmcli connection up profile
7.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
7.7.6. 在 ifcfg 文件中手动将区分配给网络连接
当连接由 NetworkManager 管理时,必须了解它使用的区。对于每个网络连接配置文件,可以指定区,根据计算机使用可移植设备的位置提供各种防火墙设置的灵活性。因此,可以为不同的位置(如公司或家)指定区域和设置。
流程
要为连接设置一个区,请编辑
/etc/sysconfig/network-scripts/ifcfg-connection_name
文件,并添加将区分配给这个连接的行:ZONE=zone_name
7.7.7. 创建一个新区
要使用自定义区,创建一个新的区并使用它像预定义区一样。新区需要 --permanent
选项,否则命令无法工作。
前提条件
-
firewalld
服务正在运行。
流程
创建一个新区:
# firewall-cmd --permanent --new-zone=zone-name
使新区可用:
# firewall-cmd --reload
该命令会在不中断已在运行的网络服务的情况下对防火墙配置应用最新的更改。
验证
检查是否在您的永久设置中添加了新的区:
# firewall-cmd --get-zones --permanent
7.7.8. 使用 Web 控制台启用区
您可以通过 RHEL web 控制台对特定接口或 IP 地址范围应用预定义和现有的防火墙区域。
前提条件
已安装 RHEL 8 web 控制台。
具体步骤请参阅安装并启用 Web 控制台。
流程
登录到 RHEL 8 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 部分中的配置:
7.7.9. 使用 Web 控制台禁用区
您可以使用 Web 控制台在防火墙配置中禁用防火墙区。
前提条件
已安装 RHEL 8 web 控制台。
具体步骤请参阅安装并启用 Web 控制台。
流程
登录到 RHEL 8 web 控制台。
详情请参阅 登录到 web 控制台。
- 点 Networking。
点
按钮。如果没有看到
按钮,使用管理员权限登录到 web 控制台。点您要删除的区的 Options 图标。
- 点击 Delete。
区域现在被禁用,接口不包括在区域中配置的打开的服务和端口。
7.7.10. 使用区目标设定传入流量的默认行为
对于每个区,您可以设置一种处理尚未进一步指定的传入流量的默认行为。此行为是通过设置区的目标来定义的。有四个选项:
-
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)
手册页