速读摘要:CC 防护阈值设太高拦不住攻击,设太低会误伤正常用户。合理做法是:先采集 7 天正常流量基线,取峰值的 2-3 倍作为初始阈值,再根据误报率微调。不同接口要区别对待——登录接口必须严格,图片/静态资源可以宽松。本文给出可直接参考的阈值区间。

一、阈值设置的两难
阈值是这个矛盾的核心:
- 设太高 → 攻击者可以贴着阈值打,防护失效
- 设太低 → 正常用户被误拦,业务受损
所以阈值没有”标准答案”,只有”适合你业务的值”。关键是先用数据摸清自己的基线。
二、第一步:采集正常流量基线
正式设阈值前,必须先知道自己站点的正常访问是什么样。
# 统计单 IP 每分钟请求数的分布(源站日志)
awk '{print $1}' /www/wwwlogs/access.log \
| sort | uniq -c | sort -rn | head -30
# 关注:
# 第 1 名(最高频 IP)是多少?→ 可能是爬虫
# 第 10 名是多少?→ 大致是正常用户的峰值
# 大部分用户是多少?→ 正常水平
# 统计整站每分钟请求总量
awk '{print $4}' /www/wwwlogs/access.log | cut -d: -f1,2,3 \
| sort | uniq -c | sort -rn | head -10
建议连续采集 7 天,覆盖工作日和周末,取正常峰值作为基准。
三、第二步:按系数确定初始阈值
| 业务类型 | 建议系数 | 说明 |
|---|---|---|
| 普通内容站 | 峰值 × 2 | 访问模式平稳 |
| 电商/活动站 | 峰值 × 3 | 大促时流量波动大 |
| API 服务 | 峰值 × 2.5 | 接口调用相对稳定 |
| 论坛/社区 | 峰值 × 2 | 注意翻页和发帖 |
| 视频/图片站 | 峰值 × 4 | 用户会连续加载资源 |
四、第三步:分场景精细化
整站用统一阈值是粗糙的。不同页面的正常访问强度差异极大:
4.1 页面类
| 页面 | 单 IP 建议阈值 | 理由 |
|---|---|---|
| 首页 | 10 次/秒 | 用户很少高频刷新 |
| 列表页 | 15 次/秒 | 可能快速翻页 |
| 详情页 | 20 次/秒 | 正常浏览较快 |
| 搜索结果页 | 5 次/秒 | 搜索频率天然低,也是 CC 重灾区 |
4.2 接口类
| 接口 | 单 IP 建议阈值 | 理由 |
|---|---|---|
| 登录 | 5 次/分钟 | 防爆破,正常用户不会频繁登录 |
| 注册 | 3 次/分钟 | 防批量注册 |
| 短信/验证码 | 1 次/分钟 | 防短信轰炸,也控制成本 |
| 评论/发帖 | 5 次/分钟 | 防刷帖 |
| 数据查询 | 30 次/分钟 | 正常前端交互频率 |
4.3 静态资源
静态资源(js/css/图片)建议:
├─ 放宽频率限制(页面加载会并发请求多个资源)
├─ 但开启防盗链(校验 Referer)
├─ 大文件下载单独限速
└─ 更推荐:直接交给 CDN,源站不承担这部分流量
五、配套的处置动作
超过阈值后怎么处理,和阈值同样重要:
| 超出程度 | 处置动作 | 说明 |
|---|---|---|
| 轻度超出(1-2 倍) | 仅记录 | 观察,不打扰用户 |
| 中度超出(2-5 倍) | JS 验证 | 真人能过,脚本过不去 |
| 重度超出(5 倍以上) | 限速/拦截 | 明确是攻击 |
| 持续超出(10 分钟) | 临时封禁 30 分钟 | 拉黑顽固攻击源 |
六、上线后的调整节奏
第 1-3 天:观察模式
→ 只看不拦,导出超阈值请求清单,人工核对
第 4-7 天:验证模式
→ 超阈值触发 JS 验证,观察用户投诉量
第 8 天起:拦截模式
→ 确认误报率 < 0.1% 后切换
持续:每周复核
→ 业务量增长后要及时上调阈值
→ 大促前临时放宽,大促后回调
七、小结
阈值设定的核心是”数据驱动 + 分场景”。先用 7 天日志摸清基线,再按业务类型的系数(2-3 倍)定初始值,然后按页面/接口分开设置——登录接口严格到 5 次/分钟,详情页可以宽到 20 次/秒。最后配合分级处置和定期调整,才能既有防护力又少误伤。
