在Linux系统中,防火墙是保障服务器安全的重要屏障,用于控制网络流量、过滤恶意访问,管理员经常需要查看防火墙的运行状态,以确认其是否关闭或开启,从而进行相应的配置调整,本文将详细介绍在不同Linux发行版中查看防火墙状态的方法,涵盖常见防火墙工具(如iptables、firewalld、ufw等)的操作步骤,并补充相关实用技巧,帮助用户全面掌握防火墙状态检查技能。

使用iptables检查防火墙状态(适用于CentOS 7及以下、RHEL等系统)
iptables是Linux内核中经典的防火墙工具,通过规则链控制数据包的转发与过滤,在基于iptables的系统(如CentOS 7、RHEL 6/7等)中,检查防火墙状态需通过iptables命令或service/systemctl命令组合实现。
直接查看iptables规则链状态
执行以下命令可查看当前iptables的规则配置,若规则链为空(仅默认的ACCEPT策略)或无规则,通常表示防火墙未开启严格过滤:
sudo iptables -L -n -v
-L:列出所有规则链;-n:以数字形式显示IP和端口,避免DNS解析延迟;-v:显示详细信息,如数据包计数、网络接口等。
若输出中Chain INPUT (policy ACCEPT)的policy为ACCEPT,且规则数量为0(或仅有允许相关规则),则说明防火墙未启用严格过滤模式。
检查iptables服务运行状态
通过服务管理工具可确认防火墙服务是否启动:
# CentOS 7及以下版本 sudo service iptables status # 或使用systemctl(若系统支持) sudo systemctl status iptables
若输出显示Active: active (running),则表示iptables服务正在运行;若显示Active: inactive (dead),则服务未启动,防火墙处于关闭状态。
检查默认策略
iptables的默认策略(policy)决定了未匹配规则时的处理方式,若所有链(INPUT、OUTPUT、FORWARD)的策略均为ACCEPT,且无拒绝规则,则可认为防火墙未开启严格限制:
sudo iptables -S
该命令以规则集形式输出策略,-P INPUT ACCEPT表示默认允许所有输入流量。
使用firewalld检查防火墙状态(适用于CentOS 8+、RHEL 8+、Fedora等系统)
firewalld是CentOS 7及以上版本默认的动态防火墙管理工具,支持区域(Zone)和运行时/永久配置模式,检查其状态需通过firewall-cmd命令或systemctl。
查看firewalld运行状态
sudo firewall-cmd --state
- 若输出
running,表示防火墙已启动; - 若无输出或提示
not running,则防火墙已关闭。
检查服务状态与区域配置
通过systemctl确认服务是否启用:
sudo systemctl status firewalld
若Active: active (running),则服务正在运行,进一步可通过以下命令查看当前活跃区域及默认规则:
# 查看当前活跃区域 sudo firewall-cmd --get-active-zones # 查看默认区域的允许服务 sudo firewall-cmd --list-services
若活跃区域为public(默认)且允许服务为空(或仅有ssh等基础服务),需结合具体需求判断防火墙严格程度。

检查永久配置状态
firewalld区分运行时(Runtime)和永久(Permanent)配置,可通过以下命令查看永久配置是否启用:
sudo firewall-cmd --permanent --state
若输出running,表示永久配置中防火墙为启用状态;若需修改,需添加--permanent参数并重载防火墙(sudo firewall-cmd --reload)。
使用ufw检查防火墙状态(适用于Ubuntu、Debian等系统)
UFW(Uncomplicated Firewall)是Ubuntu等Debian系系统提供的简化防火墙工具,底层基于iptables,操作更便捷,检查状态可通过ufw命令或systemctl。
查看ufw状态
sudo ufw status
- 若输出
Status: active,表示防火墙已启用; - 若输出
Status: inactive,则防火墙已关闭; - 若添加
verbose参数(sudo ufw status verbose),可显示详细规则列表及默认策略。
检查默认策略
ufw的默认策略可通过以下命令查看:
sudo ufo status verbose | grep "Default"
若默认策略为deny(拒绝所有未允许的连接),则防火墙为严格模式;若为allow(允许所有连接),则相当于未开启过滤。
确认服务状态
ufw作为ufw服务运行,可通过systemctl检查:
sudo systemctl status ufw
若Active: active (exited),表示服务已启用但无活动进程(正常状态);若Active: inactive,则服务未启动。
其他防火墙工具及通用检查方法
除上述主流工具外,部分Linux发行版可能使用其他防火墙解决方案,或需通过系统日志、网络连接状态辅助判断。
检查nftables状态(适用于新版本Linux发行版)
nftables是iptables的替代品,在Ubuntu 20.04+、CentOS 8+等系统中逐渐普及,检查状态需通过nft命令:
sudo nft list ruleset
若输出为空或仅有基础规则,可能表示防火墙未严格配置;通过systemctl status nftables可确认服务状态。
通过系统日志验证
防火墙规则生效时,相关日志会记录在系统日志中,可通过以下命令查看:

# 查看防火墙相关日志(以iptables为例) sudo tail -f /var/log/syslog | grep iptables # 或使用journalctl(systemd系统) sudo journalctl -u iptables -f
若日志中存在大量DROP或REJECT记录,则防火墙正在过滤流量。
检查网络连接状态
通过netstat或ss命令可观察当前网络连接,若防火墙开启且规则严格,异常连接应被阻止:
sudo ss -tulnp | grep LISTEN
若仅开放必要端口(如22、80、443等),则防火墙可能已启用;若所有端口均处于LISTEN状态,需结合其他工具进一步判断。
注意事项与常见问题
-
区分“关闭”与“未配置”:防火墙服务未启动(
inactive)与规则允许所有流量(policy ACCEPT)均表示“关闭”,但后者可能存在隐性规则,需通过iptables -L或ufw status verbose确认。 -
操作权限:查看防火墙状态通常需root权限或通过
sudo执行,普通用户可能无法获取完整信息。 -
发行版差异:不同Linux发行版默认防火墙工具不同,需先确认系统环境(如通过
cat /etc/os-release查看发行版信息)。 -
临时与永久配置:部分工具(如firewalld、ufw)的配置分为运行时和永久模式,修改后需重载或启用服务才能使永久配置生效。
在Linux系统中,查看防火墙是否关闭需根据系统选择的防火墙工具采用对应方法:iptables通过iptables -L和service status检查;firewalld使用firewall-cmd --state和systemctl status;ufw则通过ufw status快速判断,结合默认策略、规则列表及系统日志可全面评估防火墙状态,管理员需根据实际需求调整防火墙配置,确保系统安全性与可用性的平衡,掌握这些方法不仅能帮助快速排查防火墙问题,还能为后续的安全加固提供基础支持。



















