如何在 Firewalld 中为特定 IP 地址开放端口?

linuxopen sourceoperating system

在当今互联互通的世界中,网络安全至关重要。保护网络安全的一个重要方面是管理系统上特定端口的访问权限。Firewalld 是一款动态防火墙管理工具,它为 CentOS 中的防火墙配置提供了一种灵活且用户友好的方式。

本指南将重点介绍一个常见场景:在 Firewalld 中为特定 IP 地址开放端口。通过仅允许特定 IP 地址访问,您可以增强系统安全性并限制未经授权的访问。

在本文中,我们将逐步介绍如何在 Firewalld 中为特定 IP 地址开放端口。我们将介绍 Firewalld 区域和服务的基础知识,确定具体的 IP 地址,并提供有关如何打开所需端口的详细说明。

了解 Firewalld 区域和服务

在使用 Firewalld 管理网络安全时,掌握区域和服务的概念至关重要。这些组件在定义防火墙的行为和确保适当的保护级别方面发挥着至关重要的作用。

  • Firewalld 区域 -  Firewalld 将网络接口和连接分类到不同的区域中,每个区域都有其特定的用途。这些预定义的区域(包括公共区域、内部区域和受信任区域)决定了与特定网络段关联的信任级别。通过将接口分配到相应的区域,您可以控制访问权限并为每个区域设置不同的规则。

  • Firewalld 服务 - Firewalld 中的服务代表与端口或端口范围关联的特定应用程序或协议。它们定义了允许的网络流量,并且可以分配到特定区域。通过使用服务,您可以轻松管理防火墙配置中常用服务的规则并应用一致的规则。

了解区域和服务之间的相互作用,使您能够使用 Firewalld 创建量身定制的网络安全策略。掌握了这些信息后,我们继续下一步:确定要开放端口的具体 IP 地址。

确定具体 IP 地址

在 Firewalld 中为特定 IP 地址开放端口之前,您需要确定要授予访问权限的 IP 地址。请按照以下步骤获取 IP 地址:-

  • 检查网络配置 −

$ ip addr show

查找与所需 IP 地址关联的网络接口。记下 IP 地址和接口名称。

  • 查看网络流量 -

$ sudo tcpdump -i  host 

将 替换为上一步中的网络接口名称,将 替换为所需的 IP 地址。分析捕获的数据包以确定 IP 地址。

  • 检查日志或系统信息 -

$ cat /var/log/syslog | grep <desired_ip>

搜索系统日志,查找与所需 IP 地址相关的条目。或者,检查相关的配置文件,其中可能包含有关访问您系统的 IP 地址的信息。

按照这些步骤操作,您将能够确定要在 Firewalld 中为其打开端口的特定 IP 地址。获取 IP 地址后,您可以继续下一节,其中介绍了打开端口的步骤。

在 Firewalld 中为特定 IP 地址打开端口

现在您已经确定了要授予访问权限的特定 IP 地址,您可以继续在 Firewalld 中为该 IP 地址打开端口。请按照以下步骤完成此操作:

  • 验证 Firewalld 状态 - 执行以下命令检查 Firewalld 是否在您的系统上运行 -

$ sudo systemctl status firewalld

确保服务处于活动状态并正在运行。

  • 查找区域 - 确定与端口所属网络接口关联的 Firewalld 区域。运行以下命令列出可用区域 -

$ sudo firewall-cmd --get-zones

确定网络接口的适用区域。

  • 添加新规则 -  使用 --zone 选项以及区域名称,为特定 IP 地址和端口添加新规则。执行以下命令 -

$ sudo firewall-cmd --zone=<zone_name> --add-source=<specific_ip>/32 --permanent

将 <zone_name> 替换为上一步中获得的相应区域名称,并将 <specific_ip> 替换为已识别的 IP 地址。

  • 指定端口 - 使用 --add-port 选项将端口号添加到规则中 -

$ sudo firewall-cmd --zone=<zone_name> --add-port=<port_number>/tcp --permanent

将 替换为区域名称,将 替换为所需的端口号。

  • 重新加载 Firewalld - 重新加载 Firewalld 以应用更改 -

$ sudo firewall-cmd --reload
  • 验证规则 -  要确保端口已为特定 IP 地址打开,请运行以下命令  -

$ sudo firewall-cmd --zone=<zone_name> --list-all

请确认输出中列出了 IP 地址和端口。

目前,我们已在 Firewalld 中为特定 IP 地址打开了一个端口。这允许指定的 IP 地址访问您系统上的指定端口。

下一节我们将探讨如何移除规则并在需要时关闭端口。

移除规则和关闭端口

如果您需要撤销特定 IP 地址的访问权限或在 Firewalld 中关闭端口,您可以轻松地移除规则。请按照以下步骤操作:

  • 识别规则 -   在删除规则之前,必须识别与特定 IP 地址和端口关联的规则编号。执行以下命令列出规则:

$ sudo firewall-cmd --zone=<zone_name> --list-all

找到包含您要删除的特定 IP 地址和端口的规则。记下规则编号。

  • 删除规则 -  使用 --remove-rich-rule 选项以及规则编号来删除规则:

$ sudo firewall-cmd --zone=<zone_name> --remove-rich-rule='rule family="ipv4" source address="<specific_ip>/32" port port="<port_number>" protocol="tcp" accept' --permanent

将 <zone_name> 替换为相应的区域名称,将 <specific_ip> 替换为 IP 地址,将 <port_number> 替换为端口号。使用您在上一步中记下的规则编号。

  • 重新加载 Firewalld -  通过重新加载 Firewalld 应用更改:

$ sudo firewall-cmd --reload

完成这些步骤后,允许特定 IP 地址访问指定端口的规则将被移除,从而有效地关闭该端口。

结论

网络安全管理对任何系统都至关重要,而 Firewalld 提供了一个强大的解决方案来控制传入连接。在本博文中,我们讨论了如何在 Firewalld 中为特定 IP 地址打开特定端口。我们介绍了必要的步骤,包括识别区域、添加详细规则以及验证配置。遵循这些指南,您可以确保只有授权的 IP 地址才能访问特定端口,从而增强系统的安全性。


相关文章


有用资源