
一、什么是低频大流量攻击
它有两个特点,正好卡在传统防护的盲区:
- 低频:每个 IP 每分钟只发 1-2 个请求,远低于”5 次/秒”之类的常见阈值
- 大流量:每个请求都很大——下载高清图、请求大列表接口、提交大体积表单
攻击者租用大量分散 IP(代理池、僵尸网络、秒拨宽带),每个 IP 都”规规矩矩”,但几千个 IP 一起打,带宽瞬间拉满,数据库查询量暴涨。
二、为什么频率限制失效
单 IP 维度看,这些请求完全正常,频率限制不会触发。攻击者的聪明之处就在于”把攻击量摊薄到足够多的 IP 上”,让每个 IP 都隐身。
所以防护思路必须升级:从”单 IP 视角”切换到”全局视角”。
三、WAF 的识别手段
3.1 全局流量建模
WAF 在边缘节点汇聚全站流量,统计:总 QPS、总带宽、响应体积分布、热门 URI 排行。当这些指标突然偏离历史基线(比如带宽同比涨 5 倍),立即告警并限速。
3.2 IP 段聚合分析
虽然是分散 IP,但它们通常来自同一网段或同一云厂商出口。WAF 按 /24 网段聚合,会发现”某网段有 300 个 IP 同时访问同一接口”,这个模式就非常可疑。
3.3 资源消耗排行
按 URI 排序,找出”最耗资源”的请求。攻击者往往集中打某几个重接口,把这些接口的频率限制单独调严即可。
3.4 请求体积限制
针对”大流量”的特征,直接限制单请求体积、响应体积,或对超大响应启用分片/降级。
四、可落地的配置
4.1 WAF 侧
建议配置:
├─ 全局速率限制 1000 QPS(按业务实测调整)
├─ 单 URI 限速 重接口单独设 50 QPS
├─ 响应体积限制 单响应 ≤ 5MB
├─ 网段聚合限速 /24 网段 ≤ 100 QPS
└─ 无 Cookie 挑战 触发 JS 验证,过滤脚本
4.2 Nginx 侧(宝塔环境)
# 限速 + 限连接组合
limit_req_zone $binary_remote_addr zone=all:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn:10m;
server {
# 全局请求限速
limit_req zone=all burst=30 nodelay;
# 单 IP 并发限制
limit_conn conn 20;
# 针对重接口单独收紧
location /api/heavy {
limit_req zone=all burst=5 nodelay;
}
# 限制响应体积(配合 proxy_buffer 控制)
proxy_buffering on;
proxy_buffers 8 16k;
}
宝塔路径:网站 → 设置 → 配置文件,在 server 块内加入 location 限制。
五、配套的运营动作
- 开启实时流量看板,设定带宽/QPS 告警阈值,异常时第一时间收到通知
- 大促或活动期间提前临时下调阈值,宁可略紧也不要被打穿
- 把图片、视频等大静态资源交给 CDN,从源头减掉大部分流量
- 对下载类接口加 Token 校验,防止被当作免费带宽池
六、小结
低频大流量攻击的本质是”分布式摊薄”,单点规则必然失效。防护要靠全局建模 + 网段聚合 + 资源排行三件套,把分散的请求在统计层面重新”聚”起来看,才能识别出攻击。
