WAF的观察模式是什么?为什么新规则要先观察

速读摘要:观察模式是"只记录不拦截"的运行状态,用于新规则上线前的安全测试。正确节奏是:观察 3-7 天导出命中清单人工核对 → 确认无误报后切验证模式 3 天 → 观察用户体验 → 最后切拦截模式。这套流程能最大限度避免规则上线就把业务打挂。
WAF 的观察模式是什么?
WAF 防护策略与调优篇 · 第 54 问 · 主机吧 WAF 知识库

一、观察模式的本质

观察模式下,WAF 照常匹配规则、记录日志,但不执行任何拦截动作。请求该过还是过,只是会在日志里标记”这条请求命中了规则 X”。

观察模式:
  请求 → 规则匹配 → 命中 → 记录日志 → 放行 ✅

拦截模式:
  请求 → 规则匹配 → 命中 → 记录日志 → 拦截 ❌

二、为什么必须先观察

新规则上线最难预测的是”误报率”。一条看起来合理的规则,可能因为某个业务场景的特殊性,把大量正常请求拦下来。

比如你加了一条”URI 包含 admin 就拦截”的规则,感觉很安全。结果发现你的博客文章 URL 里恰好有 “administer” 这个词,导致所有相关文章都 404 了——这种问题只有在观察模式下才能提前发现。

三、标准上线节奏

阶段一:观察期(3-7 天)

动作:
  ├─ 规则模式设为"观察"
  ├─ 持续采集命中日志
  └─ 每天导出命中清单

输出:
  ├─ 命中总数:3,254 次
  ├─ 命中源 IP:1,203 个(多为境外 IDC)
  ├─ 命中 URI:主要集中在 /wp-login.php
  └─ 其中明显是正常业务:12 次 ← 这就是误报!

阶段二:人工核对

把命中清单按 URI、源 IP、UA 分类,逐类判断:

命中特征判断处置
境外 IDC IP + 敏感路径攻击放行拦截
真实浏览器 UA + 业务页面误报调整规则
空 UA + 高频脚本放行拦截
自家办公 IP误报加入白名单

阶段三:验证期(3 天)

确认误报已处理后,从”观察”改为”验证”模式(触发验证码而非直接拦截)。这是更温和的过渡——即使有残留误报,真人用户也能通过验证继续访问。

阶段四:拦截期

验证期用户的投诉量为 0,就可以切到拦截模式了。

四、观察模式的其它用途

  • 接管新站点:刚接入 WAF 时先全站观察,摸清流量特征
  • 业务改版后:新版可能有新接口,先观察再放行
  • 大促前:试跑新的限速规则,看会不会影响正常下单
  • 安全事件复盘:观察模式回放攻击特征,验证规则有效性
  • 厂商规则更新后:新版本规则库先观察一轮

五、观察期要重点看什么

观察期检查清单:
  □ 命中总量是否合理(占总请求 < 5% 较正常)
  □ 命中的 URI 里有没有业务关键页面
  □ 命中的 IP 里有没有搜索引擎爬虫
  □ 命中的 IP 里有没有办公网络 / 合作方
  □ 命中的 UA 里有没有真实浏览器
  □ 命中时间是否集中在业务高峰(正常用户多)
  □ 是否有大量来自同一网段的命中

六、常见错误

  1. 跳过观察期直接拦截 → 极易造成业务事故
  2. 观察期太短(<1 天)→ 覆盖不到完整业务周期
  3. 只看命中数量不看内容 → 忽略了误报细节
  4. 观察期后不记录基线 → 后续无法对比评估
  5. 所有规则一起上线 → 出问题无法定位是哪条

七、小结

观察模式是 WAF 上线的”安全气囊”。任何新规则、新策略、新站点都应该经过”观察 → 验证 → 拦截”三段式上线,用几天的时间成本换取业务零中断。这一条纪律,比任何高深的规则技巧都更重要。

给TA打赏
共{{data.count}}人
人已打赏
在线客服
在线客服
热线电话
QQ客服
电子邮箱
suduwangluo