在Linux系统中,防火墙是保障服务器安全的重要屏障,它通过控制网络访问规则来防止未授权的访问和恶意攻击,在某些特定场景下,如开发调试、内网环境或安全策略临时调整时,可能需要查看防火墙的运行状态,判断其是否已关闭,本文将详细介绍在主流Linux发行版中如何查看防火墙状态,涵盖不同工具和命令的使用方法,以及相关注意事项。

使用systemctl命令(适用于Systemd系统)
现代Linux发行版(如CentOS 7+、Ubuntu 16.04+、Debian 8+等)大多采用Systemd作为初始化系统,防火墙服务通常通过systemctl命令进行管理,以firewalld(CentOS/RHEL默认)和ufw(Ubuntu默认)为例,具体操作如下:
检查firewalld服务状态
在CentOS、RHEL等基于Red Hat的系统中,默认防火墙是firewalld,通过以下命令可查看其运行状态:
systemctl status firewalld
执行后,若输出中包含“Active: active (running)”,则表示防火墙已开启;若显示“Active: inactive (dead)”,则表示防火墙已关闭,可通过以下命令查看防火墙的默认区域和规则:
firewall-cmd --state
该命令会直接返回“running”或“notrunning”,快速判断防火墙状态。
检查ufw服务状态
在Ubuntu、Debian等系统中,默认使用ufw(Uncomplicated Firewall),通过以下命令查看状态:
ufw status
若输出为“Status: active”,则防火墙开启;若为“Status: inactive”,则已关闭,也可使用systemctl命令:
systemctl status ufw
通过观察“Active”字段的值即可确认服务状态。
使用service命令(适用于传统SysVinit系统)
对于较旧的Linux发行版(如CentOS 6、Ubuntu 14.04等),仍使用service命令管理服务,以iptables(传统防火墙工具)为例:

检查iptables服务状态
service iptables status
若输出显示防火墙规则(如“Table: filter”“Chain INPUT (policy ACCEPT)”等),则表示防火墙已开启;若提示“iptables: unrecognized service”或无规则输出,则可能未安装或已关闭。
检查ip6tables服务状态(IPv6防火墙)
service ip6tables status
操作方式与iptables类似,用于检查IPv6相关的防火墙规则。
直接检查防火墙规则
无论使用何种防火墙工具,直接查看当前生效的规则是判断防火墙状态的最直接方法。
查看iptables规则
iptables -L -n -v
-L:列出所有规则链-n:以数字形式显示IP和端口,避免DNS解析延迟-v:显示详细信息,如数据包和字节数
若输出中所有链的默认策略(policy)为“ACCEPT”且无任何规则,或规则链为空,则防火墙可能未生效,若存在规则且默认策略为“DROP”或“REJECT”,则防火墙已开启。
查看firewalld规则
firewall-cmd --list-all
该命令会显示当前区域的默认规则、允许的服务、端口等信息,若输出为空或默认目标为“ACCEPT”,则需结合--state命令进一步确认。
查看ufw规则
sudo ufw status verbose
verbose参数会显示规则的详细信息,包括方向(ALLOW/DENY)、协议、源地址等,若规则列表为空且状态为“inactive”,则防火墙已关闭。
检查防火墙开机自启状态
防火墙的当前运行状态与开机自启状态可能不同,即使当前关闭,若设置为开机自启,系统重启后会自动开启,可通过以下命令检查:
Systemd系统
systemctl is-enabled firewalld # firewalld systemctl is-enabled ufw # ufw
输出为“enabled”表示开机自启,“disabled”表示禁用。

SysVinit系统
chkconfig iptables on # 检查是否开机自启 chkconfig --list iptables # 查看所有运行级别的启动状态
常见问题与注意事项
-
防火墙工具差异:不同Linux发行版默认防火墙工具不同,需先确认系统使用的工具(如
firewalld、ufw、iptables),避免命令不兼容。 -
权限问题:查看防火墙状态通常需要root权限,普通用户需使用
sudo执行命令,例如sudo ufw status。 -
规则与状态的一致性:即使防火墙服务已启动,若规则中允许所有流量(如默认策略为
ACCEPT且无限制规则),实际效果等同于“关闭”,需结合规则内容综合判断。 -
云服务器安全组:在云环境中(如AWS、阿里云),服务器的安全组功能可视为“云防火墙”,需通过云平台控制台查看,而非本地命令。
-
防火墙日志:若需要详细审计访问记录,可查看防火墙日志:
firewalld:journalctl -u firewalldufw:cat /var/log/ufw.logiptables:cat /var/log/messages | grep iptables
在Linux系统中查看防火墙是否关闭,需根据系统版本和使用的防火墙工具选择合适的命令,对于Systemd系统,systemctl status和firewalld/ufw专用命令最为便捷;对于传统系统,service和iptables命令仍是常用工具,直接查看规则和开机自启状态可全面掌握防火墙配置,无论何种场景,都需注意权限控制和工具差异,确保判断准确,防火墙的安全管理需谨慎操作,建议在修改状态前备份现有规则,避免误操作导致安全风险。
















