区域防火墙
用区域模型而不是接口模型组织防火墙策略,让规则表按业务域排列,新增一条策略要能一眼看出它属于哪一片。
区域模型
防火墙策略的组织方式只有两种能活下来:按接口或者按区域。按接口的方式在网络长到二十条链路之后就废了——策略表里全是 ethernet1/3 → ethernet1/7,没人记得这两块网卡对应哪个业务。
按区域的做法是把接口挂进命名区域,策略写成 财务 → 办公:
zone trust 内网办公与业务区
zone dmz 对外服务区
zone untrust 非可信区(互联网、第三方专线)
zone management 设备管理口,只放行运维跳板机
trust → untrust 一条默认拒绝,untrust → trust 一条默认拒绝,trust → trust 按需放行。先写默认拒绝,再开例外,顺序反过来就会攒出一堆互相遮挡的规则。
边界上只做三件事
防火墙不是用来做精细业务逻辑的。放在边界上的设备只应该负责:
- 拒绝 —— 默认拒绝,例外显式。
- 转换 —— 源地址转换(出)、目的地址转换(入)、端口映射。
- 记录 —— 每条被拒绝的流量都要能查到。
业务逻辑、鉴权、审计应该放在更靠内的位置。在防火墙上堆业务规则,等于把网络拓扑和业务流程绑死在一起,改一个流程要动防火墙。
NAT 的三种形态
| 形态 | 用在哪 | 注意 |
|---|---|---|
| 源 NAT(出) | 内网访问互联网 | 一定要有会话表老化时间,默认 3600 秒通常不够跑长连接 |
| 目的 NAT(入) | 对外发布内网服务 | 发布面收窄到具体端口,别整段映射 |
| 静态双向 | 三方专线对接 | 两侧都要写,否则回程流量走不通 |
出向 NAT 最容易漏的一条:DNS 要显式放行。内网机器全靠内网 DNS 解析,忘了把 DNS 服务器放进出向允许列表,表现为「上了网但什么都打不开」,且只在断网重连后出现。
变更纪律
防火墙变更和代码变更适用同一条纪律:不留只进不出的调试规则。真要临时开一条,写上工单号和失效日期,到期清理。绝大多数被攻破的边界,都是从一条「临时开三天」开的口子开始的。