CentOS7.4的firewalld防火墙如何开放指定端口?

在 CentOS 7.4 系统中,防火墙作为保障服务器安全的第一道防线,其重要性不言而喻,与早期版本默认使用的 iptables 不同,CentOS 7.4 引入了 firewalld(Dynamic Firewall Manager of Linux)作为其默认的防火墙管理工具。firewalld 提供了更加动态和易于管理的防火墙规则配置方式,支持网络“区域”的概念,使得管理员可以根据不同的网络环境(如公共、家庭、工作等)快速应用相应的安全策略。

CentOS7.4的firewalld防火墙如何开放指定端口?

firewalld 的核心概念

要熟练使用 firewalld,首先需要理解其两个核心概念:区域和服务。

区域

区域是 firewalld 的灵魂所在,每一个区域都代表了一套预设的安全规则集,用于定义网络连接或接口的信任级别,系统管理员可以为不同的网络接口(如 eth0, eth1)分配不同的区域,连接内部网络的接口可以设置为 trusted 区域,而连接公网的接口则设置为 public 区域。firewalld 默认提供了多个区域,以下是其中一些常见的区域:

区域名称 描述
trusted 接受所有的网络连接,最不安全。
home 用于家庭网络,默认信任其他计算机,仅允许选定的服务通过。
internal 用于内部网络,与 home 类似,但适用于更广泛的内部环境。
work 用于工作区域,同样信任网络内的大多数计算机。
public 默认区域,不信任网络中的任何计算机,仅允许SSH和DHCPv6-Client等少数服务。
dmz 用于位于非军事区的计算机,仅允许指定的服务通过,可被外部网络访问。
block 阻止所有传入的网络连接,但允许已建立的连接及相关返回流量。
drop 丢弃所有传入的网络连接,不返回任何错误信息,最为严格。

服务

服务是 firewalld 对端口和协议的抽象封装。firewalld 内置了大量常用服务的预定义规则,如 http(TCP 80端口)、https(TCP 443端口)、ssh(TCP 22端口)等,通过操作服务名称而非直接操作端口号,可以使防火墙规则的管理变得更加直观和不易出错。

常用 firewall-cmd 命令实践

firewalld 的所有操作都通过 firewall-cmd 命令行工具完成,以下是一些在日常运维中高频使用的命令。

基本状态管理

CentOS7.4的firewalld防火墙如何开放指定端口?

需要确保 firewalld 服务正在运行。

# 查看防火墙状态
systemctl status firewalld
# 启动防火墙服务
systemctl start firewalld
# 停止防火墙服务
systemctl stop firewalld
# 设置防火墙开机自启
systemctl enable firewalld
# 禁止防火墙开机自启
systemctl disable firewalld

区域管理

查看和配置当前系统使用的区域。

# 查看当前默认区域
firewall-cmd --get-default-zone
# 查看当前活动区域及绑定的接口
firewall-cmd --get-active-zones
# 查看指定区域(如public)的详细规则
firewall-cmd --zone=public --list-all
# 临时将默认区域设置为 work
firewall-cmd --set-default-zone=work

端口与服务管理

这是防火墙配置的核心部分,涉及开放或关闭特定的访问权限。

firewalld 的配置分为两种模式:运行时模式(Runtime)和永久模式(Permanent),运行时模式的配置在系统重启或防火墙服务重载后会失效,而永久模式的配置则会持久化保存,推荐在进行永久配置后,执行 --reload 命令使其立即生效。

# 永久地开放 HTTP 服务 (TCP 80端口)
firewall-cmd --permanent --zone=public --add-service=http
# 永久地移除 HTTP 服务
firewall-cmd --permanent --zone=public --remove-service=http
# 永久地开放 TCP 端口 8080
firewall-cmd --permanent --zone=public --add-port=8080/tcp
# 永久地移除 TCP 端口 8080
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
# 重新加载防火墙配置,使永久配置生效
firewall-cmd --reload

富规则

CentOS7.4的firewalld防火墙如何开放指定端口?

对于更复杂的场景,例如只允许特定IP地址访问某个端口,firewalld 提供了“富规则”功能。

# 允许来自 192.168.1.100 的 IP 访问 TCP 3306 端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept'
# 重载配置
firewall-cmd --reload

相关问答FAQs

我使用 firewall-cmd --add-port=8080/tcp 命令开放了端口,为什么重启服务器后规则就失效了?

解答: 这是因为您使用的是运行时模式添加规则,默认情况下,不带 --permanent 参数的 firewall-cmd 命令都只在当前运行时生效,系统重启或防火墙服务重启后这些临时规则会丢失,要使规则永久生效,必须在命令中添加 --permanent 参数,firewall-cmd --permanent --add-port=8080/tcp,添加永久规则后,需要执行 firewall-cmd --reload 来重新加载防火墙配置,让新规则立即生效,而无需重启系统。

如何检查一个特定的端口(例如3306)是否已经在防火墙中开放?

解答: 您可以使用 firewall-cmd 的查询功能来检查端口是否开放,有两种常用方法:

  1. 查询所有已开放的端口列表:执行 firewall-cmd --list-ports,这会列出所有区域中已永久开放的端口,您可以在此列表中查找是否存在 3306/tcp
  2. 直接查询特定端口:执行 firewall-cmd --query-port=3306/tcp,如果该端口已开放,命令会返回 yes;如果未开放,则返回 no,这个方法更加直接和精确,查询时也需要指定协议(tcp或udp)。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-13 07:47
下一篇 2025-10-13 07:49

相关推荐

  • CentOS系统pip命令无法使用,究竟该如何解决?

    在CentOS系统中,pip作为Python包管理器的核心工具,其无法正常使用是一个令许多开发者和系统管理员感到困扰的常见问题,这通常不是由单一原因造成的,而是涉及到系统环境、Python版本、依赖库以及网络配置等多个方面,要彻底解决这个问题,我们需要系统地排查并采取正确的修复策略,问题的根源往往在于CentO……

    2025-10-06
    007
  • CentOS 6下SFTP配置为何出现连接失败,常见问题排查?

    CentOS 6 SFTP:配置与管理指南SFTP简介SFTP(SSH File Transfer Protocol)是一种基于SSH协议的安全文件传输协议,它使用SSH协议进行连接,提供了比FTP更安全的文件传输方式,在CentOS 6操作系统中,SFTP可以用来进行文件的上传、下载和远程管理,SFTP配置步……

    2026-01-30
    004
  • CentOS如何创建指定UID的用户账户?

    在Linux系统中,用户标识符(UID)是每个用户的唯一数字标识,用于系统管理和权限控制,CentOS作为广泛使用的服务器操作系统,提供了多种方法来创建和管理UID,本文将详细介绍在CentOS系统中创建UID的步骤、注意事项及相关技巧,帮助用户更好地理解和管理用户账户,创建用户账户时的UID分配在CentOS……

    2025-12-20
    006
  • centos如何修改ftp服务地址与端口配置?

    在CentOS系统中修改FTP地址通常涉及配置文件的调整,具体步骤取决于您使用的FTP服务器软件,以下以常见的vsftpd(Very Secure FTP Daemon)为例,详细介绍修改FTP地址的流程和注意事项,确认当前FTP服务状态在修改配置前,需确保FTP服务已安装并运行,通过以下命令检查vsftpd是……

    2025-12-07
    0012

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信