1.9. 根据源使用区管理传入流量
您可以使用区管理传入的流量,根据其源管理传入的流量。此上下文中的传入流量是任何前往系统的数据,或者传递运行 firewalld
的主机传递。源通常指的是流量来自的 IP 地址或网络范围。因此,您可以对传入的流量进行排序,并将其分配给不同的区域,以允许或禁止该流量可到达的服务。
按源地址匹配优先于按接口名称匹配。当您向区域添加源时,防火墙将对传入的流量优先选择基于源的规则,而不是基于接口的规则。这意味着,如果传入的流量匹配为特定区域指定的源地址,则与该源地址关联的区域将决定如何处理流量,无论它通过哪个接口到达。另一方面,基于接口的规则通常是与特定的基于源的规则不匹配的流量的回退。这些规则应用到源没有明确地与区域关联的流量。这允许您为没有特定的源定义区域的流量定义一个默认行为。
1.9.1. 添加源
要将传入的流量路由到特定区,请将源添加到那个区。源可以是一个使用 CIDR 格式的 IP 地址或 IP 掩码。
如果您添加多个带有重叠网络范围的区域,则根据区名称排序,且只考虑第一个区。
在当前区中设置源:
# firewall-cmd --add-source=<source>
要为特定区设置源 IP 地址:
# firewall-cmd --zone=zone-name --add-source=<source>
以下流程允许来自 受信任
区中 192.168.2.15 的所有传入的流量:
流程
列出所有可用区:
# firewall-cmd --get-zones
将源 IP 添加到持久性模式的信任区中:
# firewall-cmd --zone=trusted --add-source=192.168.2.15
使新设置具有持久性:
# firewall-cmd --runtime-to-permanent
1.9.2. 删除源
当您从区域中删除一个源时,起源于源的流量不再被通过为该源指定的规则来定向。相反,流量会退回到与其起源的接口关联的区域的规则和设置,或进入默认区域。
流程
列出所需区的允许源:
# firewall-cmd --zone=zone-name --list-sources
从区永久删除源:
# firewall-cmd --zone=zone-name --remove-source=<source>
使新设置具有持久性:
# firewall-cmd --runtime-to-permanent
1.9.3. 删除源端口
通过删除源端口,您可以根据原始端口禁用对流量排序。
流程
要删除源端口:
# firewall-cmd --zone=zone-name --remove-source-port=<port-name>/<tcp|udp|sctp|dccp>
1.9.4. 使用区和源来允许一个服务只适用于一个特定的域
要允许特定网络的流量在机器上使用服务,请使用区和源。以下流程只允许来自 192.0.2.0/24
网络的 HTTP 流量,而阻止其他任何流量。
当您配置此场景时,请使用具有 default
目标的区。使用目标设为 ACCEPT
的区存在安全风险,因为对于来自 192.0.2.0/24
的流量,所有网络连接都将被接受。
流程
列出所有可用区:
# firewall-cmd --get-zones block dmz drop external home internal public trusted work
将 IP 范围添加到
internal
区,来将来自源的流量通过区:# firewall-cmd --zone=internal --add-source=192.0.2.0/24
在
internal
区中添加http
服务:# firewall-cmd --zone=internal --add-service=http
使新设置具有持久性:
# firewall-cmd --runtime-to-permanent
验证
检查
internal
区是否活跃,以及该区中服务是否被允许:# firewall-cmd --zone=internal --list-all internal (active) target: default icmp-block-inversion: no interfaces: sources: 192.0.2.0/24 services: cockpit dhcpv6-client mdns samba-client ssh http ...
其他资源
-
firewalld.zones(5)
手册页