规则设计的几条原则
规则质量决定边界防护的实际效果。第一条是默认拒绝:没有明确放行的通信一律阻断,而不是反过来。第二条是最小放行:按实际业务需求放行到协议与服务级别,能写清允许的操作类型就不要只写端口。第三条是可追溯:每条规则要有业务来源、责任人与生效期限,读到规则就能知道是谁为哪件事加的。第四条是双向确认:跨区通信的两个方向分别定义,避免只限制了往外的流量而回程敞开。第五条是可验证:上线前后都要有测试方法,否则无法证明规则按预期生效。
基本信息
| 规则要素 | 源、目的、协议、服务或操作类型、方向、动作、备注、责任人、生效期限 |
|---|---|
| 顺序影响 | 多数设备按顺序匹配并命中即停,规则的先后位置会改变实际结果 |
| 来源依据 | 区域与管道清单、设备通信矩阵、抓包分析结果 |
| 变更流程 | 申请、评审、窗口执行、验证、记录,一步不落 |
| 验证方法 | 对允许的流量确认可达,对禁止的流量确认被阻断并产生日志 |
| 维护要求 | 定期复核命中计数,清理长期未命中的规则与已过期的临时放行 |
从需求到规则的落地步骤
- 从通信矩阵出发:先确定两个区域之间到底有哪几条通信,每条对应哪个业务功能
- 生成规则草案:把通信翻译成设备可执行的规则条目,逐条加备注说明业务用途
- 区分方向:分别写出向外的请求与回程的响应,避免一侧敞开另一侧无限制
- 测试验证:在变更窗口内先观察命中情况,再确认拒绝方向的日志确实产生
- 上线并观察:上线后一段时间内复盘日志,判断是否有合法通信被误拦
- 定期清理:按生效期限与命中计数清理无用条目,保持规则表可读可维护
反模式与正确做法
| 反模式 | 问题 | 正确做法 |
|---|---|---|
| 任意源到任意目的全放行 | 等于没有规则,边界设备退化为普通链路 | 按业务逐条放行,落不到依据的通信不放 |
| 按 IP 段粗放放行 | 同段内所有设备与所有端口一起开放 | 细化到设备与协议服务级别 |
| 只写端口不写协议操作 | 允许该端口上的一切操作,包括写入与控制 | 在设备支持时按协议语义限制操作类型 |
| 临时规则无期限 | 放行条目逐年累积,暴露面持续扩大 | 登记生效期限与责任人,到期自动复核 |
| 只测放行不测拦截 | 规则位置或方向写错时无法发现 | 对拒绝方向做验证并确认产生日志 |
规则上线前建议先以只记录不放行的方式跑一段时间,把实际流量与预期逐条比对:既可能发现漏掉的合法通信,也可能发现没人申报的可疑通信。这个阶段比直接上线安全得多。