**问题:如何查看firewalld当前配置的防火墙规则策略?**
在Linux系统中,`firewalld` 是一个动态管理防火墙的服务,广泛用于CentOS、RHEL等发行版。为了排查网络连通性问题或进行安全审计,系统管理员常常需要查看当前 `firewalld` 已配置的规则策略。那么,如何通过命令行快速查看 `firewalld` 的当前区域、服务、端口、以及具体的iptables规则?常用命令如 `firewall-cmd --list-all` 和 `iptables -L -n` 是否能完整展示所有规则?是否存在更详细的查看方式或需要注意的事项?
1条回答 默认 最新
小小浏 2025-07-14 23:05关注一、firewalld基础概念与查看命令
firewalld是 Linux 系统中一个动态管理防火墙的工具,它支持区域(zones)和服务(services)的概念。管理员可以通过firewall-cmd命令行工具来查询和配置当前规则。- 查看默认区域:
firewall-cmd --get-default-zone - 查看当前活动区域:
firewall-cmd --get-active-zones - 查看指定区域的详细信息:
firewall-cmd --zone=public --list-all
这些命令可以快速获取当前防火墙的区域划分、服务开放情况以及端口策略等基本信息。
二、深入理解 firewalld 的规则结构
firewalld实际上是基于iptables或nftables构建的一层抽象接口。因此,最终生效的规则仍由底层的iptables或nftables控制。命令 描述 firewall-cmd --list-all列出默认区域的所有配置项(服务、端口、伪装等) firewall-cmd --list-services仅列出当前区域允许的服务 firewall-cmd --list-ports仅列出当前区域开放的端口 iptables -L -n查看实际生成的 iptables 规则列表 需要注意的是:
firewall-cmd --list-all并不能显示所有底层规则,例如通过直接规则(direct rules)或 rich rules 添加的复杂策略不会在此显示。三、查看更详细的防火墙规则方式
为了获得更完整的规则信息,特别是那些非标准方式添加的规则,可使用以下方法:
- 查看所有区域的完整配置:
firewall-cmd --get-zones | xargs -I {} firewall-cmd --zone={} --list-all - 查看 rich rules:
firewall-cmd --list-rich-rules - 查看 direct 规则:
firewall-cmd --direct --get-all-rules - 查看运行时配置文件: 查看
/etc/firewalld/目录下的 XML 配置文件 - 使用 nftables 工具查看规则:
nft list ruleset(适用于使用 nftables 后端的系统)
# 示例:查看 rich rule firewall-cmd --list-rich-rules rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept四、注意事项与最佳实践
在查看和分析
firewalld防火墙规则时,需注意以下几点:- 确保你正在查看的是当前运行时的配置,而非静态配置文件。
- 不同后端(iptables vs nftables)生成的底层规则格式不同,应根据系统环境选择合适的查看方式。
- 使用
--permanent参数查看持久化配置前,建议先执行firewall-cmd --reload来同步运行时与永久配置。 - 对于安全审计,推荐结合日志分析(如
journalctl -u firewalld)来定位规则匹配情况。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 查看默认区域: