5154

Good Luck To You!

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)。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.