WAF自定义规则怎么配?从入门到实战示例

速读摘要:WAF 自定义规则由四要素构成——匹配对象(URI/头/参数)、匹配方式(包含/正则/等于)、附加条件(IP/频率/地域)、处置动作(拦截/验证/限速)。本文给出规则配置的四步法,并用 5 个可直接套用的实战规则示例讲清写法。
WAF 自定义规则怎么配?
WAF 配置与管理篇 · 第 41 问 · 主机吧 WAF 知识库

一、为什么要用自定义规则

内置规则库覆盖面广,但每个业务的”正常”和”异常”都不一样。比如同样是”单 IP 每秒 50 次请求”,对图片站是正常,对登录接口就是攻击。自定义规则就是让你按自己的业务特征做精细化防护。

二、规则的四个构成要素

2.1 匹配对象

对象说明典型用途
URI 路径请求的 URL 路径保护后台路径、敏感接口
请求方法GET/POST/PUT/DELETE限制危险方法
请求头UA、Referer、Cookie 等拦截空 UA、异常来源
请求参数URL 参数、表单、JSON 体检测注入特征
源 IP访客 IP 或网段黑白名单

2.2 匹配方式

  • 包含(contains):文本包含某关键字,最简单高效
  • 等于(equals):完全匹配,精度最高
  • 正则(regex):灵活但性能开销大,慎用复杂表达式
  • 前缀/后缀:匹配路径开头或结尾

2.3 附加条件

单一条件容易误杀,叠加条件能大幅提升精度:

条件组合示例:
  URI 包含 /admin
  AND 源 IP 不在白名单
  AND 单 IP 每分钟请求 > 20
  → 拦截

2.4 处置动作

动作效果适用
拦截返回 403/自定义页面确定是攻击
JS 验证弹出 JS 挑战疑似脚本,让真人通过
验证码图形/滑块验证登录接口、表单提交
限速限制请求频率资源消耗型接口
观察只记录不拦截新规则上线前测试

三、五条实战规则

规则 1:保护后台路径

名称:后台路径防护
匹配:URI 包含 /wp-admin 或 /wp-login.php
条件:源 IP 不在办公网白名单
动作:拦截(返回 404 而非 403,隐藏存在性)
说明:WordPress 后台常被爆破,隐藏比报错更安全

规则 2:限制登录接口频率

名称:登录接口限速
匹配:URI 等于 /wp-login.php 或 /api/login
条件:单 IP 每 60 秒请求 > 5 次
动作:验证码 + 封锁 10 分钟
说明:有效防止密码爆破,又几乎不影响正常用户

规则 3:拦截空 UA 可疑请求

名称:空 UA 拦截
匹配:User-Agent 为空或长度 < 5
条件:URI 不包含 /api/(API 走 Token 鉴权)
动作:拦截
说明:正常浏览器不会发空 UA

规则 4:保护敏感文件

名称:敏感文件防护
匹配:URI 包含 .env / .git / .sql / .bak / phpinfo
动作:拦截并记录 IP
说明:这类请求 100% 是扫描,直接封

规则 5:限制下载接口滥用

名称:下载接口限速
匹配:URI 前缀 /download/
条件:单 IP 每 60 秒 > 10 次 或 单日 > 500 次
动作:限速 + 超限拉黑 1 小时
说明:防止下载站被当作免费带宽池

四、配置的通用路径

控制台 → 防护配置 → 自定义规则 → 新建规则
  ├─ 规则名称:给个一眼能看懂的名字
  ├─ 匹配条件:设置 URI/头/参数条件
  ├─ 附加条件:加频率、IP、地域限制
  ├─ 处置动作:先选"观察"跑 3 天
  └─ 生效域名:选择适用域名

五、避坑指南

  1. 新规则先”观察”运行 3 天,导出命中清单人工核对再切拦截
  2. 正则表达式避免贪婪匹配和嵌套量词,容易导致性能问题
  3. 规则从上到下匹配,把高频规则放前面可减少开销
  4. 不要用规则去拦搜索引擎爬虫(百度、Google),会掉收录
  5. 规则数量控制在合理范围(一般 < 50 条),过多影响性能

六、小结

自定义规则是 WAF 从”通用防护”走向”贴合业务”的关键。掌握”对象 + 方式 + 条件 + 动作”四要素,配合”先观察后拦截”的上线纪律,就能配出既严密又不误伤的规则。

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