
firewalld防火墙配置最全实用命令指南
本文针对 CentOS 7、8、9 系统默认的 firewalld 防火墙工具,整理一套极简、实用、可直接复制使用的配置命令大全。涵盖防火墙状态查看、启停自启、端口放行/移除、服务放行、IP访问控制、规则查询等核心常用操作,附带常用端口对照表及常见问题排错方案,同时补充 CentOS 6 iptables 备用命令,适合服务器日常运维、建站环境配置、安全防护设置等场景,帮助运维人员快速完成防火墙配置,规避配置不生效、端口放行无效等常见问题。
目录
前言
在 CentOS 服务器运维中,防火墙是保障服务器网络安全的核心防线。CentOS 7 及以上版本(7/8/9)彻底摒弃了传统的 iptables,默认采用 firewalld 作为动态防火墙管理工具,支持动态规则更新,无需重启服务即可生效,操作更加便捷高效。
很多新手运维人员常遇到端口放行不生效、规则配置混乱、不知道永久/临时规则区别等问题。本文汇总生产环境最常用、最高频的 firewalld 命令,无冗余内容,全部可直接复制执行,适配日常服务器建站、项目部署、安全防护等所有场景。
注:CentOS 6 及更早版本默认使用 iptables,文末附备用命令,可按需查阅。
一、防火墙基础状态查看
日常运维中,配置防火墙前需先确认防火墙当前运行状态,避免重复操作或配置失效。
bash
# 快速查看防火墙运行状态(running/not running)
firewall-cmd --state
# 查看防火墙详细状态(包含启动、自启、日志等完整信息)
systemctl status firewalld
二、防火墙启停、重启与开机自启配置
该组命令用于控制防火墙服务状态,区分临时关闭和永久关闭,适配不同运维场景需求。
bash
# 启动防火墙
systemctl start firewalld
# 临时关闭防火墙(重启服务器后自动恢复开启状态)
systemctl stop firewalld
# 重启防火墙服务
systemctl restart firewalld
# 设置防火墙开机自启(服务器开机自动运行防火墙)
systemctl enable firewalld
# 关闭防火墙开机自启(永久关闭,重启后防火墙默认关闭)
systemctl disable firewalld
三、核心操作:端口放行(临时+永久)
端口放行是防火墙最常用操作,分为临时生效和永久生效两种模式,核心区别:临时规则服务器重启后失效,永久规则需重载生效、永久保存。
1. 临时开放端口(重启失效,临时测试使用)
bash
# 单独开放80端口(HTTP服务)
firewall-cmd --add-port=80/tcp
# 单独开放443端口(HTTPS服务)
firewall-cmd --add-port=443/tcp
# 批量开放端口范围(1000‑2000所有TCP端口)
firewall-cmd --add-port=1000-2000/tcp
2. 永久开放端口(生产环境推荐,需重载生效)
bash
# 永久开放SSH 22端口(远程连接必备)
firewall-cmd --permanent --add-port=22/tcp
# 永久开放网站常用80、443端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
# 关键命令:重载防火墙,让永久规则立即生效
firewall-cmd --reload
四、端口移除关闭规则
当服务下线、端口不再使用时,可通过以下命令移除已放行的端口,同样区分临时和永久模式。
bash
# 临时移除80端口放行
firewall-cmd --remove-port=80/tcp
# 永久移除80端口放行
firewall-cmd --permanent --remove-port=80/tcp
# 重载生效
firewall-cmd --reload
五、服务级放行(比端口更简洁高效)
firewalld 支持直接放行服务名称,无需记忆对应端口号,系统内置常用服务端口映射,配置更简单、不易出错,推荐优先使用。
bash
# 放行HTTP网站服务(默认对应80端口)
firewall-cmd --permanent --add-service=http
# 放行HTTPS加密网站服务(默认对应443端口)
firewall-cmd --permanent --add-service=https
# 放行SSH远程连接服务(默认对应22端口)
firewall-cmd --permanent --add-service=ssh
# 移除HTTP服务放行
firewall-cmd --permanent --remove-service=http
# 重载使所有规则生效
firewall-cmd --reload
六、查看防火墙已配置所有规则
配置完成后,可通过以下命令核查规则是否配置成功,排查配置遗漏、错误等问题。
bash
# 查看当前生效的所有防火墙规则
firewall-cmd --list-all
# 单独查看已放行的所有端口
firewall-cmd --list-ports
# 单独查看已放行的所有服务
firewall-cmd --list-services
# 查看所有永久保存的规则(重启不丢失)
firewall-cmd --permanent --list-all
七、IP精准访问控制(放行/禁止指定IP)
生产环境中为提升服务器安全性,可精准限制IP访问权限,仅允许内网/指定IP访问,禁止陌生IP连接服务器。
bash
# 放行指定网段:允许192.168.1.0/24内网所有IP访问服务器全部端口
firewall-cmd --permanent --add-source=192.168.1.0/24
# 禁止指定IP:拒绝192.168.1.100访问服务器所有端口
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
# 重载规则生效
firewall-cmd --reload
八、服务器常用端口速查表
整理运维、建站常用服务端口,方便快速配置放行规则:
- 22/tcp:SSH 远程连接服务(服务器登录必备)
- 80/tcp:HTTP 明文网站服务
- 443/tcp:HTTPS 加密网站服务
- 3306/tcp:MySQL 数据库服务
- 5432/tcp:PostgreSQL 数据库服务
- 6379/tcp:Redis 缓存服务
- 8080/tcp:Tomcat 服务、Web备用端口
九、常见问题快速排错
整理90%运维都会遇到的防火墙问题,快速定位解决:
- 规则修改后不生效:所有永久规则配置、修改、删除后,必须执行
firewall-cmd --reload重载生效 - 永久规则不保存:需要长期生效的规则,必须添加
--permanent参数,否则重启失效 - 端口放行后仍无法访问:
- 检查服务器对应服务是否正常启动、监听端口
- 云服务器(阿里云/腾讯云/华为云)需同步放行控制台安全组,防火墙放行+安全组放行双重生效
十、备用:CentOS 6 iptables 基础命令
CentOS 6 无 firewalld 工具,默认使用 iptables 防火墙,附上极简备用命令,适配老旧服务器维护:
bash
# 查看所有防火墙规则
iptables -L -n
# 放行80端口TCP访问
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 保存防火墙规则(防止重启失效)
service iptables save
# 启停防火墙服务
service iptables start
service iptables stop
总结
firewalld 作为 CentOS 新版系统的默认防火墙工具,操作简洁、动态灵活,是服务器安全运维的基础工具。日常配置优先使用 服务放行 替代端口放行,减少配置出错概率;生产环境务必使用 --permanent 永久规则+重载生效,同时配合云服务器安全组,双重保障服务器网络安全。本文所有命令均经过实战验证,可收藏留存,适配绝大多数 CentOS 服务器防火墙配置场景。