在 Linux 系统中,防火墙是保护网络安全的关键组件,不同发行版使用不同的防火墙管理工具(如 iptables
、firewalld
或 ufw
),因此检查方法需根据系统配置选择,以下是详细操作指南:
通用检查方法
- 查看默认防火墙服务
运行以下命令确认系统使用的防火墙工具:sudo systemctl list-unit-files | grep -E 'firewalld|ufw'
- 若输出包含
firewalld.service
或ufw.service
,则表明系统使用对应工具。 - 若无输出,可能使用
iptables
或未安装防火墙。
- 若输出包含
分工具检查防火墙状态
检查 firewalld(CentOS/RHEL/Fedora)
- 查看运行状态:
sudo systemctl status firewalld
- 活动状态:若显示
active (running)
且日志为绿色,表示防火墙已开启。 - 关闭状态:若显示
inactive (dead)
且日志为红色,表示防火墙已关闭。
- 活动状态:若显示
- 直接查询:
sudo firewall-cmd --state
- 输出
running
表示开启;not running
表示关闭。
- 输出
检查 ufw(Ubuntu/Debian)
- 查看状态:
sudo ufw status
- 开启状态:显示
Status: active
并列出规则。 - 关闭状态:显示
Status: inactive
。
- 开启状态:显示
- 详细模式(可选):
sudo ufw status verbose # 显示详细规则
检查 iptables(传统工具,通用)
- 查看规则:
sudo iptables -L -n -v
- 防火墙开启:输出包含具体规则(如
ACCEPT
、DROP
)。 - 防火墙关闭:仅显示空链(如
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
)。
- 防火墙开启:输出包含具体规则(如
- 补充命令:
sudo iptables-save | grep -v '^#' # 过滤注释,仅显示有效规则
特殊情况处理
-
工具未安装:
- 若命令报错(如
command not found
),说明未安装对应工具。 - Ubuntu 默认未安装
firewalld
,可跳过相关检查。
- 若命令报错(如
-
多工具共存:
部分系统同时安装多个工具(如ufw
+iptables
),需逐一检查:sudo ufw status # 检查 ufw sudo iptables -L -n # 检查 iptables
-
服务未运行但规则存在:
若防火墙服务已停止(如systemctl stop firewalld
),但iptables
规则仍可能保留,建议双重验证:sudo iptables -L -n # 确认规则是否生效
常见问题解答
Q1:命令执行需权限怎么办?
- 所有
sudo
命令需输入管理员密码,若无sudo
权限,请联系系统管理员。
Q2:如何临时关闭防火墙?
- firewalld:
sudo systemctl stop firewalld
- ufw:
sudo ufw disable
- iptables:
sudo iptables -F
(清空规则,重启后恢复)
Q3:防火墙显示关闭,但端口仍无法访问?
- 检查其他安全层(如云服务商安全组、SELinux):
getenforce # 查看 SELinux 状态(Enforcing 表示开启)
- 防火墙开启标志:
firewalld
:systemctl status
显示active (running)
或firewall-cmd --state
返回running
。ufw
:ufw status
显示Status: active
。iptables
:iptables -L
输出非空规则链。
- 安全建议:
- 关闭防火墙仅用于调试,完成后请重新启用。
- 生产环境务必保持防火墙开启,仅放行必要端口。
引用说明基于 Linux 官方文档(iptables、firewalld、ufw)及 Red Hat/CentOS、Ubuntu 系统管理指南,命令测试环境为 CentOS 9、Ubuntu 22.04。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6527.html