系统防火墙需对齐业务逻辑,通过服务名管理、ip白名单、富规则行为控制及云安全组分层防御实现精细化防护,并务必验证永久规则与运行时一致性及真实链路通断。

系统防火墙要真正支撑业务级安全防护,不能只开几个端口、放行几条服务。关键在于把网络策略和业务逻辑对齐——比如区分用户身份、访问时段、源IP可信度、协议行为特征,而不是简单按端口或IP粗放管控。
明确业务场景再定规则粒度
先梳理清楚业务真实路径:是Web应用(需HTTP/HTTPS+CSRF校验)、数据库直连(需限制特定IP段+连接数)、还是API网关(需JWT头识别+限流)?不同场景对应不同防护深度:
- 对外Web服务:优先用firewalld的服务名(如
--add-service=https),而非硬写--add-port=443/tcp,便于后续统一维护 - 后台数据库(如MySQL):必须绑定源IP白名单,例如
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.20.30.0/24" port port="3306" protocol="tcp" accept' - 含动态端口的协议(如FTP被动模式):需加载内核模块
modprobe nf_conntrack_ftp,并启用firewalld的ftp服务,否则仅开放21端口仍无法传输数据
用富规则(Rich Rules)实现行为级控制
firewalld的rich rule支持基于时间、来源、协议字段做判断,比基础端口规则更贴近业务需求:
- 限制非工作时间访问管理后台:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.5.0/24" port port="8080" protocol="tcp" log prefix="admin-access" limit value="1/m" audit accept',再配合log和limit防暴力探测 - 只允许特定User-Agent访问API:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.45" port port="8000" protocol="tcp" tcp flags="syn" dport="8000" connbytes="0-1000" accept'(需配合应用层WAF做UA校验,防火墙仅作初步分流) - 阻断已知恶意IP段:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="185.142.224.0/22" reject'
云环境必须叠加安全组与本地防火墙
在阿里云、AWS等平台,流量先经过云厂商安全组,再抵达系统防火墙。两者不是替代关系,而是分层防御:
- 安全组:做第一道粗筛,只放行必需的公网入口(如443、22),范围尽量小(如限定某几个办公IP)
- 本地firewalld:做第二道细控,处理内网通信、协议行为、日志审计等,例如禁止内网节点随意访问数据库端口
- 特别注意:安全组不生效时,别急着调本地防火墙——先确认ECS实例绑定的安全组是否已更新、是否误选了“默认安全组”
验证不能只看命令返回,要测真实通路
配置完别只信firewall-cmd --list-all,必须走完整链路验证:
- 查永久规则落盘:
firewall-cmd --permanent --list-rich-rules - 查运行时是否加载:
firewall-cmd --list-rich-rules(二者不一致说明漏了--reload) - 从真实客户端发起请求:
curl -I https://your-app.com/api/health或telnet your-server 3306,观察响应码或连接状态 - 查日志确认拦截效果:
sudo journalctl -u firewalld | grep "DROP\|REJECT"











