站点 Logo
16

CC 防护 & POST 泛洪基线算法升级

👑·2小时前

一、CC 自适应基线 v3

之前的问题

旧版基线算法将每个 IP 的请求数按固定的 60 秒时间桶取峰值,再换算成"每秒请求率"(rps),最后乘以检测窗口还原为请求数。

这个流程有一个本质性的偏差:桶大小和检测窗口不对齐

举例来说,如果你的 CC 检测窗口设为 10 秒,但算法是在 60 秒桶里取峰值再除以 6 来估算 10 秒的量——一个用户在 10 秒内集中发送 8 次请求的突发行为,被 60 秒桶平均后变成了 1.3 次/10 秒。真实的突发访问模式在这个转换中被抹平了。

现在怎么算

v3 算法做了一个直觉上很简单但效果显著的改动:用你实际配置的检测窗口大小来切分时间桶

具体流程:

  1. 取最近 3 天的访问日志
  2. 排除已知攻击 IP(近 24 小时被自动封禁的 + WAF 标记的攻击源)
  3. 排除扫描器(4xx/5xx 错误率超过 50% 的 IP)
  4. 按你配置的检测窗口(如 10 秒)切分时间桶
  5. 统计每个 IP 在所有时间桶中的最高请求数(峰值)
  6. 对所有 IP 的峰值取 p99 百分位

最终的 p99 含义变得非常直接:99% 的正常用户,在任意一个检测窗口内的请求数都不超过这个值

基线 = p99 峰值 × 安全余量倍数

不再需要 rps → 请求数的来回转换,算出来就是节点直接用的阈值。

实际效果

以一个检测窗口为 10 秒的站点为例:

场景 旧算法基线 v3 基线
正常浏览用户(偶尔集中刷新) 可能偏低,漏放突发 精确捕捉 10 秒内的真实峰值
API 对接方(持续稳定调用) 基本准确 基本一致
低速慢速攻击(1-2 rps 持续) 可能被 60 秒桶吸收 在 10 秒桶内更容易暴露

二、POST 泛洪基线 — 自动站点分档

之前的问题

POST 泛洪的基线算法和 CC 共用同一套参数,没有区分站点类型。这带来两个问题:

  • API 站点被误伤:正常的 webhook 回调、数据提交可能达到每秒数十次 POST,但硬上限按普通网站设置,把合法流量当作异常截断
  • 内容站点防护太松:博客、企业官网几乎没有 POST 流量,旧的下限值却允许每分钟 30 次 POST 不触发任何防护

现在怎么算

系统根据你在 POST 泛洪防护面板中选择的站点类型,自动匹配一组专属的防护参数:

站点类型 峰值上限 最低阈值 适用场景
普通网站 1.5 req/s 较严格 企业官网、博客、CMS,POST 主要是表单提交和登录
API 服务 5 req/s 较宽松 前后端分离、小程序后端、webhook 接收
聊天室/即时通讯 8 req/s 宽松 消息收发密集,正常 POST 频率本身就高
网盘/文件上传 3 req/s 适中 请求频率不高但单次体积大

每种类型的峰值上限和最低阈值都是针对性调校的。不再用一组参数硬套所有站点。

如果你没有选择站点类型,系统会根据站点近 3 天的 POST 流量占比自动判定——但建议主动选择,比自动检测更准确。

旧版的「灵敏度」下拉(保守/平衡/敏感)已移除。站点类型比抽象的灵敏度更直观,也更准确。

实际效果

场景 旧算法 新算法
博客站(普通网站),正常 POST 约 1 次/分钟,检测窗口 300 秒 下限 150 次,攻击者可发 149 次不触发 下限 15 次,异常行为更快被识别
API 网关(API 服务),正常客户端 POST 峰值 40 次/10 秒 峰值被硬上限截断为 30,导致基线偏低 上限自动放宽到 50,基线准确反映真实流量
聊天应用(聊天室),正常消息发送峰值 60 次/10 秒 被旧上限截断为 30,大量正常用户被封 上限放宽到 80,正常聊天不受影响

升级说明

  • CC 基线改动已自动生效,下一次定时计算(每 24 小时)后新算法结果会自动推送到所有节点
  • POST 泛洪建议在站点配置中确认「站点类型」是否正确,系统会据此适配防护参数
  • 如果发现基线变化较大导致误拦截,可以在站点配置中临时切换到「手动模式」设定阈值
  • POST 泛洪防护面板中的「灵敏度」选项已移除,不影响现有防护效果

壹盾安全官方

回复讨论
0

登录后可参与回复讨论。

当前还没有回复,欢迎成为第一个参与讨论的人。

文明发言,理性讨论