如何在 RHEL、Rocky 和 ​​AlmaLinux 中配置 FirewallD

言鼎科技 2023-07-14 361

我们都知道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。我们希望您喜欢这篇文章。

言鼎科技

The End