WAF的CC防护阈值怎么设?设多少才合理

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

一、阈值设置的两难

阈值是这个矛盾的核心:

  • 设太高 → 攻击者可以贴着阈值打,防护失效
  • 设太低 → 正常用户被误拦,业务受损

所以阈值没有”标准答案”,只有”适合你业务的值”。关键是先用数据摸清自己的基线。

二、第一步:采集正常流量基线

正式设阈值前,必须先知道自己站点的正常访问是什么样。

# 统计单 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 次/秒。最后配合分级处置和定期调整,才能既有防护力又少误伤。

给TA打赏
共{{data.count}}人
人已打赏
在线客服
在线客服
热线电话
QQ客服
电子邮箱
suduwangluo