如何在 RHEL/CentOS/Rocky 8|7 上配置 Firewalld如何在 RHEL/CentOS/Rocky 8|7 上配置 Firewalld如何在 RHEL/CentOS/Rocky 8|7 上配置 Firewalld如何在 RHEL/CentOS/Rocky 8|7 上配置 Firewalld
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 RHEL/CentOS/Rocky 8|7 上配置 Firewalld

发表 admin at 2025年2月28日
类别
  • 未分类
标签

我是一个对安全很着迷的人。看到网络上的多层安全被绕过,这与我始终以安全为中心的原因背道而驰。一些系统管理员无法花几分钟的时间来关闭前门,这总是会对网络系统产生负面影响。

在本指南中,我们将深入探讨防御——涵盖端口安全和使用防火墙来保护 Linux 服务器。由于我们无法涵盖本教程中的所有内容,因此我们将专注于各种配置的防火墙基础知识和演示。

什么是防火墙?

Firewalld 是一种动态防火墙服务,它使用低级 iptables、ip6tables 和 ebtables 管理 Linux 内核 netfilter 子系统命令。 Firewalld 是 Red Hat Enterprise Linux 7 (RHEL) 系列 Linux 发行版中使用的默认防火墙服务。它支持 IPv4 和 IPv6 防火墙设置。

firewalld 提供的防火墙服务是动态的而不是静态的,因为对配置所做的更改会立即实施,无需应用或保存更改。这是一个优势,因为现有网络连接不会发生意外中断。

Firewalld 将所有传入流量分成多个区域,每个区域都有自己的一组规则。

用于传入连接的 Firewalld 逻辑

Firewalld 必须确定用于传入连接的区域。为此,请遵循以下顺序,第一个匹配的规则获胜:

  1. 如果传入数据包的源地址与区域的源规则设置匹配,则该数据包将通过该区域进行路由。
  2. 如果数据包的传入接口与区域的过滤器设置匹配,则将使用该区域。
  3. 否则使用默认区域。

注意:任何新网络接口的默认区域都将设置为公共区域。

配置文件在哪里?

firewalld 的配置文件存储在 /usr/lib/firewalld/ 和 /etc/firewalld/ 目录中的各种 XML 文件中。这些文件可以编辑、写入、备份并用作其他安装的模板。

如果两个位置都存储了具有相同名称的配置文件,则将使用 /etc/firewalld/ 中的版本,这意味着管理员可以覆盖默认区域和设置。

如何管理firewalld?

作为更改防火墙服务的一种方法,可以使用三种方法:

  1. 使用命令行客户端firewall-cmd。它用于进行永久更改和运行时更改。 root用户或wheel组的任何成员都可以运行firewall-cmd命令,使用polkit机制进行授权命令。
  2. 使用图形工具firewall-config
  3. 使用 /etc/firewalld/ 中的配置文件

注意:

firewalld.service 和 iptables.service、ip6tables.service 和 ebtables.service 服务相互冲突。在运行firewalld服务之前屏蔽其他服务是一个很好的做法。这可以通过以下命令来完成:

for SERVICE in iptables ip6tables ebtables; do
systemctl mask ${SERVICE}.service
done
}

Firewalld 与 iptables 有何不同?

  • Firewalld 将其配置文件存储在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件中,而 iptables 服务 将它们存储在/etc/sysconfig/iptables。文件 /etc/sysconfig/iptables 在 RHEL 7 上不存在,因为它默认附带 firewalld。
  • 使用iptables服务,每次进行更改时都必须刷新旧规则,必须从/etc/sysconfig/iptables重新读取规则。使用firewalld,仅应用差异,并且可以在运行时更改设置,而不会丢失现有连接。

Firewalld 与 IPtables 工作图

使用firewall-cmd配置防火墙设置

firewall-cmd 作为主 firewalld 软件包的一部分安装。除非指定了 --permanent 选项,否则几乎所有命令都可以在运行时配置上运行。使用选项 --zone= 指定应用规则的区域。如果省略 --zone,则使用默认区域。

如果更改应用于--permanent永久配置,则可以使用firewall-cmd --reload激活更改。

下表显示了一些常用的 firewall-cmd 命令以及说明:

了解网络区域

防火墙可以根据用户决定的信任级别将网络分为不同的区域。 firewalld 附带了许多预定义区域,每个区域都有其预期用途。下表解释了更多:

使用firewall-cmd示例

请考虑以下示例,以帮助您加强有关如何使用firewall-cmd 的知识。首先验证 firewalld 是否已启用并在您的系统上运行。

systemctl status firewalld.service

如果未运行,您可以使用以下命令启动并启用它:

systemctl start firewalld
systemctl enable firewalld

1. 将默认区域设置为dmz。

firewall-cmd --set-default-zone=dmz
firewall-cmd --get-default-zone 

2. 将来自 192.168.100.0/24 网络的所有流量分配到受信任区域并进行验证。

firewall-cmd --permanent --zone=trusted --add-source=192.168.100.0/24
firewall-cmd --reload
firewall-cmd --list-all --zone=trusted
firewall-cmd --get-active-zones

3. 为内部区域开放http和https流量。

firewall-cmd --permanent --add-service={http,https} --zone=internal
firewall-cmd --reload
firewall-cmd --list-services --zone=internal

要从区域中删除永久服务:

firewall-cmd --permanent [--zone=<zone>] --remove-service=<service>

4. 将 eth0 接口转换到当前会话的“内部”区域:

firewall-cmd --zone=internal --change-interface=eth0

5. 将 eth1 接口添加到 home 区域:

firewall-cmd --zone=home --add-interface=eth1

界面管理的其他选项:

查询接口是否在Zone中:

firewall-cmd [--zone=<zone>] --query-interface=<interface>

从区域中删除接口:

firewall-cmd [--zone=<zone>] --remove-interface=<interface>

6. 在home区域中启用伪装

firewall-cmd --zone=home --add-masquerade

禁用区域中的伪装

firewall-cmd [--zone=<zone>] --remove-masquerade

区域中的查询伪装

firewall-cmd [--zone=<zone>] --query-masquerade

永久禁用区域中的伪装

firewall-cmd --permanent [--zone=<zone>] --remove-masquerade

7. 在 home 区域永久启用 mysql 的 3306/tcp 端口

firewall-cmd --permanent --zone=home --add-port=3306/tcp

在区域中永久禁用端口和协议组合

firewall-cmd --permanent [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>

8. 在公共区域阻止回显回复消息

firewall-cmd --zone=public --add-icmp-block=echo-reply

9. 将 ssh 转发到内部区域中的主机 192.168.10.5

firewall-cmd --zone=home --add-forward-port=port=22:proto=tcp:toaddr=192.168.10.5

参考

  1. 手册页:
man firewall-cmd 
man firewalld
man firewalld.zones
man firewall.zone
man firewall-config

更多文章:

  • 最佳 CompTIA Security+ (SY0-601) 认证书籍
  • 安装和使用 WPScan – WordPress 安全扫描器
  • 最佳网络安全书籍
©2015-2025 Norria support@norria.com