如何在 RHEL、Rocky 和 AlmaLinux 中配置 FirewallD
我们都知道Net-filter是Linux中的防火墙。Firewalld是一个动态守护进程,用于管理防火墙并支持网络区域。在以前的版本中,RHEL 和 CentOS 我们使用 iptables 作为数据包过滤框架的守护进程。
在基于 RHEL 的较新版本(例如 Fedora、Rocky Linux、CentOS Stream、AlmaLinux 和 openSUSE)中,iptables 接口正在被 firewalld 取代。
[您可能还喜欢:Linux 系统的 10 个开源安全防火墙优势]。
建议您开始使用 Firewalld 而不是 iptables,因为它将来可能会停止使用。不过,iptables 仍然受支持,并且可以使用 yum 命令加载。我们不能将Firewalld和iptables放在同一个系统中,这可能会导致冲突。
在 iptables 中,我们配置为输入、输出和转发链,但在 Firewalld 中,逻辑使用区域。基本上,firewalld 中有不同的区域,我们将在本文中讨论。
公共区域和私人区域等基本区域。为了使这些区域能够正常工作,我们需要将接口添加到配置的区域支持中,然后我们可以将服务添加到firewalld中。
基本上有很多服务,firewalld 最好的功能之一是,它带有预先配置的功能,我们可以以这些服务为例,只需下载它们即可将它们添加到我们的服务中。
Firewalld 还可以与 IPv4、IPv6 和以太网桥配合良好。我们可以在单独的防火墙系统中设置超时和一致的时间表。
让我们从如何使用区域开始,并通过 Linux 中更有趣的 Firewalld 用法来创建我们自己的服务。
操作系统:Red Hat Enterprise Linux 版本 9.0 (Plough)
IP 地址 :192.168.0.159
主机名 :howtoing-rhel9
步骤 1:在基于 RHEL 的系统中安装 Firewalld
1. RHEL、Fedora、Rocky Linux、CentOS Stream、AlmaLinux 和 openSUSE 中默认安装防火墙软件包。否则,您可以使用以下 yum 命令安装它。
# yum 安装防火墙 -y
.
# systemctl 状态 iptables
# systemctl 停止 iptables
# systemctl 掩码 iptables
第 2 步:了解壁炉组件(区域和规则)。
3. 在开始壁炉设计之前,我想探索一下每个领域。基本上,存在一些社区。我们需要将接口分配给区域。区域定义了接口接受连接的可信或拒绝级别的区域。区域可以包含服务和端口。
在这里,我们将解释 Firewalld 中可用的每个环境。
的
Drop Zone:当我们使用 drop zone 时,所有传入的数据包都会被丢弃。这是我们与iptables -j drop结合使用的。使用丢弃规则意味着没有响应,只有传出网络连接。
阻止区域:阻止区域将拒绝拒绝带有 icmp-host-prohibited 的传入网络连接。仅允许在公司内部配置的联系人。
公共领域:为了获取选定的链接,我们可以在公共领域定义规则。这将确保一旦特定端口移出我们的设施,其他连接将被删除。
外部区域:该区域将充当选定的伪装路由器,其他连接将被丢弃且不被接受,并且仅允许专用连接。
DMZ区域:如果我们需要允许公众访问某些服务,可以在DMZ区域中定义它。这也倾向于只接受选定的传入连接。
工作区:在此区域中,我们只能定义内部网络,即允许专用网络流量。
家庭区域:此区域专门用于家庭区域,我们可以使用此区域来信任网络上的其他计算机,他们不会像在任何区域中那样损害您的计算机。这也只允许传入选定的连接。
内部环境:这对应于具有允许的通信选项的企业。
信任区域:当我们到达信任区域时,所有流量都会被接受。
的
现在您对区域有了更好的了解,现在让我们查找可用区域和默认区域,并使用以下命令列出所有区域。
# 防火墙-cmd --get-zones
# 防火墙-cmd --get-default-zone
# 防火墙-cmd --list-all-zones
注意:上述命令的输出不会出现在一页上,因为这将列出每个区域,例如 block、dmz、drop、external、home、internal、public、trusted 和 work。如果区域有高级规则,则还将列出所提供的服务或端口以及这些区域的描述。
第三步:规划初始厨房区域
4. 如果要将默认区域设置为内部、外部、缓冲区、进程或任何其他区域,可以使用以下命令设置默认区域。在这里,我们使用“内部”字段作为默认值。
# 防火墙-cmd --set-default-zone=内部
5. 设置区域后,使用以下命令验证默认区域。
# 防火墙-cmd --get-default-zone
6. 这里,我们的接口是enp0s3,如果我们需要检查接口所绑定的区域,我们可以使用以下命令。
# 防火墙-cmd --get-zone-of-interface=enp0s3
7. 另一个有趣的防火墙属性是“icmptype”,它是防火墙支持的 icmp 类型之一。要获取支持的 icmp 类型列表,我们可以使用以下命令。
# 防火墙-cmd --get-icmptypes
第 4 步:在 Firewalld 中创建您自己的服务
8. 服务是 Firewalld 使用的一组规则以及端口和选项。服务已启用,当Firewalld服务启用时会自动出现。
默认情况下有多个服务,要获取所有可用服务的列表,请使用以下命令。
# 防火墙-cmd --get-services
9. 要获取所有现有服务的列表,请导航到以下文件夹,您将在此处找到应用程序列表。
# cd /usr/lib/firewalld/services/
10. 要创建您自己的服务,您需要在以下位置定义它。比如这里我想给RTMP 1935端口添加一个服务,首先下载每个服务。
# cd /etc/firewalld/services/
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
然后,导航到下载服务文件的位置,然后将文件“ssh.xml”重命名为“rtmp.xml”,如下图所示。
# cd /etc/firewalld/services/
# mv ssh.xml rtmp.xml
# ls -l rtmp.xml
11. 接下来打开文件并编辑标题、描述、配置和端口号,我们需要将其用于 RTMP 服务,如下图所示。
12. 要使这些更改生效,请重新启动防火墙服务器或重新加载设置。
# 防火墙-cmd --reload
13. 要确认是否添加了服务,请运行以下命令来查看可用服务的列表。
# 防火墙-cmd --get-services
步骤 5:将服务添加到 Firewalld 区域
14. 这里我们将讨论如何使用firewall-cmd命令来管理防火墙。要确定防火墙和所有活动区域的当前状态,请输入以下命令。
# 防火墙-cmd --state
# 防火墙-cmd --get-active-zones
15. 要获取接口enp0s3的公共区域,这是默认接口,在/etc/firewalld/firewalld.conf文件中定义为DefaultZone= public。
在此默认界面窗格中列出所有可用服务。
# 防火墙-cmd --get-service
第 6 步:将服务添加到 Firewalld 区域
16. 在上面的示例中,我们了解了如何通过创建 rtmp 服务来创建自己的服务,这里我们还将了解如何将 rtmp 服务添加到区域。
# 防火墙-cmd --add-service=rtmp
17. 要删除附加区域,请输入该区域。
# 防火墙-cmd --zone=public --remove-service=rtmp
上述步骤是暂时的。为了使其持久化,我们需要使用选项–permanent运行以下命令。
# 防火墙-cmd --add-service=rtmp --permanent
# 防火墙-cmd --reload
18. 定义网络源范围的规则并打开每个端口。例如,如果您想移动网络范围“192.168.0.0/24”和端口“1935”,请使用以下命令。
# 防火墙-cmd --permanent --add-source=192.168.0.0/24
# 防火墙-cmd --permanent --add-port=1935/tcp
添加或删除任何作业或端口后,请务必重新加载防火墙作业。
# 防火墙-cmd --reload
# 防火墙-cmd --list-all
第7步:为网络范围添加Firewalld丰富规则
19. 当我想要授权http、https、vnc-server和PostgreSQL等服务时,我使用以下规则。首先添加规则并使其持久化,然后重新加载规则并检查状态。
#firewall-cmd --add-rich-rule '规则族=“ipv4”源地址=“192.168.0.0/24”服务名称=“http”接受'
#firewall-cmd --add-rich-rule '规则族=“ipv4”源地址=“192.168.0.0/24”服务名称=“http”接受'--permanent
#firewall-cmd --add-rich-rule '规则系列=“ipv4”源地址=“192.168.0.0/24”服务名称=“https”接受'
#firewall-cmd --add-rich-rule '规则系列=“ipv4”源地址=“192.168.0.0/24”服务名称=“https”接受'--permanent
#firewall-cmd --add-rich-rule '规则族=“ipv4”源地址=“192.168.0.0/24”服务名称=“vnc-server”接受'
#firewall-cmd --add-rich-rule '规则系列=“ipv4”源地址=“192.168.0.0/24”服务名称=“vnc-server”接受'--permanent
#firewall-cmd --add-rich-rule '规则族=“ipv4”源地址=“192.168.0.0/24”服务名称=“postgresql”接受'
#firewall-cmd --add-rich-rule '规则系列=“ipv4”源地址=“192.168.0.0/24”服务名称=“postgresql”接受'--permanent
现在,网络范围 192.168.0.0/24 可以从我的服务器使用上述服务。–constant选项可以在任何规则中使用,但是我们必须定义规则并检查客户端权限,然后我们必须使其持久化。
20.添加上述规则后,不要忘记重新插入防火墙规则并通过以下方式输入规则:
# 防火墙-cmd --reload
# 防火墙-cmd --list-all
了解有关 Firewalld 的更多信息。
# 人防火墙
就这样,我们了解了如何在基于 RHEL 的发行版(例如 Fedora、Rocky Linux、CentOS Stream、AlmaLinux 和 openSUSE)中使用 Firewalld 设置网络过滤器。
Net-filter 是任何 Linux 发行版的防火墙设置。在 RHEL 和 CentOS 的每个版本中,我们都使用 iptables,但在较新的版本中引入了 Firewalld。易于理解和使用firewalld。我们希望您喜欢这篇文章。