找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4300

积分

1

好友

588

主题
发表于 昨天 09:56 | 查看: 8| 回复: 0

在安装应用程序或允许外部设备访问内部服务时,经常需要配置网络端口。端口是软件定义的通信端点,用于标识特定的进程或服务类型。例如,我们熟知的 SSH 服务默认端口是 22,Apache Web 服务常用 80 或 443 端口。然而,在默认启用了防火墙的系统上,大多数端口是关闭的,需要我们手动打开才能建立通信。

假设你需要在 AlmaLinux 8 或 Rocky Linux 上管理 80、443 或其他端口,本指南将详细介绍使用 firewalld 进行操作的完整流程。

1. 安装并启动 firewalld

在管理端口之前,确保 firewalld 防火墙服务已安装并运行是首要步骤。

检查 firewalld 运行状态

运行以下命令查看服务状态:

sudo systemctl status firewalld

如果服务未运行,你需要启动它并设置为开机自启:

sudo systemctl start firewalld
sudo systemctl enable firewalld

如果系统尚未安装 firewalld,可以使用以下命令安装:

sudo dnf update
sudo dnf install firewalld

2. 列出所有已开放的端口和服务

在开放新端口前,最好先确认它是否已经开放,或者是否有其他服务占用了该端口。使用以下命令查看当前所有防火墙规则:

sudo firewall-cmd --list-all

这条命令会列出所有开放的端口、预定义服务以及当前的区域配置(如 public 区域)。如果某个端口或服务未出现在列表中,则意味着它当前被防火墙阻止。

3. 如何开放端口或服务

firewalld 内置了许多常见的服务定义,如 sshhttphttps,直接开放这些服务等同于开放其对应的端口。

查看所有预定义服务

你可以先查看系统支持哪些服务:

firewall-cmd --get-services

开放一个预定义的服务

若要开放一个服务(例如 httpopenvpn),使用以下命令格式,将 service-name 替换为目标服务名:

sudo firewall-cmd --zone=public --permanent --add-service=service-name

例如,开放 HTTP 服务:

sudo firewall-cmd --zone=public --permanent --add-service=http

手动开放一个特定端口

如果端口不属于任何预定义服务,或者你需要自定义端口号,可以直接开放端口。将 port-number 替换为实际端口号,协议 tcp 也可根据需要换为 udp

sudo firewall-cmd --zone=public --permanent --add-port=port-number/tcp

例如,开放 TCP 协议的 3602 端口:

sudo firewall-cmd --zone=public --permanent --add-port=3602/tcp

4. 重新加载防火墙配置

在添加了 --permanent 参数后,规则已写入永久配置。为了让更改在当前会话中立即生效,需要重新加载防火墙:

sudo firewall-cmd --reload

重新加载后,建议再次运行 sudo firewall-cmd --list-all 来确认端口或服务已成功加入允许列表。

5. 如何关闭或阻止端口/服务

当不再需要某个端口或服务对外开放时,及时关闭它是保证网络/系统安全的好习惯。关闭操作的命令与开放操作类似,只是将 --add- 参数改为 --remove-

关闭一个特定端口

使用以下命令格式,将 port-number 替换为要关闭的端口号:

sudo firewall-cmd --zone=public --permanent --remove-port=port-number/tcp

例如,关闭 TCP 协议的 443 端口:

sudo firewall-cmd --zone=public --permanent --remove-port=443/tcp

阻止一个预定义的服务

使用以下命令格式,将 service-name 替换为要阻止的服务名:

sudo firewall-cmd --zone=public --permanent --remove-service=service-name

例如,阻止 SSH 服务(即关闭 22 端口):

sudo firewall-cmd --zone=public --permanent --remove-service=ssh

同样,执行关闭操作后,别忘了重新加载防火墙以使更改生效:

sudo firewall-cmd --reload

通过以上步骤,你可以在 AlmaLinux 8、Rocky Linux 及其同源发行版(如 RHEL 8、CentOS Stream)上,轻松管理防火墙端口。firewalld 提供了清晰且强大的规则管理能力,是保障服务器网络/系统安全的重要工具。如果在实践中遇到更复杂的场景,欢迎到云栈社区的运维板块与其他开发者交流探讨。




上一篇:图片滑块原理与实现:从基础JavaScript到用户体验设计
下一篇:Linux用户与文件权限管理详解:从who到chown的实战命令指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-10 10:10 , Processed in 0.427122 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表