生产环境防火墙需兼顾安全、可用、可维护,核心是分层策略与明确边界。通过 zone 机制绑定网卡、按需开放服务端口、使用富规则精细化控制、永久化配置并纳入 iac 流程。

生产环境的服务器防火墙配置不能只图“通”,得兼顾安全、可用、可维护三方面。核心不是堆规则,而是建立分层策略和明确边界。
明确区域划分与接口绑定
firewalld 的 zone 机制是生产部署的基础。别让所有网卡都待在默认 public 区域。
- 对外服务网卡(如 eth0)绑定 public 区域,只放行必要端口(如 443/tcp、22/tcp 限 IP)
- 管理网卡(如 eth1)绑定 trusted 或自定义 mgmt 区域,允许 SSH、Ansible、监控等流量,但禁止从公网路由可达
- 内网通信网卡(如 eth2)绑定 internal 区域,用于数据库、缓存、微服务间调用,按需开放端口(如 5432、6379),并配合富规则限制源 IP 段
服务与端口按需开放,拒绝宽泛放行
避免用 --add-port=8080/tcp 这类裸端口方式,优先使用 service 抽象层或富规则控制粒度。
针对Linux系统,phpStudy团队推出全网首家linux docker容器面板,只要一个命令,快速安装面板,在面板里可以自行选择软件版本,可以方便的进行安全配置,就算没有Linux基础也可以快速搭建和管理PHP服务器环境!
- 用预定义服务:如
sudo firewall-cmd --zone=public --add-service=https --permanent - 自定义服务更稳妥:为应用单独建
/etc/firewalld/services/myapp.xml,明确定义协议、端口、模块 - 临时调试端口必须加源限制:比如开放 6000 端口仅限运维跳板机:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.10.5.0/24" port port="6000" protocol="tcp" accept' --permanent
启用富规则实现精细化访问控制
基础服务开关不够用时,rich rule 是生产环境必备能力,尤其用于日志审计、限速、黑白名单等场景。
- 记录可疑连接:
--add-rich-rule='rule family="ipv4" destination port="22" protocol="tcp" log prefix="ssh-blocked" level="info" limit value="5/m" - 防暴力破解:对 SSH 端口做每分钟 3 次连接限制,超限丢包不响应
- 按角色隔离:比如只允许 app 层 IP 访问 db 层的 3306 端口,其他一律拒绝
固化配置并纳入运维流程
生产环境最怕“改完就忘”或重启失效。所有操作必须永久化、可追溯、可回滚。
- 所有
--add-xxx命令后紧跟--permanent,再执行firewall-cmd --reload - 定期导出当前规则:
firewall-cmd --list-all-zones > /etc/firewalld/rules-backup-$(date +%F).txt - 把防火墙配置纳入 IaC 工具(如 Ansible role 或 Terraform module),与服务器部署联动
- 禁用直接修改
/etc/firewalld/zones/下 XML 文件的手动方式,统一通过firewall-cmd管理










