查看文档目录

CC 防护:计数方式与统计

CC 规则在节点上怎么计数:固定窗口与漏桶、阈值落在哪个请求、计数按节点与租户分开、计数器故障时怎么处理,以及统计页命中、触发、挑战、拦截、放行的含义。

工作原理

每个请求依次和网站的 CC 规则比对。条件满足的规则按“统计对象”(客户端 IP、网段、URI、JA4 等)累计次数;超过阈值后执行规则的动作:只记录、返回 429、临时封禁或验证。

判定规则

项规则取值范围
固定窗口时间按窗口长度切成固定段(从整点对齐的绝对时间算起),段内第 N+1 个请求起超限,下一段重新计数窗口 1–3600 秒,次数 1–1000000
漏桶桶容量等于突发数,按每秒速率补充;桶空时的请求超限,超限的请求不进桶速率、突发 1–1000000
验证动作只能用固定窗口;超限后返回验证页,通过后在“免验证时长”内不再验证免验证 60 秒–7 天
临时封禁封禁期内该统计对象的请求都返回 429 并带 Retry-After;按客户端 IP 封禁时,同时在节点内核防火墙上封这个 IP1–86400 秒
计数范围每个节点各自计数,节点之间不汇总;同一节点上不同租户的计数、封禁、验证凭证互不影响—
计数器故障节点计数内存满、被强制逐出或加锁超时:“只记录”规则放行并写错误日志,其他动作的规则返回 503—

计数范围的取舍

计数放在每个节点本地,判定不需要等待网络往返,节点和主控断开时照常工作。代价是:同一来源的请求分散到 K 个节点时,每个节点各自按阈值放行,最多可放行约 K 倍阈值。

需要更紧的总量控制时:

  • 用“攻击自动升级”或线路调度,把受攻击网站收拢到较少的节点;
  • 开启智能自动防御,它按网站学习正常流量,不依赖固定阈值;
  • 按客户端 IP 临时封禁的规则会同时封到节点内核防火墙,封禁期内该 IP 在这个节点上的连接直接被丢弃。

洞察与日志

CC 规则的“统计”页由节点每 10 秒上报一次,按规则累计:

字段含义
命中请求满足规则条件、进入了计数
触发计数超过阈值,或统计对象已在封禁中
挑战触发后返回了验证页
拦截触发后返回了 429 或封禁页
放行验证规则下,访客带着有效凭证或刚通过验证
无 TLS 指纹规则按 JA4 计数,但请求没有 TLS 指纹(明文 HTTP、HTTP/3),这次不计数

触发 = 挑战 + 拦截 + 只记录规则的超限次数。“触发最多的客户端 IP / 路径”只统计触发次数。临时封禁会写进网站拉黑日志;返回 429 和验证页的记录按分钟合并成一行,带次数。

常见问题

阈值设了 100,实际放行远超 100

确认请求落在几个节点上:每个节点各自计数,总放行量约为节点数乘以阈值。固定窗口在段边界前后可以各放行一次阈值,短时间内最多约 2 倍。

统计页“命中”很多但“触发”为 0

说明条件匹配到了请求,但没有统计对象超过阈值。先用“只记录”观察一段时间,按“触发最多的客户端”调整阈值。

正常用户突然收到 503

查看节点错误日志里是否有 CC 计数状态失败。计数内存不足时,非“只记录”规则会拒绝请求,这是为了不在故障时放过攻击;请联系管理员扩大节点内存或减少高基数的统计对象。