7.9. 根据源使用区管理传入流量
您可以使用区管理传入的流量,根据其源管理传入的流量。此上下文中的传入流量是适用于您的系统的任何数据,或者传递运行 firewalld
的主机。源通常指的是流量源自的 IP 地址或网络范围。因此,您可以对传入的流量进行排序,并将其分配给不同的区,以允许或禁止该流量可访问的服务。
通过源地址匹配优先于接口名称的匹配。当您向区添加源时,防火墙会根据基于接口的规则为传入的流量优先选择基于源的规则。这意味着,如果传入的流量与特定区指定的源地址匹配,与该源地址关联的区域将决定如何处理流量,而不考虑它到达的接口。另一方面,基于接口的规则通常是对与特定基于源的规则不匹配的流量的回退。这些规则应用到流量,其中源没有明确地与区关联。这可让您为没有特定源定义区的流量定义默认行为。
7.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
7.9.2. 删除源
当您从区中删除源时,源自源的流量不再被定向到该源指定的规则。相反,流量会返回与它源自的接口关联的区域的规则和设置,或转至默认区域。
流程
列出所需区的允许源:
# firewall-cmd --zone=zone-name --list-sources
从区永久删除源:
# firewall-cmd --zone=zone-name --remove-source=<source>
使新设置具有持久性:
# firewall-cmd --runtime-to-permanent
7.9.3. 删除源端口
通过删除源端口,您可以根据原始端口禁用对流量排序。
流程
要删除源端口:
# firewall-cmd --zone=zone-name --remove-source-port=<port-name>/<tcp|udp|sctp|dccp>
7.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)
手册页