6. 规则配置
6.1 内置攻击规则:9 类 114 条,开机即生效
内置规则编译在引擎二进制里,不落库、不可增删改,启动时一次性编译,运行时只匹配。装好就有,不需要你开启:
| 类别 | 条数 | 覆盖的典型攻击 |
|---|---|---|
| SQL 注入 | 20 | 联合查询、堆叠注入、报错/时间盲注、文件读写、information_schema 探测 |
| XSS | 12 | script 标签、事件属性、伪协议、data URI(含 base64 解码判定)、iframe |
| 命令注入 | 13 | 分隔符 + 系统命令、$( )、反引号、${IFS}、反弹 shell |
| 文件包含 | 12 | ../ 穿越编码变体、/etc/passwd、.env/.htaccess、php:// phar:// |
| SSRF | 6 | 非 HTTP 协议、内网段、回环、云元数据地址 169.254.169.254 |
| 模板注入 | 14 | Jinja2 / SpEL / EL / JNDI / Smarty / Twig / FreeMarker |
| 反序列化 | 12 | Java rO0AB、PHP O:/a:、Python pickle、__proto__ |
| WebShell | 13 | 危险扩展名(仅上传目录深检)、PHP/ASP/Java 木马特征 |
| 信息泄露 | 12 | .git/.svn、.env、备份文件、phpinfo.php(只判 URL 路径) |
为什么它误报率可控
两个机制值得知道,排障时能解释很多现象:
- 匹配前先规范化:请求值会经过连续 URL 解码(最多 4 层)→ HTML 实体解码 → 去
/**/注释噪声 → 去 NUL → 转小写 → 压缩空白,然后才进正则。所以sele%63t、SEL/**/ECT这种花式绕过会被还原后命中——也意味着有些含特殊字符的正常参数会被解码后误判,这就是白名单存在的意义。 - 聪明的豁免:身份型参数(加密 ID 类)豁免检测,SSRF 只对 URL 型参数判定,WebShell 深检只对上传目录生效。这些是防误报设计,不是漏洞。
内置规则误伤了怎么办
内置规则没有「仅记录」开关,命中即拦。两条出路:
- 白名单 + 跳过规则:精确匹配被误伤的请求(URI + 参数组合),只对这个请求放行——范围最小、最可控
- 重写业务请求:比如富文本内容 base64 后再提交,绕开特征匹配(临时方案,不推荐长期)
误伤的具体规则名在攻击日志详情里能看到(rule_name),拿它去核对是哪一类特征。
6.2 自定义规则:你自己的业务策略
自定义规则是「条件 → 动作」的映射,用来表达内置规则覆盖不了的业务逻辑。

条件
| 项 | 说明 |
|---|---|
| 目标 | 源IP / URI / 路径 / 请求方法 / 请求头 / Cookie / User-Agent / Referer / Host / 请求参数 + 属于IP组 |
| 算子 | 等于 / 不等于 / 包含 / 不包含 / 包含(忽略大小写) / 正则匹配 |
| 条件组 | 多个条件组成一组(组内 and),多个组之间再 and / or |
[Pro] 目标 | Content-Type / 内容长度 / X-Forwarded-For / 请求体 / 查询参数 |
[Pro] 算子 | 存在 / 不存在 / 为空 / 长度等于/大于/小于 / 前缀 / 后缀 / 数值大于/小于 |

动作(六种)
| 动作 | 行为 | 用途 |
|---|---|---|
拦截 block | 直接拦 | 封路径、封明显恶意 UA |
人机验证 challenge | 强制走一次验证 | 可疑但不想直接拒的流量 |
302 跳转 redirect | 跳指定 URL | 扫描器全跳到一个「你已违规」页 |
观察 observe | 只记录、放行 | 新规则上线前的灰度,先跑几天看攻击日志里命中多少 |
等候室 waiting_room | 排队 | 突发流量按条件分流 |
放行 pass | 放行并跳过后续规则层 | 组合兜底场景 |
灰度上线的标准流程
- 写好规则,动作选观察,启用
- 跑 1-2 天,去攻击日志按规则名筛选,看命中量、看
client_ip分布 - 命中的确实是该拦的 → 把动作改成拦截
- 命中的有正常用户 → 加条件收窄范围,重复第 2 步
observe的请求也会写进攻击日志(动作列显示 observe),所以「观察」不等于「没效果」,它有完整数据可回看。
排序
sort 数值越小越先匹配。同一条请求可能命中多条自定义规则,按排序依次执行(pass / block 之后的规则不再生效)。
6.3 IP 组:批量 IP 的复用单元
IP 组就是一批 CIDR 网段或单 IP 的命名集合,给白名单和自定义规则用「属于IP组 / 不属于IP组」引用。

| 要点 | 说明 |
|---|---|
| 格式 | 单 IP(203.0.113.7)或 CIDR(203.0.113.0/24),一行一个 |
| 引用 | 规则条件的算子选「属于IP组」,值选组 ID |
| 复用 | 办公网出口、CDN 回源段、合作伙伴 IP 段这类多处使用的集合,建一次到处引用 |
| 删除 | 删除前系统会检查引用,有规则在用会提示,避免规则静默失效 |
典型用法:把公司所有出口 IP 建成「办公网」组 → 管理后台加白名单「源IP 属于办公网组 → 跳过自定义规则」。
6.4 云规则库 [Pro]
云平台维护一套与本地自定义规则同构的规则(新爆发攻击的紧急特征、常见业务场景策略),Pro 引擎可订阅:
- 按适用版本下发,云平台会过滤掉免费版不支持的 Pro 专属算子,免费版可订阅基础规则(上限 10 条)
- 引擎用
sync_ver单调递增做增量同步,5 秒轮询生效,与本地规则一个待遇 - 云规则在自定义规则列表里有独立标识,可以停用但不能改内容——要改就复制一条本地规则
下一步:7. 爬虫治理