在本教程中,我们将安装和配置 CentOS 防火墙。 我们将使用一个非常强大且流行的防火墙管理工具 firewalld。 Firewalld 建立在 iptables(以前用于过滤网络流量)之上,并且预装在所有较新版本的 CentOS、RHEL 和 Fedora.
防火墙基础
Firewalld 或防火墙守护进程在区域的帮助下过滤网络流量。 这些区域有一组规则,然后定义安全级别。 这些是 9 个预定义区域,其可靠性按顺序递增:
- 降低:所有传入的网络数据包都被丢弃,没有任何回复。
- 堵塞:所有传入的网络数据包都被丢弃,但被拒绝,并以 ICMP 消息作为回复。
- 上市: 这些用于公共区域。 您不信任网络上的其他用户。
- 外部的:用于在启用伪装的外部网络上,尤其是路由器。 只允许选定的网络流量。
- dmz:适用于您的非军事区中可公开访问且对您的内部网络的访问受限的计算机。 仅接受选定的传入连接。
- 工作: 用于工作区域。 您大多信任网络上的其他计算机,但是,只接受选定的传入连接。
- 家: 用于家庭区域。 您主要信任网络上的其他计算机,对传入流量的限制很少。
- 内部的: 用于内部区域。 您主要信任网络上的其他计算机,对传入流量的限制很少。
- 值得信赖:接受所有网络连接。
您可以参考 firewalld 官方文档以获取有关区域的更多详细信息。
您机器上的任何网络接口都可以添加到这些区域中。 例如,您可以将以太网接口放在可以信任网络上其他用户的工作区,假设您的无线网络接口位于公共区域,这样更安全并限制大多数传入流量。
安装 CentOS firewalld
让我们进入使用 CentOS 防火墙的第一步 – 安装。
1. 检查之前的 firewalld 实例
Firewalld 预装在 CentOS 7 和更新版本上。 您可以通过在终端上运行以下命令来测试您的安装:
rpmquery firewalld
如果您安装了 firewalld,它应该看起来像这样:
2.使用yum安装firewalld
如果在运行上一条命令后您看到一条错误消息,指出未安装软件包 firewalld,请不要担心。 只需运行以下命令:
yum install firewalld
3.启动和启用firewalld
要从运行时启动和启用 firewalld,请运行以下几个命令:
systemctl disable --now iptables.service systemctl disable --now ip6tables.service systemctl disable --now etables.service systemctl disable --now ipset.service systemctl unmask --now firewalld.service systemctl enable --now firewalld.service
要检查 firewalld 是否正在运行,请运行 systemctl 命令:
systemctl status firewalld firewall-cmd --state
您可能应该看到如下内容:
配置 firewalld
一旦我们准备好安装,让我们看看如何配置和使用 firewalld。
1. 检查现有配置
因此,在我们深入配置防火墙之前,让我们看看我们有哪些现有配置。 所以让我们运行我们的第一个命令:
firewall-cmd --list-all
此命令将列出我们配置中的所有活动区域。 看看我运行这个命令时看到的:
因此,我们可以在输出中检查的内容很少。 第一行表示区域是 public (active)
. 然后我们看到连接到该区域的所有接口的列表。 在这种情况下,我们在公共区域中有“enp0s3”(这是我们的以太网接口)。 然后我们看服务,这些都是那个zone允许的服务,所以我们有dhcpv6-client和ssh相关的服务在zone允许的。
端口将包含网络区域上所有允许端口的详细信息,然后与此类似,我们拥有所有允许的协议,如 smtp、tcp、udp 等。
要检查可以添加到区域的所有服务,我们可以运行以下命令:
firewall-cmd --get-services
您可以根据需要向任何区域添加或允许任何这些服务。 我们将在下一部分讨论这个。 如果您需要有关这些服务的更多详细信息,可以浏览目录中每个服务可用的 .xml 文件 /usr/etc/firewalld/services/
.
要列出所有预定义区域和附加到所有区域的配置,您可以运行以下两个命令:
firewall-cmd --get-zones firewall-cmd --list-all-zones
2. 将接口添加到区域
所以首先让我们通过运行以下命令来查看我们机器上的所有接口:
ip a
此命令将列出您机器上的所有接口。 当我运行这个命令时,它看起来像这样:
检查接口后,我们可以使用以下命令将接口添加到区域:
firewall-cmd --permanent --zone=ZONE --add-interface=INTERFACE
您还可以使用以下命令更改接口的区域:
firewall-cmd --permanent --zone=ZONE --change-interface=INTERFACE
与从区域中删除接口类似,您可以运行上述命令 --remove-interface
标签。 重要的是使用 --permanent
标记以在重新启动后保留更改。
要检查接口的区域,您可以运行:
firewall-cmd --get-zone-of-interface=INTERFACE
3. 向区域添加服务/规则
您可以通过以下命令将服务添加到区域来允许服务:
firewall-cmd --permanent --zone=ZONE --add-service=SERVICE
要允许端口,类似地,您可以运行以下命令:
firewall-cmd --permanent --zone=ZONE --add-port=port-id/protocol
您还可以使用上述命令添加一系列端口,例如您可以使用 --add-port=100-200/tcp
添加 100-200 之间的所有 TCP 端口。 要删除服务或端口,您可以运行以下命令:
firewall-cmd --permanent --zone=ZONE --remove-service=SERVICE firewall-cmd --permanent --zone=ZONE --remove-port=port-id/protocol
要允许某些特定的源 ip-address 或一组 ip-address,可以运行以下命令:
firewall-cmd --permanent --zone=ZONE --add-source=source[/mask]
同样,您可以使用以下方法删除源 ip-address --remove-source
标签。 要检查所有最新更改,您可以运行以下命令:
firewall-cmd --get-active-zones
如果您使用的是桌面环境,您还可以使用 GUI 来配置 firewalld,只需运行 firewall-config
它应该看起来像这样:
结论
这只是对firewalld的介绍。 Firewalld 是一个非常强大且易于使用的工具,您可以参考官方文档了解更多详细信息。 我希望你从本教程中学到了一些东西。 感谢您阅读这篇文章! 干杯!