WAF 规则基线:上线首周就该开启的防护清单
接入 WAF 后真正决定安全水平的,不是“装了防火墙”这件事,而是你到底开启了哪些规则、又是怎么开的。翻看近两年的漏洞报告会发现,绝大多数被攻破的站点栽在的并不是什么 0day,而是 OWASP Top 10 里反复出现的经典手法:SQL 注入、XSS、命令注入、路径穿越。这些攻击有成熟的检测特征,完全可以在到达应用之前就被挡下。下面这套基线,是给中小站点在网站上线初期设计的一套“够用且不过度”的 WAF 规则方案。
建议启用的核心规则集
| 规则 | 拦截对象 | 建议动作 | 补充说明 |
|---|---|---|---|
| SQL 注入 | 拼接入 SQL 的恶意参数(' OR 1=1-- 等) |
观察 3 天后转阻断 | 配合参数化查询,双重防护 |
| XSS 过滤 | <script>、onerror=、javascript: 等载荷 |
直接阻断 | 注意与 CSP 响应头配合 |
| 命令注入检测 | ;、` |
、$(...)`、反引号等执行符 |
直接阻断 |
| 路径穿越 | ../、%2e%2e%2f 等目录回溯 |
直接阻断 | 防止读取 /etc/passwd 等敏感文件 |
| 恶意爬虫与 UA 限制 | 扫描器、采集脚本、漏洞探测流量 | 观察后转阻断 | 维护一份已知恶意 UA 名单 |
| 高频 IP 限速 | 撞库、刷接口、CC 攻击 | 超过阈值后限速/封禁 | 建议约 60 次/分钟,超限返回 429 |
这套清单基本对应各大托管 WAF 的默认托管规则集,比如 Cloudflare OWASP Core Ruleset、AWS WAF 托管规则组,以及开源的 ModSecurity CRS。你不需要从零写规则,开启对应的托管规则集,再按本站实际情况微调即可。
分阶段上线:观察 → 阻断 → 白名单
直接全开阻断的后果只有一个:深夜被误报告警吵醒,第二天一怒之下把规则全关。更稳妥的做法是分三个阶段推进。
阶段一:观察模式(24-72 小时)。把规则设为仅记录,跑一段时间收集真实的命中情况。重点看两类数据:一是攻击特征明显、几乎不可能是正常流量的命中(比如带 SQL 关键字的请求),二是边界模糊、可能误伤正常功能的命中。观察期内建议至少每天查看一次拦截日志,记下可疑请求的来源 IP、路径和 UA。
阶段二:切换阻断模式。观察期结束后,把高置信度规则(命令注入、路径穿越、SQL 注入)切到阻断,XSS 和恶意 UA 类规则可以再多观察两天。切换后继续盯日志,如果某个页面突然出现大量“被拦截”但其实都是正常用户,说明这条规则需要调整。
阶段三:建立白名单流程。误报不可避免,关键是有流程兜底:用户反馈打不开或登录失败 → 从日志里捞到被拦截的请求 → 判断是误报还是恶意 → 误报则给对应规则加白名单例外,并记录原因,避免白名单越加越宽最后形同虚设。白名单应该精确到具体的规则 ID、URI 和 IP,而不是对整个域名一刀切放行。
一个真实场景
一家做跨境独立站的小团队上线了 WAF,第 3 天日志里出现大量 id=1' AND SLEEP(5)-- 形式的请求,明显是有人拿公开的 SQL 注入扫描器在探测。因为规则已经在阻断模式,这些请求全部被挡在源站之外,业务零影响,只有安全日志里多了一串记录。两周后,又出现一次针对后台登录接口的撞库尝试,被高频 IP 限速拦下,同一个 IP 被封禁后对方就放弃了。这两个例子说明:基线规则解决的是“已知攻击”这个大头,剩下的是持续观察和人工确认。
上线检查清单
- 高置信度规则已切到阻断模式
- 观察期日志有人每天过一遍
- 白名单有申请和审批流程
- 规则变更经过灰度,不在流量高峰直接改
- 告警渠道(邮件/IM)已配置,误报能被及时处理
常见问题
为什么我的 WAF 规则开了,但日志里什么都没拦截? 先确认流量真的走了 WAF——检查源站 IP 是否暴露、DNS 是否指向了 WAF 节点。另一个常见原因是规则作用范围没覆盖到对应路径,比如只对 /wp-admin 生效,攻击者走的是 /api。
阻断模式下误伤了自己的后台怎么办? 这是白名单流程要解决的第一类问题。先在日志里确认被拦的请求特征,再把精确的例外(规则 ID + URI)加进白名单,同时检查后台是否存在暴力破解等真实风险,别把“误伤”和“攻击”混为一谈。
用了云厂商的托管规则集还需要自己写规则吗? 大部分场景不需要。托管规则集覆盖了 OWASP Top 10 的主要攻击面,自己写规则通常用于两类场景:业务特有的防护需求,以及托管规则误报太多时的精细调整。建议先从托管规则集开始,观察一周再决定要不要自定义。
参考:Cloudflare WAF 文档 https://developers.cloudflare.com/waf/
参考:OWASP ModSecurity Core Rule Set https://coreruleset.org/
参考:AWS WAF 托管规则组 https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups.html