Linux运维防火墙firewalld

Linux 防火墙 firewalld 安装与端口管理指南

| 6 分钟阅读

前言

firewalld 是 CentOS 7 / RHEL 7 及更新版本默认的防火墙管理工具,基于 zone 模型提供动态管理能力,相比旧版 iptables 上手门槛更低。本文覆盖从安装到端口放行的完整操作流程。


一、安装 firewalld

yum install firewalld -y

注意:CentOS 7 及以上版本通常已预装。如果系统用的是 dnf(CentOS 8+ / Fedora),将 yum 替换为 dnf 即可。


二、启停管理

启动与查看状态

# 启动防火墙
systemctl start firewalld

# 查看运行状态
systemctl status firewalld.service

systemctl status 输出中关注 Active: active (running) 表示已运行。

停止与禁用

# 临时关闭(重启后恢复)
systemctl stop firewalld.service

# 永久禁用(禁止开机自启)
systemctl disable firewalld

重要区别stop 只影响当前运行态,重启后会恢复;disable 控制开机自启。生产环境建议用 disable 而非直接卸载。


三、开启端口

添加端口规则

firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent

参数说明

参数含义
--zone作用域,public 为默认公共区域
--add-port端口与协议,格式 端口号/协议(tcp / udp)
--permanent写入永久配置,不加此参数仅当前会话有效,重启后丢失

使规则生效

firewall-cmd --reload

--reload 会重新加载配置,不会中断已有连接,比 iptablesrestart 更加安全。

完整操作流程

# 1. 开放端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent

# 2. 重载配置使其生效
firewall-cmd --reload

# 3. 验证端口是否已开放
firewall-cmd --zone=public --list-ports

输出示例:

443/tcp 8081/tcp

四、常用检查命令

查看已开放的所有端口

firewall-cmd --zone=public --list-ports

查看完整规则列表(含服务、端口、富规则)

firewall-cmd --zone=public --list-all

检查某个端口是否已开放

firewall-cmd --zone=public --query-port=443/tcp

返回 yes 表示已开放,no 表示未开放。

查看连接状态(netstat)

netstat -an | grep 443

参数:

参数含义
-a显示所有连接和监听端口
-n以数字形式显示地址和端口(不解析域名)

现代系统推荐用 ss 替代 netstatss -tlnp | grep 443


五、Zone 简介

firewalld 预置了多个 zone,安全等级从高到低:

Zone信任级别适用场景
drop最低丢弃所有入站包,无任何回复
block很低拒绝所有入站,返回拒绝消息
public默认不信任其他计算机,仅开放指定端口
external中等NAT 网关场景,开启 IP 伪装
dmz中等隔离区,允许部分入站
work较高工作环境,基本信任
home较高家庭环境
internal较高内部网络
trusted最高接受所有连接

日常管理通常使用 public 即可。

查看当前默认 zone

firewall-cmd --get-default-zone

切换默认 zone

firewall-cmd --set-default-zone=home

总结速查

操作命令
安装yum install firewalld -y
启动systemctl start firewalld
查看状态systemctl status firewalld.service
停止systemctl stop firewalld.service
永久禁用systemctl disable firewalld
开放端口firewall-cmd --zone=public --add-port=443/tcp --permanent
重载配置firewall-cmd --reload
查看已开放端口firewall-cmd --zone=public --list-ports
查看完整规则firewall-cmd --zone=public --list-all
查询单个端口firewall-cmd --zone=public --query-port=443/tcp
查看端口连接ss -tlnp | grep 443

掌握这些命令基本覆盖日常服务器端口管理的全部需求。