1.8. 使用 firewalld 控制网络流量

firewalld 软件包安装了大量预定义的服务文件,您可以添加更多或自定义它们。然后,您可以使用这些服务定义为服务打开或关闭端口,而无需了解协议及它们使用的端口号。

1.8.1. 使用 CLI 控制预定义服务的流量

控制流量的最简单的方法是在 firewalld 中添加预定义的服务。这会打开所有必需的端口并根据 服务定义文件 修改其他设置。

先决条件

  • firewalld 服务在运行。

流程

  1. 检查 firewalld 中的服务是否没有被允许:

    # firewall-cmd --list-services
    ssh dhcpv6-client

    命令列出默认区域中启用的服务。

  2. 列出 firewalld 中所有预定义的服务:

    # firewall-cmd --get-services
    RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry ...

    命令显示默认区域的可用服务的列表。

  3. 将服务添加到 firewalld 允许的服务的列表中:

    # firewall-cmd --add-service=<service_name>

    命令将指定的服务添加到默认区域中。

  4. 使新设置具有持久性:

    # firewall-cmd --runtime-to-permanent

    命令将这些运行时更改应用到防火墙的永久配置中。默认情况下,它将这些更改应用到默认区域的配置中。

验证

  1. 列出所有永久的防火墙规则:

    # firewall-cmd --list-all --permanent
    public
      target: default
      icmp-block-inversion: no
      interfaces:
      sources:
      services: cockpit dhcpv6-client ssh
      ports:
      protocols:
      forward: no
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:

    命令显示完整的带有默认防火墙区域的永久防火墙规则(公共)配置。

  2. 检查 firewalld 服务的永久配置的有效性。

    # firewall-cmd --check-config
    success

    如果永久配置无效,命令会返回一个错误,并带有进一步详情:

    # firewall-cmd --check-config
    Error: INVALID_PROTOCOL: 'public.xml': 'tcpx' not from {'tcp'|'udp'|'sctp'|'dccp'}

    您还可以手动检查永久配置文件来验证设置。主配置文件为 /etc/firewalld/firewalld.conf。特定于区域的配置文件位于 /etc/firewalld/zones/ 目录中,策略位于 /etc/firewalld/policies/ 目录中。

1.8.2. 使用 GUI ,使用预定义的服务控制流量

您可以使用图形用户界面,使用预定义的服务控制网络流量。防火墙配置应用程序提供命令行工具的可访问和用户友好的替代选择。

先决条件

  • firewall-config 软件包已安装 。
  • firewalld 服务在运行。

流程

  1. 启用或禁用预定义或自定义服务:

    1. 启动 firewall-config 工具,并选择其服务要被配置的网络区域。
    2. 选择 Zones 选项卡,然后选择下面的 Services 选项卡。
    3. 选中您要信任的每种服务类型的复选框,或者清除复选框以阻止所选区域中的服务。
  2. 编辑服务:

    1. 启动 firewall-config 工具。
    2. 从标有 Configuration 的菜单中选择 Permanent。其它图标和菜单按钮会出现在服务窗口底部。
    3. 选择您要配置的服务。

PortsProtocolsSource Port 选项卡支持添加、更改和删除所选服务的端口、协议和源端口。模块选项卡是用于配置 Netfilter 助手模块的。Destination 选项卡允许将流量限制到特定的目标地址和互联网协议(IPv4IPv6)。

注意

Runtime 模式下无法更改服务设置。

验证

  • Super 键进入活动概览。
  • 选择 Firewall Configuration 工具。

    • 您还可以使用命令行,通过输入 firewall-config 命令来启动图形防火墙配置工具。
  • 查看防火墙配置的列表:

    防火墙配置

此时会打开 Firewall Configuration 窗口。请注意,这个命令可以以普通用户身份运行,但偶尔会提示您输入管理员密码。

1.8.3. 配置 firewalld 以允许托管安全 Web 服务器

端口是使操作系统能够接收和区分网络流量并将其转发到系统服务的逻辑服务。系统服务由侦听端口的守护进程表示,并等待任何进入到此端口的流量。

通常,系统服务侦听为它们保留的标准端口。例如,httpd 守护进程监听 80 端口。但是,系统管理员可以直接指定端口号,而不是服务名称。

您可以使用 firewalld 服务配置对托管数据的安全 Web 服务器的访问。

先决条件

  • firewalld 服务在运行。

流程

  1. 检查当前活跃的防火墙区域:

    # firewall-cmd --get-active-zones
  2. 将 HTTPS 服务添加到合适的区域:

    # firewall-cmd --zone=<zone_name> --add-service=https --permanent
  3. 重新载入防火墙配置:

    # firewall-cmd --reload

验证

  1. 检查端口是否在 firewalld 中打开:

    • 如果您通过指定端口号来打开端口,请输入:

      # firewall-cmd --zone=<zone_name> --list-all
    • 如果您通过指定服务定义来打开端口,请输入:

      # firewall-cmd --zone=<zone_name> --list-services

1.8.4. 关闭未使用或不必要的端口,以增强网络安全性

当不再需要开放端口时,您可以使用 firewalld 工具关闭它。

重要

关闭所有不必要的端口,以减少潜在的攻击面,并降低未授权访问或利用漏洞的风险。

流程

  1. 列出所有允许的端口:

    # firewall-cmd --list-ports

    默认情况下,此命令列出默认区域中启用的端口。

    注意

    此命令只为您提供作为端口打开的端口的列表。您将无法看到作为服务打开的任何开放端口。对于这种情况,请考虑使用 --list-all 选项而不是 --list-ports

  2. 从允许的端口列表中删除端口,来为传入流量关闭它:

    # firewall-cmd --remove-port=port-number/port-type

    这个命令从区域中删除一个端口。如果没有指定区域,它将从默认区域中删除端口。

  3. 使新设置具有持久性:

    # firewall-cmd --runtime-to-permanent

    如果没有指定区域,这个命令将运行时更改应用到默认区域的永久配置中。

验证

  1. 列出活跃区域,并选择要检查的区域:

    # firewall-cmd --get-active-zones
  2. 列出所选区域中当前打开的端口,以检查未使用或不必要的端口是否已关闭:

    # firewall-cmd --zone=<zone_to_inspect> --list-ports

1.8.5. 通过 CLI 控制流量

您可以使用 firewall-cmd 命令来:

  • 禁用网络流量
  • 启用网络流量

因此,您可以增强系统防御,确保数据隐私或优化网络资源。

重要

启用 panic 模式可停止所有网络流量。因此,只有当您具有对机器的物理访问权限或使用串行控制台登录时,才应使用它。

流程

  1. 要立即禁用网络流量,请切换 panic 模式:

    # firewall-cmd --panic-on
  2. 关闭 panic 模式会使防火墙恢复到其永久设置。要关闭 panic 模式,请输入:

    # firewall-cmd --panic-off

验证

  • 要查看是否打开或关闭 panic 模式,请使用:

    # firewall-cmd --query-panic

1.8.6. 使用 GUI 控制协议的流量

如果想使用某种协议允许流量通过防火墙,您可以使用 GUI。

先决条件

  • firewall-config 软件包已安装

流程

  1. 启动 firewall-config 工具,并选择要更改其设置的网络区。
  2. 选择 Protocols 选项卡,然后点击右侧的 Add 按钮。此时会打开 协议 窗口。
  3. 从列表中选择协议,或者选择 Other Protocol 复选框,并在字段中输入协议。