Red Hat Training

A Red Hat training course is available for RHEL 8

9.9. 根据源使用区管理传入流量

您可以使用区管理传入的流量,根据其源管理传入的流量。此上下文中的传入流量是适用于您的系统的任何数据,或者传递运行 firewalld 的主机。源通常指的是流量源自的 IP 地址或网络范围。因此,您可以对传入的流量进行排序,并将其分配给不同的区,以允许或禁止该流量可访问的服务。

通过源地址匹配优先于接口名称的匹配。当您向区添加源时,防火墙会根据基于接口的规则为传入的流量优先选择基于源的规则。这意味着,如果传入的流量与特定区指定的源地址匹配,与该源地址关联的区域将决定如何处理流量,而不考虑它到达的接口。另一方面,基于接口的规则通常是对与特定基于源的规则不匹配的流量的回退。这些规则应用到流量,其中源没有明确地与区关联。这可让您为没有特定源定义区的流量定义默认行为。

9.9.1. 添加源

要将传入的流量路由到特定区,请将源添加到那个区。源可以是一个使用 CIDR 格式的 IP 地址或 IP 掩码。

注意

如果您添加多个带有重叠网络范围的区域,则根据区名称排序,且只考虑第一个区。

  • 在当前区中设置源:

    # firewall-cmd --add-source=<source>
  • 要为特定区设置源 IP 地址:

    # firewall-cmd --zone=zone-name --add-source=<source>

以下流程允许来自 受信任 区中 192.168.2.15 的所有传入的流量:

流程

  1. 列出所有可用区:

    # firewall-cmd --get-zones
  2. 将源 IP 添加到持久性模式的信任区中:

    # firewall-cmd --zone=trusted --add-source=192.168.2.15
  3. 使新设置具有持久性:

    # firewall-cmd --runtime-to-permanent

9.9.2. 删除源

当您从区中删除源时,源自源的流量不再被定向到该源指定的规则。相反,流量会返回与它源自的接口关联的区域的规则和设置,或转至默认区域。

流程

  1. 列出所需区的允许源:

    # firewall-cmd --zone=zone-name --list-sources
  2. 从区永久删除源:

    # firewall-cmd --zone=zone-name --remove-source=<source>
  3. 使新设置具有持久性:

    # firewall-cmd --runtime-to-permanent

9.9.3. 删除源端口

通过删除源端口,您可以根据原始端口禁用对流量排序。

流程

  • 要删除源端口:

    # firewall-cmd --zone=zone-name --remove-source-port=<port-name>/<tcp|udp|sctp|dccp>

9.9.4. 使用区和源来允许一个服务只适用于一个特定的域

要允许特定网络的流量在机器上使用服务,请使用区和源。以下流程只允许来自 192.0.2.0/24 网络的 HTTP 流量,而阻止其他任何流量。

警告

当您配置此场景时,请使用具有 default 目标的区。使用目标设为 ACCEPT 的区存在安全风险,因为对于来自 192.0.2.0/24 的流量,所有网络连接都将被接受。

流程

  1. 列出所有可用区:

    # firewall-cmd --get-zones
    block dmz drop external home internal public trusted work
  2. 将 IP 范围添加到 internal 区,来将来自源的流量通过区:

    # firewall-cmd --zone=internal --add-source=192.0.2.0/24
  3. internal 区中添加 http 服务:

    # firewall-cmd --zone=internal --add-service=http
  4. 使新设置具有持久性:

    # 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) 手册页