{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"首页","item":"https://www.clwaf.com/"},{"@type":"ListItem","position":2,"name":"帮助文档","item":"https://www.clwaf.com/help"},{"@type":"ListItem","position":3,"name":"防护配置","item":"https://www.clwaf.com/help/defense"}]}

5. 防护配置

第 4 章把站点接进来了,这一章讲怎么把防护层调到适合你的业务。配置都在「防护规则」菜单下,所有改动写库后引擎 5 秒内自动生效,不需要重启。

5.1 白名单:三种 skip 是三把独立的钥匙

白名单不是「关闭防护」,而是精确声明「某些请求可以跳过哪一层检查」。每条白名单有三个独立开关:

开关跳过什么典型场景
跳过自定义规则(skip_rule)内置攻击规则 + 自定义规则 + 爬虫库已知安全但会被规则误伤的请求,如管理后台的富文本提交
跳过人机验证(skip_challenge)JS 挑战 / 滑块验证支付回调、服务器间调用、App 的 API
跳过 CC 防护(skip_cc)CC 限频与等候室监控探针、高频合法轮询接口

三个开关按需组合,互不影响。只勾「跳过验证」的请求依然会被攻击规则检查——白名单 ≠ 后门。

白名单新增表单

匹配条件

项说明
目标源IP / URI / 路径 / 请求方法 / 请求头 / Cookie / User-Agent / Referer / Host / 请求参数,以及「属于IP组」
算子等于 / 不等于 / 包含 / 不包含 / 包含(忽略大小写) / 正则匹配
生效范围可选单个站点或全局(全局=所有站点)
排序数值越小优先级越高,命中第一条即生效

多条条件可以组合成条件组(and / or 组合),满足「这个 IP 访问这个路径」这类复合放行。

上线前必须做的三条白名单

生产环境接入后立刻检查这三类请求,没有白名单大概率出事:

  1. 支付/业务回调:微信、支付宝等服务器的回调没有浏览器环境,过不了人机验证。按目标 + 值匹配(如 uri 等于 /pay/notify),勾选「跳过人机验证」。不要勾跳过规则,回调依然该被攻击规则检查。
  2. 自己的监控与探针:拨测、可用性监控是高频固定 IP 轮询,会被 CC 限频。加「跳过 CC 防护」。
  3. 公司办公网出口 IP 访问管理后台:后台常有富文本、批量操作,容易被规则误伤。按源 IP 加「跳过自定义规则」。

写错白名单的代价是真实的安全洞:范围宁小勿大,能用 uri 等于 /exact/path 就不要用 path 包含 /pay。

5.2 人机验证:凭证与验证强度

站点上选好防护方式后,验证行为的细节在两处调整。

人机验证记录列表

凭证(安全凭证页)

验证通过后引擎给浏览器签发一个 Cookie 凭证,之后凭它免验证。凭证可以绑定因子——绑定后因子变了凭证就失效:

因子建议状态
源 IP办公网用户出口 IP 可能变化,慎绑;手机流量用户 IP 几乎每会儿都变
User-Agent浏览器升级会换 UA,绑定会强制重新验证一次
JA4 TLS 指纹最强绑定,同浏览器基本不变,防凭证被搬走

凭证相关是全局密钥 + 站点级覆盖:全局有唯一的凭证密钥(改了所有凭证立即失效,相当于全站强制重新验证),每个站点可一键生成自己的配置并开关绑定因子。

验证强度与系统参数(系统设置页)

配置默认说明
0 秒档评分阈值 zsec_pass_score600 秒透明注入模式下环境评分的及格线,误拦多可略降,脚本多可调高
单 IP 最大验证会话数 challenge_max_sessions50000超出后新会话被拒,防会话洪泛
单会话提交次数静默 3 次 / 交互 5 次满了作废会话,且该来源进爬虫 IP 库
挑战 nonce 有效期静默 1/3/5 秒档 = 5/8/10 秒过期作废,防止挑战页被缓存复用
人机验证详情

「人机验证」列表页可以看每一次挑战记录:谁、什么时间、哪个形态、耗时多少、通过与否。验证异常多但全是同一个出口 IP → 大概率是脚本,去第 7 章的爬虫库确认。

5.3 CC 防护:四个维度 + 六种动作

CC 规则回答一个问题:某个维度在某个时间窗口内超过多少次,怎么办。

CC 规则新增

维度(四选一)

维度计数对象适合
ip单个 IP 全站累计最粗粒度的兜底
ip_uri单 IP 访问同一 URI保护登录、短信、查询这类被刷接口,最常用
ip_ua单 IP + 同一 UA穿透「换 IP 不换 UA」或「换 UA 不换 IP」的脚本
ip_url单 IP 访问同一资源路径(不含参数)动态参数接口防刷

适用范围 scope

all 全部请求 / nocred 仅无凭证请求 / cred 仅持凭证请求。推荐对高频接口加一条 nocred 的严格限频:正常访客验证过有凭证,不受影响;脚本没凭证,直接吃限频。

处置动作

动作行为
拦截 block直接拦,写攻击日志
观察 observe只记录不拦,先跑几天看阈值合不合适
等候室排队 waiting_room超额访客进等候室排队,不直接拒
302 跳转 redirect跳到指定 URL(如静态降级页)
人机验证 challenge强制走一次验证流程
放行 pass显式不限频(用于在严格兜底下豁免某类请求)

配置建议

5.4 等候室:高峰期排队而不是 503

秒杀、抢票、突发热点会让瞬时流量冲垮源站。直接 503 用户体验极差,等候室的做法是:超额访客进入虚拟队列,浏览器自动保持心跳,排到队首自动放行。

等候室列表

机制要点:

项行为
排队身份站点内 IP + UA 的稳定哈希——刷新页面不会重新排队,还是原来那个位置
心跳30 秒一次,超时自动出队
放行先进先出,排到队首签发等候室通行 Cookie(名称默认 waf_waiting)
队列容量默认 1000,满了渲染过载页

等候室有两个来源:CC 规则动作选「等候室排队」按规则触发;以及全站兜底——系统设置里的 cc_site_rate(默认 10000 次/窗口)+ cc_site_window,整站请求量超阈值自动开等候室,这是最后一道保命线。

后台「等候室」页可看实时排队列表与统计,支持手动插队和清理陈旧记录;系统每小时清理 24 小时前的过期记录。

5.5 这一层排障速查

现象大概率原因处理
回调方一直收不到结果回调被人机验证拦了白名单加「跳过验证」(5.1 三条白名单)
全站用户突然一起被 CC 拦前面套了 CDN 但 client_ip_mode 没配对回到 4.3 改 IP 判定
正常用户反映「转圈圈」全站兜底等候室触发了看 cc_site_rate 是否低于业务峰值,调高或升配
验证页反复刷新过不去浏览器插件拦了验证脚本,或 UA/指纹因子绑定冲突让用户关插件重试;核对凭证因子绑定

下一步:6. 规则配置

双11 首发 · 限时 5 折
5折
首发专享限量 100 份 · 定金 ¥10 锁名额
日常价 ¥2,998¥1,499首发直降 ¥1,499
距定金截止仅剩
00天00时00分00秒

* 首发价仅限本次双11预售期,明年双11恢复日常价

0.032557s