21 10 月 2026
本文由财富云计算提供,我们提供高防服务器与 CDN 防护服务,NAT 型无独立公网 IP 价格比独立 IP 省一半以上,智能 CC 防护是我们高防 CDN 的标配能力,见文末。

一、CC 的本质:合法请求的恶意洪流

CC(HTTP Flood)攻击的请求每个都是合法的 HTTP:正确的 Host、正常的 UA、标准的 GET/POST。防火墙看它们是好人,只有数量和节奏暴露恶意。

为什么难防:你在防「假用户」,而攻击者越来越像「真用户」。对抗的核心是从频率、行为、业务逻辑三个维度识别「不像人的流量」,而不是封 IP 那么简单。

普通 DDoS:流量畸形/协议违规 → 特征明显,硬件直接洗
CC 攻击:  流量完全合法 → 只能靠「行为分析」层层设卡

二、基础 CC:单 IP 刷接口(最好防)

特征:单 IP 或少数 IP,高频请求同一接口,UA 统一(curl/python-requests),Referer 空。

# 识别:日志里一目了然
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# 某个 IP 一分钟几千次 = 实锤

# 看 UA
awk '{print $12}' access.log | sort | uniq -c | sort -rn | head

对抗:Nginx 限流一招制敌。

# /etc/nginx/conf.d/cc-basic.conf
limit_req_zone $binary_remote_addr zone=perip:10m rate=30r/m;
limit_req_zone $server_name zone=perserver:10m rate=1000r/s;

server {
    location / {
        limit_req zone=perip burst=10 nodelay;
        limit_req zone=perserver burst=2000;
        limit_req_status 503;
        limit_req_log_level warn;
    }
}
nginx -t && systemctl reload nginx

(Nginx 限流 WAF 基础有完整配置,本模块是它的进阶篇)

三、分布式 CC:IP 池轮换(限流失效)

特征:几千个 IP,每个 IP 每分钟只请求几次(低于你的限流阈值),UA 五花八门(真实浏览器 UA 库轮换),分布全国各地。

为什么限流没用:单 IP 频率 5 次/分钟,限流阈值 30 次/分钟——人家合规得很。但 5000 个 IP × 5 次 = 你的服务器在燃烧。

对抗手段(按有效性排序):

3.1 频率维度换成「全局视角」

不限单 IP,限全站总请求速率——正常站点有访客基线,超出基线就是异常:

# 全站级别限流(配合业务基线调)
limit_req_zone $server_name zone=global:10m rate=500r/s;
limit_req zone=global burst=1000 nodelay;

3.2 人机验证(JS 挑战)

# 简单版:Nginx 层下发 Cookie 挑战(思路示意)
location / {
    if ($cookie_js_verified != "ok") {
        return 200 '<html><script>document.cookie="js_verified=ok;path=/";location.reload()</script></html>';
    }
    proxy_pass http://backend;
}

(这个简单版会被绕过,生产用OpenResty Lua WAF或 CDN 的人机识别)

3.3 行为指纹

  • 请求节奏:真人请求间隔随机,机器请求间隔精确到毫秒级规律
  • 跳转路径:真人「首页 → 列表 → 详情」,机器直捣黄龙(/api/search?kw=xxx)
  • 加载资源:真人访问会带 CSS/JS/图片请求,机器只要 API 响应

3.4 CDN 智能 CC(最终方案)

分布式 CC 单台 Nginx 防不住——你没有全局视角。CDN 节点的价值:它看到的是「这个客户端在所有页面/接口上的行为全景」,AI 模型直接判定机器流量。这就是高防 CDN的 CC 模块比本机 Nginx 强一个量级的原因。

四、精准打击:专打「贵」接口

聪明攻击者不刷首页(缓存命中,打你也白打),专打你最贵的接口:

目标接口打你的成本攻击者收益
搜索(?kw=)数据库 LIKE 查询,CPU 爆炸不刷带宽就能打瘫
登录(POST /login)bcrypt 哈希,单次几百 ms CPU顺带撞库
注册/发短信短信费一条条扣你的真金白银
下单/优惠券业务资损库存、优惠全被刷
文件上传磁盘 I/O + 带宽垃圾数据塞满磁盘
导出(Excel/PDF)内存 + CPU 拉满几个请求内存爆

识别:access log 里同一接口占比异常:

awk '{print $7}' access.log | cut -d'?' -f1 | sort | uniq -c | sort -rn | head -15
# 正常:/ 首页最多,分布均匀;攻击:/api/search 或 /login 一柱擎天

对抗:接口分级防护。

# 贵接口单独严格限流
location /api/search {
    limit_req zone=perip rate=5r/m burst=3 nodelay;   # 单 IP 每分钟 5 次
    limit_conn perip 5;
    proxy_pass http://backend;
}

location /api/sms/send {
    limit_req zone=perip rate=1r/m burst=1 nodelay;   # 单 IP 每分钟 1 条
    # 必须配图形验证码(前端)+ 失败锁定
    proxy_pass http://backend;
}

location /login {
    limit_req zone=perip rate=10r/m burst=5;
    # 登录失败 5 次锁定 IP 15 分钟(后端逻辑)
    proxy_pass http://backend;
}

接口防护的核心思想:不是「防请求」,是「让攻击者的每次请求代价高于你的防御成本」。短信接口加验证码,攻击者就刷不动了;搜索加缓存 + 限频,数据库不疼了。

