7.7. 使用 firewalld 区域
zones 代表一种更透明管理传入流量的概念。这些区域连接到联网接口或者分配一系列源地址。您可以独立为每个区管理防火墙规则,这样就可以定义复杂的防火墙设置并将其应用到流量。
7.7.1. 为特定区域自定义防火墙设置来增强安全性 复制链接链接已复制到粘贴板!
您可以通过修改防火墙设置,并将特定的网络接口或连接与特定的防火墙区域关联来加强网络安全性。通过为一个区域定义细粒度规则和限制,您可以根据预期的安全级别控制入站和出站流量。
例如,您可以取得以下好处:
- 保护敏感数据
- 防止未授权访问
- 缓解潜在的网络威胁
先决条件
-
firewalld
服务在运行。
流程
列出可用的防火墙区域:
firewall-cmd --get-zones
# firewall-cmd --get-zones
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 --add-service=ssh --zone=<your_chosen_zone> # firewall-cmd --remove-service=ftp --zone=<same_chosen_zone>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 向防火墙区域分配一个网络接口:
列出可用的网络接口:
firewall-cmd --get-active-zones
# firewall-cmd --get-active-zones
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 区域的活动是由网络接口或匹配其配置的源地址范围的存在来确定的。默认区域对于未分类的流量是处于活跃状态的,但如果没有流量匹配其规则,则不总是处于活跃状态。
向所选区分配一个网络接口:
firewall-cmd --zone=<your_chosen_zone> --change-interface=<interface_name> --permanent
# firewall-cmd --zone=<your_chosen_zone> --change-interface=<interface_name> --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 向区域分配一个网络接口更适合于将一致的防火墙设置应用到特定接口(物理的或虚拟的)上的所有流量。
当与
--permanent
选项一起使用时,firewall-cmd
命令通常涉及更新 NetworkManager 连接配置文件,以使对防火墙配置的更改永久。firewalld
和 NetworkManager 之间的这种集成确保一致的网络和防火墙设置。
验证
显示您选择的区域的更新设置:
firewall-cmd --zone=<your_chosen_zone> --list-all
# firewall-cmd --zone=<your_chosen_zone> --list-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令输出显示所有区域设置,包括分配的服务、网络接口和网络连接(源)。
7.7.2. 更改默认区 复制链接链接已复制到粘贴板!
系统管理员在其配置文件中为网络接口分配区域。如果接口没有被分配给指定区,它将被分配给默认区。每次重启 firewalld
服务后,firewalld
会加载默认区的设置,并使其处于活动状态。请注意,所有其他区域的设置都被保留,并可使用。
通常,区域会被 NetworkManager 按照 NetworkManager 连接配置文件中的 connection.zone
设置分配给接口。另外,重启后,NetworkManager 会管理“激活”这些区域的分配。
先决条件
-
firewalld
服务在运行。
流程
设置默认区:
显示当前的默认区:
firewall-cmd --get-default-zone
# firewall-cmd --get-default-zone
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置新的默认区:
firewall-cmd --set-default-zone <zone_name>
# firewall-cmd --set-default-zone <zone_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意按照此流程,设置是一个永久设置,即使没有
--permanent
选项。
7.7.3. 将网络接口分配给区 复制链接链接已复制到粘贴板!
可以为不同区定义不同的规则集,然后通过更改所使用的接口的区来快速改变设置。使用多个接口,可以为每个具体区设置一个区来区分通过它们的网络流量。
流程
要将区分配给特定的接口:
列出活跃区以及分配给它们的接口:
firewall-cmd --get-active-zones
# firewall-cmd --get-active-zones
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为不同的区分配接口:
firewall-cmd --zone=zone_name --change-interface=interface_name --permanent
# firewall-cmd --zone=zone_name --change-interface=interface_name --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.4. 添加源 复制链接链接已复制到粘贴板!
要将传入的流量路由到特定区,请将源添加到那个区。源可以是一个使用 CIDR 格式的 IP 地址或 IP 掩码。
如果您添加多个带有重叠网络范围的区域,则根据区名称排序,且只考虑第一个区。
在当前区中设置源:
firewall-cmd --add-source=<source>
# firewall-cmd --add-source=<source>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为特定区设置源 IP 地址:
firewall-cmd --zone=zone-name --add-source=<source>
# firewall-cmd --zone=zone-name --add-source=<source>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下流程允许来自 受信任
区中 192.168.2.15 的所有传入的流量:
流程
列出所有可用区:
firewall-cmd --get-zones
# firewall-cmd --get-zones
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将源 IP 添加到持久性模式的信任区中:
firewall-cmd --zone=trusted --add-source=192.168.2.15
# firewall-cmd --zone=trusted --add-source=192.168.2.15
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使新设置具有持久性:
firewall-cmd --runtime-to-permanent
# firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.5. 删除源 复制链接链接已复制到粘贴板!
当您从一个区域中删除源时,源自该源的流量不再通过为该源指定的规则进行引导。相反,流量会返回到与它源自的接口关联的区域的规则和设置,或转至默认区域。
流程
列出所需区的允许源:
firewall-cmd --zone=zone-name --list-sources
# firewall-cmd --zone=zone-name --list-sources
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从区永久删除源:
firewall-cmd --zone=zone-name --remove-source=<source>
# firewall-cmd --zone=zone-name --remove-source=<source>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使新设置具有持久性:
firewall-cmd --runtime-to-permanent
# firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.6. 使用 nmcli 为连接分配区域 复制链接链接已复制到粘贴板!
您可以使用 nmcli
工具将 firewalld
区域添加到 NetworkManager
连接。
流程
将区分配给
NetworkManager
连接配置文件:nmcli connection modify profile connection.zone zone_name
# nmcli connection modify profile connection.zone zone_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 激活连接:
nmcli connection up profile
# nmcli connection up profile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.7. 在 ifcfg 文件中手动将区分配给网络连接 复制链接链接已复制到粘贴板!
当连接由 NetworkManager 管理时,必须了解它使用的区。对于每个网络连接配置文件,可以指定一个区域,其根据带有可移植设备的计算机的位置提供各种防火墙设置的灵活性。因此,可以为不同的位置(如公司或家)指定区域和设置。
流程
要为连接设置一个区,请编辑
/etc/sysconfig/network-scripts/ifcfg-connection_name
文件,并添加将区分配给这个连接的行:ZONE=zone_name
ZONE=zone_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.8. 创建一个新区 复制链接链接已复制到粘贴板!
要使用自定义区,创建一个新的区并使用它像预定义区一样。新区需要 --permanent
选项,否则命令无法工作。
先决条件
-
firewalld
服务在运行。
流程
创建一个新区:
firewall-cmd --permanent --new-zone=zone-name
# firewall-cmd --permanent --new-zone=zone-name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使新区域可用:
firewall-cmd --reload
# firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令将最新的更改应用到防火墙配置,而不中断已在运行的网络服务。
验证
检查是否在您的永久设置中添加了新的区:
firewall-cmd --get-zones --permanent
# firewall-cmd --get-zones --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.9. 使用 Web 控制台启用区域 复制链接链接已复制到粘贴板!
您可以通过 RHEL web 控制台对特定接口或 IP 地址范围应用预定义和现有的防火墙区域。
先决条件
- 您已安装了 RHEL 8 web 控制台。
- 您已启用了 cockpit 服务。
您的用户帐户被允许登录到 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.10. 使用 Web 控制台禁用区域 复制链接链接已复制到粘贴板!
您可以使用 Web 控制台在防火墙配置中禁用一个防火墙区域。
先决条件
- 您已安装了 RHEL 8 web 控制台。
- 您已启用了 cockpit 服务。
您的用户帐户被允许登录到 web 控制台。
具体步骤请参阅安装并启用 Web 控制台。
流程
登录到 RHEL 8 web 控制台。
详情请参阅 登录到 web 控制台。
- 点 Networking。
点
按钮。如果没有看到
按钮,使用管理员权限登录到 web 控制台。点您要删除的区的 Options 图标。
- 点击 Delete。
区域现在被禁用,接口不包括在区域中配置的打开的服务和端口。
7.7.11. 使用区目标设定传入流量的默认行为 复制链接链接已复制到粘贴板!
对于每个区,您可以设置一种处理尚未进一步指定的传入流量的默认行为。此行为是通过设置区的目标来定义的。有四个选项:
-
ACCEPT
:接受所有传入的数据包,除了特定规则禁止的。 -
REJECT
:拒绝所有传入的数据包,除了特定规则允许的。当firewalld
拒绝数据包时,会告知源机器有关拒绝的信息。 -
DROP
:丢弃所有传入的数据包,除了特定规则允许的。当firewalld
丢弃数据包时,不会告知源机器有关丢弃数据包的信息。 -
default
:与REJECT
的行为类似,但在某些情况下具有特殊含义。
先决条件
-
firewalld
服务在运行。
流程
为区设置目标:
列出特定区的信息以查看默认目标:
firewall-cmd --zone=zone-name --list-all
# firewall-cmd --zone=zone-name --list-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在区中设置一个新目标:
firewall-cmd --permanent --zone=zone-name --set-target=<default|ACCEPT|REJECT|DROP>
# firewall-cmd --permanent --zone=zone-name --set-target=<default|ACCEPT|REJECT|DROP>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.12. 使用 IP 集为允许列表配置动态更新 复制链接链接已复制到粘贴板!
您可以进行接近实时的更新,来灵活地允许 IP 集中特定的 IP 地址或范围,即使在无法预计的情况下也是如此。这些更新可以被各种事件触发,如检测安全威胁或更改网络行为。通常,此类解决方案利用自动化来减少手工工作,并通过快速响应情况来提高安全性。
先决条件
-
firewalld
服务在运行。
流程
创建一个有有意义名称的 IP 集:
firewall-cmd --permanent --new-ipset=allowlist --type=hash:ip
# firewall-cmd --permanent --new-ipset=allowlist --type=hash:ip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 名为
allowlist
的新 IP 集包含您希望防火墙允许的 IP 地址。向 IP 集添加动态更新:
firewall-cmd --permanent --ipset=allowlist --add-entry=198.51.100.10
# firewall-cmd --permanent --ipset=allowlist --add-entry=198.51.100.10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此配置使用新添加的 IP 地址更新防火墙允许传输网络流量的
allowlist
IP 集。创建一个引用之前创建的 IP 集的防火墙规则:
firewall-cmd --permanent --zone=public --add-source=ipset:allowlist
# firewall-cmd --permanent --zone=public --add-source=ipset:allowlist
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 没有此规则,IP 集不会对网络流量有任何影响。默认防火墙策略将占先。
重新载入防火墙配置以应用更改:
firewall-cmd --reload
# firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出所有 IP 集:
firewall-cmd --get-ipsets
# firewall-cmd --get-ipsets allowlist
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出活跃的规则:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令行输出的
sources
部分提供了对哪些流量源(主机名、接口、IP 集、子网等)被允许或拒绝访问特定防火墙区域的见解。在这种情况下,包含在allowlist
IP 集中的 IP 地址被允许通过防火墙,为public
区域传输流量。探索 IP 集的内容:
cat /etc/firewalld/ipsets/allowlist.xml <?xml version="1.0" encoding="utf-8"?> <ipset type="hash:ip"> <entry>198.51.100.10</entry> </ipset>
# cat /etc/firewalld/ipsets/allowlist.xml <?xml version="1.0" encoding="utf-8"?> <ipset type="hash:ip"> <entry>198.51.100.10</entry> </ipset>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
-
使用脚本或安全工具获取您的威胁情报源,并以一种自动化的方式更新
allowlist
。