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从外部扫描,确认无意外开放端口 - 记录每次规则变更原因、时间、操作人,纳入配置审计项
- 服务下线后立即移除对应规则,避免“僵尸端口”长期残留