五、慢速 CC:不拼量,拼占用(Slowloris/RUDY)

原理:慢慢发请求(几秒一个字节),连接永远开着不完成——占满你的 worker 连接,正常人连不进来。

慢速攻击者:发一半请求头,停 30 秒,再发一个字节……连接保持中
正常用户:  新连接 → 服务器连接池满 → 排队/503

识别:

# established 连接多但请求不完整
ss -tn state established '( sport = :80 )' | wc -l   # 异常多
# Nginx status 看
curl -s localhost/nginx_status | grep Reading         # Reading 状态持续不降
# access log 里同一 IP 只有零星请求(一次请求分成几十条记录)

对抗:收紧超时。

server {
    # 慢速攻击的核心克星:所有超时调短
    client_header_timeout 10s;      # 10 秒发不完头 = 断
    client_body_timeout 10s;        # 10 秒传不完 body = 断
    keepalive_timeout 30s;          # 空闲连接 30 秒回收
    send_timeout 10s;
    reset_timedout_connection on;   # 超时连接发 RST 释放
    
    # 大文件上传例外(别误杀正常上传)
    location /upload {
        client_body_timeout 300s;
    }
}

RUDY(慢速 POST body):同理,client_body_timeout 治它。更详细见慢速攻击专题。

六、拟人 CC:最难识别的形态

特征:真实浏览器 UA + 随机 Referer + 随机间隔 + 完整加载页面(连 JS 都跑)——headless Chrome 傀儡机,看起来就是真人。

识别线索(没有银弹,靠组合信号):

  • IP 段异常集中(云厂商 IP 段、代理池特征)
  • TLS 指纹异常(curl/Chrome 指纹和 UA 声称的不一致)
  • 鼠标轨迹过于「完美」或缺失(真人有微抖动)
  • 纯 API 调用、从不加载图片 CSS(开 JS 渲染只为过验证,不打上游资源)
  • 行为模式高度一致(每个「用户」的访问路径一模一样)

对抗:

  1. 行为验证码:滑动/点选——成本转嫁给攻击者(一个验证码几分钱,刷一万次就是几百块)
  2. 设备指纹 + 频率关联:同指纹跨 IP 出现 = 代理池,连坐
  3. 业务风控:登录异常设备要二次验证、下单异常频率进审核
  4. TLS 指纹校验:JA3 指纹与 UA 不匹配直接挑战(OpenResty 可做)

七、防御体系:四层纵深

第 1 层 接入层:CDN 智能 CC(分布式识别、人机挑战)← 防分布式/拟人
        ↓ 漏过来的
第 2 层 网关层:Nginx 全局限流 + 连接数限制 ← 防基础刷量
        ↓ 漏过来的
第 3 层 应用层:接口分级限流 + 验证码 + 业务风控 ← 防精准打接口
        ↓ 漏过来的
第 4 层 兜底层:fail2ban + 监控告警 + 人工介入 ← 收尾

每一层都假设上一层会漏。攻击者突破 CDN,还有 Nginx;绕过 Nginx,接口层还有验证码。这就是纵深的含义——不指望单点无敌。

各层配置:

八、监控:被打了你要能看见

# 简易实时 CC 监控(cron 每分钟跑)
tail -600 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -5 > /tmp/cc-top.txt
# 单 IP 超过阈值就告警(接微信/邮件机器人)

必看的三个指标:

  1. 单 IP 请求速率 Top10(基础 CC)
  2. 接口请求分布 Top10(精准打接口)
  3. 全站 QPS vs 平时基线(总量异常)

进阶监控告警体系见Loki 日志体系和Uptime Kuma 状态页。

九、小结

CC 攻击的演进路线:单 IP 刷 → 分布式轮换 → 精准打贵接口 → 慢速占用 → 拟人模拟,防御也必须逐层升级:Nginx 限流防第一代,全站视角 + 人机挑战防第二代,接口分级 + 业务风控防第三代,CDN 智能识别防拟人。核心原则:把攻击成本堆到高于他的收益——刷搜索限流、刷短信验证码、刷登录上行为检测,让他每一发都打在棉花包着钉子的墙上。


相关阅读:


本文由财富云计算整理,我们提供高防服务器、CDN 防护与 NAT 型云服务器,无独立公网 IP 机型价格比独立 IP 省一半以上,需要智能 CC 防护的咨询。更多教程见端口速查表。
延伸阅读
  1. 高防误区与避坑清单:25 个坑+下单前必问 14 问+到货验货流程
  2. DNS 攻击防护专题:劫持、隧道、投毒、放大四类攻击与 DNSSEC
  3. 电商大促防攻击预案:T-14 到当天的分级响应与降级开关
  4. 源站真实 IP 隐藏完全指南:六大暴露面排查+NAT 型终极方案
  5. 日志分析找攻击源:Nginx 日志三维度分析法与证据固定
  6. 攻击应急响应手册:六阶段响应流程,从确认到复盘的照做清单
  7. iptables 抗 DDoS 配置模板:状态过滤+SYN 防护+防扫描+游戏服版
  8. OpenResty Lua 自研 WAF:动态限流+攻击特征检测+Redis 黑名单
更多阅读
  1. 上一篇:SYN Flood 与 TCP 防护专题:从三次握手到 SYN Cookie 完全拆解
  2. 下一篇:慢速攻击 Slowloris/RUDY 防护:超时收紧+连接限制+CDN 终结
发表评论 7