Linux防火墙安全策略的核心是最小暴露,即从零开始只放行必需通信路径,通过区域划分、端口限制、来源控制及持续验证实现风险收敛。

Linux防火墙安全策略的核心是“最小暴露”,不是把所有端口都打开再慢慢关,而是从零开始,只放行真正需要的通信路径。它背后是风险控制逻辑:每多一个开放端口,就多一个潜在攻击入口;每多一条宽松规则,就多一分被绕过或误配的风险。
明确服务边界,先画出通信图谱
在写任何一条规则前,先回答三个问题:
- 哪些外部IP或网段需要访问这台服务器?(如运维跳板机、API调用方)
- 它们要访问什么服务?(如SSH、HTTPS、特定API端口)
- 这些服务是否必须监听在公网接口上?能否绑定到内网地址或本地回环?
例如,Web服务器只需对外提供443端口,管理端口22应仅允许来自192.168.10.0/24网段的连接,数据库端口3306则完全不暴露到外网——这类判断直接决定规则粒度和区域划分。
firewalld中落实最小暴露的实操要点
使用firewalld时,“区域(Zone)”是实施最小暴露的关键载体:
- 将公网网卡(如eth0)设为public区域,该区域默认拒绝非白名单服务
- 将管理网络接口(如eth1)设为trusted或internal区域,仅在此区域开放SSH、Ansible端口等管理服务
- 禁用default区域的自动服务发现,不用
--add-service=ssh这种宽泛方式,改用--add-port=22/tcp并配合--source=192.168.5.0/24限定来源 - 避免使用
--permanent后不--reload,未重载的规则不会生效,容易误以为已关闭某端口
iptables层面的最小化加固动作
若仍用iptables(如老旧系统或容器宿主机),需手动构建防御基线:
- 默认策略设为
DROP:iptables -P INPUT DROP、-P FORWARD DROP - 只放行必要链路:回环通信、已建立连接、指定端口+来源IP(如
-s 203.0.113.45 -p tcp --dport 443 -j ACCEPT) - 显式拒绝高危端口扫描行为:用
ipset或recent模块限制新连接频次,防暴力试探 - 出站也设限:禁止服务器主动连接未知C2域名或非常用端口,防止失陷后横向渗透
持续验证与收敛机制不能少
最小暴露不是配置一次就结束,而是需要闭环管理:
- 每月运行
firewall-cmd --list-all-zones或iptables -L -n -v核对实际生效规则 - 用
nmap -sS -p- 目标IP从外部扫描,确认无意外开放端口 - 记录每次规则变更原因、时间、操作人,纳入配置审计项
- 服务下线后立即移除对应规则,避免“僵尸端口”长期残留










