分布式防火墙是将安全策略下沉至每台节点,使各服务器成为独立“安全哨兵”,通过统一策略分发与本地执行实现纵深防御,适用于微服务、容器集群及跨机房部署。

分布式防火墙不是在一台机器上开多个端口,而是把安全策略下沉到每台节点,让每一台服务器都成为独立的“安全哨兵”。它不依赖中心网关或云平台安全组,而是通过统一策略分发、本地规则执行的方式,在应用层之下构建纵深防御。对微服务、容器集群或跨机房部署尤其关键。
明确部署目标与拓扑层级
先厘清你要保护什么:是整个服务集群(如Nacos+MySQL+应用节点),还是单个服务实例?分布式防火墙的价值体现在“每个节点只管自己”的原则下:
- 核心服务节点(如192.168.100.1上的MySQL、Redis)应严格限制入站IP,仅允许应用节点访问,禁用公网直连
- 应用服务节点(如192.168.100.2/3)需放行来自负载均衡或API网关的流量,同时限制管理端口(如SSH)仅允许可信运维IP
- 跳板机或堡垒机必须启用连接跟踪与速率限制,防止暴力破解
选用适配分布式场景的工具链
单一iptables脚本难以同步和审计,firewalld的zone机制天然支持角色化配置,而nftables的集合(set)和映射(map)更适合动态IP白名单。推荐组合:
- CentOS/RHEL 8+ 或 Fedora:用 firewalld + 自定义zone + firewall-offline-cmd 预生成规则,配合Ansible批量推送
- Ubuntu 22.04+ 或容器宿主机:用 nftables 直接管理,利用ipset等价的nft set实现跨节点IP组同步
- 避免混用ufw与firewalld,二者底层冲突;也不建议在生产环境长期使用 iptables-legacy
统一策略建模与分发机制
不能靠人工逐台敲命令。应将防火墙策略视为基础设施代码(IaC):
- 定义YAML策略模板,例如:zone: app-node → service: http, https → source: 10.0.0.0/16, 192.168.100.100/32
- 用Ansible或SaltStack调用 firewall-cmd --permanent 命令生成 /etc/firewalld/zones/ 下的自定义zone文件
- 所有节点执行 firewall-cmd --reload 后,策略立即生效且不中断已有连接
- 关键端口(如MySQL 3306、Nacos 8848)务必配合 --timeout 参数做临时开放,调试完成后自动回收
监控与策略一致性校验
分布式意味着“看不见的差异”。上线后必须验证每台节点规则是否一致:
- 定期运行 sudo firewall-cmd --list-all-zones | grep -E "(ports|services|sources)" 输出结构化日志
- 用脚本比对各节点输出哈希值,异常节点自动告警
- 开启firewalld日志(sudo firewall-cmd --set-log-denied=all),日志落盘至集中ELK系统,便于溯源攻击路径
- 禁止使用 systemctl stop firewalld,应改用 --remove-service=ssh 等精细化关闭,保留基础防护能力











