一、使用和配置 FIREWALLD
防火墙是保护机器不受来自外部的、不需要的网络数据的一种方式。它允许用户通过定义一组防火墙规则来控制主机上的入站网络流量。这些规则用于对进入的流量进行排序,并可以阻断或允许流量。
firewalld 是一个防火墙服务守护进程,它为使用 D-Bus 接口提供动态可定制主机防火墙的防火墙服务守护进程。如果是动态的,它可在每次修改规则时启用、修改和删除规则,而不需要在每次修改规则时重启防火墙守护进程。
firewalld 使用区(zone)和服务(service)的概念来简化流量管理。zones 是预定义的规则集。网络接口和源可以分配给区。允许的流量取决于您计算机连接到的网络,并分配了这个网络的安全级别。防火墙服务是预定义的规则,覆盖了允许特定服务进入流量的所有必要设置,并在区中应用。
服务使用一个或多个端口或地址进行网络通信。防火墙会根据端口过滤通讯。要允许服务的网络流量,必须打开其端口。 firewalld 阻断未明确设置为打开的端口上的所有流量。一些区(如可信区)默认允许所有流量。
请注意,带有 nftables 后端的 firewalld 不支持使用 --direct 选项将自定义 nftables 规则传递给 firewalld 。
1.1. 开始使用 firewalld
1.1.1. 使用 firewalld、nftables 或者 iptables 时
以下是您应该使用以下工具之一的概述:
firewalld : 在简单防火墙用例中使用 firewalld 工具。该工具非常容易使用,并涵盖这些场景的典型用例。
nftables : 使用 nftables 实用程序设置复杂和性能的关键防火墙,比如为整个网络设置。
iptables :Red Hat Enterprise Linux 8 中的 iptables 工具程序使用 nf_tables 内核 API 而不是 legacy 后端。
nf_tables API 提供向后兼容性,使用 iptables 命令的脚本仍然可用于Red Hat Enterprise Linux 8。
对于新的防火墙脚本,红帽建议使用 nftables 。
1.1.2. Zones
firewalld 可以用来根据用户决定放置在那个网络中的接口和流量级别的信任级别将网络划分为不同的区。一个连接只能是一个区的一部分,但一个区可以被用来进行很多网络连接。
NetworkManager 通知接口区的 firewalld 。您可以为接口分配区:
NetworkManager
firewall-config 工具
firewall-cmd 命令行工具
RHEL web 控制台
后三个只能编辑正确的 NetworkManager 配置文件。如果您使用 web 控制台 firewall-cmd 或 firewall-config 更改接口区域,则请求会转发到 NetworkManager 且不由 firewalld 处理。
预定义区域存储在 /usr/lib/firewalld/zones/ 目录中,并可立即应用于任意可用的网络接口。只有在修改后,这些文件才会复制到 /etc/firewalld/zones/ 目录中。预定义区的默认设置如下:
block
任何传入的网络连接都会被拒绝,并会拒绝 IPv4 的 icmp-host-prohibited(用于 IPv6 )和icmp6-adm-prohibited。只有从系统启动的网络连接才能进行。
dmz
对于您的非企业化区里的计算机来说,这些计算机可以被公开访问,且有限访问您的内部网络。只接受所选的入站连接。
drop
所有传入的网络数据包都会丢失,没有任何通知。只有外发网络连接也是可行的。
external
适用于启用了伪装的外部网络,特别是路由器。您不信任网络中的其他计算机不会损害您的计算机。
只接受所选的入站连接。
home
用于家用,因为您可以信任其他计算机。只接受所选的入站连接。
internal
当您主要信任网络中的其他计算机时,供内部网络使用。只接受所选的入站连接。
public
可用于您不信任网络中其他计算机的公共区域。只接受所选的入站连接。
trusted
所有网络连接都被接受。
work
可用于您主要信任网络中其他计算机的工作。只接受所选的入站连接。
这些区中的一个被设置为 default 区。当接口连接添加到 NetworkManager 时,它们会被分配给默认区。安装时, firewalld 的默认区设置为 public 区。默认区可以被修改。
1.1.3. 预定义的服务
服务可以是本地端口、协议、源端口和目的地列表,并在启用了服务时自动载入防火墙帮助程序模块列表。使用服务可节省用户时间,因为它们可以完成一些任务,如打开端口、定义协议、启用数据包转发等等,而不必在另外的步骤中设置所有任务。
服务配置选项和通用文件信息请参考 firewalld.service(5) man page。服务通过单独的 XML 配置文件指定,这些文件使用以下格式命名: service-name.xml 。协议名称优先于 firewalld 中的服务或者应用程序名称。
可使用图形 firewall-config 工具、 firewall-cmd 和 firewall-offline-cmd 添加和删除服务。
另外,您也可以编辑 /etc/firewalld/services/ 目录中的 XML 文件。如果用户没有添加或更改服务,则在 /etc/firewalld/services/ 中没有找到对应的 XML 文件。如果要添加或更改服务, /usr/lib/firewalld/services/ 目录中的文件可作为模板使用。