8. 观测与排障
8.1 攻击日志:每一层拦截都有据可查
所有被拦(或被观察)的请求都会写一条攻击日志,「日志审计 → 攻击日志」。字段含义先对齐:
| 字段 | 说明 |
|---|---|
| 攻击类型 | 死在哪一层:SQL注入 / XSS / CC / 等候室 / 爬虫库…… |
| 动作 | block 拦截 / observe 观察 / challenge 进验证 |
| 客户端 IP | 按站点 client_ip_mode 解析出的真实访客 IP(注意:配错这里日志就是假 IP) |
| 命中规则 | 具体规则名,内置规则和自定义规则都在这里区分 |
| 状态码 | 返回给客户端的 HTTP 状态 |
| URI / UA / Referer / 请求头 | 完整请求上下文 |

详情页是排障主力:它会展示请求值的解码前后对比——WAF 是把 sele%63t、SEL/**/ECT 还原后才判定的,详情页把还原过程摆出来,你能看到「到底哪个特征命中了」。判断误拦,先看这里。

高频筛选姿势
| 你想知道 | 怎么筛 |
|---|---|
| 今天被打得最狠的是哪类 | 顶部统计卡片直接看各类型占比 |
| 某个 IP 什么来头 | 按 client_ip 过滤,看它全部记录的 URI 分布 |
| 新加的 observe 规则效果 | 按命中规则名(自定义规则名)+ 动作 observe 过滤 |
| CC 是不是误伤 | 类型筛 CC,看 client_ip 是不是集中在某个出口(集中 → 8.2 第一步) |
8.2 误拦截排查四步法
用户报「网站打不开 / 操作失败」,别急着关防护,按这四步走:
第一步:确认流量真的在 WAF 后面。请求数有没有涨(仪表盘)、日志里有没有这条请求。都没有 → 不是 WAF 拦的,查源站和 DNS。
第二步:找到那条日志。用时间 + 客户端 IP + URI 在攻击日志里定位。找不到记录 → 也不是 WAF 拦的(WAF 拦截必留痕);去查源站。
第三步:看详情页解码对比,判断是真是误。命中规则名是什么类型?请求值解码后确实有攻击特征(union select、../、script 标签)→ 真拦,恭喜;是正常业务内容(富文本、base64 图片、JSON 报文)→ 误拦,进第四步。
第四步:最小范围放行。按 8.3 的对照表选处理方式。不要为了省事把整站白名单设成「跳过规则」——那等于把 WAF 摘了。
处理方式对照
| 场景 | 正确做法 | 位置 |
|---|---|---|
| 管理后台富文本被 XSS 规则拦 | 白名单:uri 等于 /admin/xxx + 跳过自定义规则 | 5.1 |
| 支付回调进不了 | 白名单:uri 等于 /pay/notify + 跳过验证 | 5.1 |
| 正常用户被 CC 限频 | 先确认 client_ip_mode(4.3),再调阈值或加 nocred 维度 | 5.3 |
| 办公网被爬虫库拦 | 爬虫库删记录 + 建 IP 组白名单防复发 | 7.1 |
| 内置规则误判业务参数 | 白名单精确匹配该请求 + 跳过规则;或临时改业务侧编码 | 6.1 |
8.3 被拦的 IP 怎么解除
分清在哪个名单里,解除方式完全不同:
| 在哪 | 解除方式 |
|---|---|
| 爬虫 IP 库 | 后台手动删除该条,或禁用(保留记录不拦截)。无自动解封 |
| CC 临时封禁 | 轮询超频的短封 10 分钟自动解除,验证通过也会提前解除,不用管 |
| 等候室 | 排到队首自动放行;急事可后台手动插队 |
| 白名单想拦回来 | 禁用对应白名单条目即可,5 秒生效 |
8.4 统计与报表
| 页面 | 内容 | 版本差异 |
|---|---|---|
| 仪表盘 | 实时请求量、今日攻击数、各类型分布 | 一致 |
| 日志分析 | 按批次做深度分析、导出 | 一致 |
指标分析 [Pro] | 多维度 TopN、UV 去重(HLL)、30 天趋势 | 免费版报表只保留 24 小时 |
防线运营 [Pro] | 拦截原因分布、误伤解封率、绕过趋势 | 免费版无 |
统计口径提醒:免费版报表只保留 24 小时,想留趋势数据要么升级 Pro,要么养成每天看一眼仪表盘的习惯——没有历史数据,「最近攻击是不是变多了」就只能靠猜。
8.5 日志保留与磁盘
| 日志 | 位置 | 用途 |
|---|---|---|
| 攻击日志 | 数据库 | 排障主入口,天数在系统设置里配 |
| 审计日志 | 数据库 | 后台操作记录(谁改了什么配置) |
| 引擎错误日志 | runtime/log/engine/ | 引擎自身异常、panic 堆栈 |
| wafd 守护日志 | runtime/log/wafd/ | 进程崩溃、重启、退避记录 |
cron 每天按保留天数清理过期日志。原始访问日志(每个请求的完整记录)只有 Pro 存,免费版只落攻击日志——所以免费版磁盘压力天然小,但出了「没被拦但有问题」的事,没有原始日志可回放,这点要有预期。
下一步:9. 授权与升级