安全与合规

CC 攻击和 DDoS 攻击区别:作用层、流量特征与防护手段

CC 攻击是 DDoS 的一种,属于应用层(七层)攻击:用大量看起来正常的 HTTP 请求耗尽网站的处理能力。日常说的 DDoS 多指四层及以下的流量型攻击,靠带宽堵死链路。前者带宽很小、请求真实、清洗设备看不出异常,只能靠 WAF、限速和人机验证。

作者 顶联产品团队发布于 5 分钟阅读

CC 攻击和 DDoS 攻击区别的核心在于打在哪一层:DDoS 是分布式拒绝服务攻击的统称,平时说的“DDoS”多指网络层和传输层的流量型攻击,用 UDP 泛洪、反射放大、SYN 泛洪把带宽或连接表灌满;CC 攻击是 DDoS 里的应用层分支,用真实的 HTTP 请求把网站的 CPU、数据库和进程池耗光。一个靠“大”,一个靠“多”,防护手段完全不同。

一张表看 CC 与 DDoS 的区别

对比项 流量型 DDoS(四层及以下) CC 攻击(七层)
OSI 层次 网络层、传输层 应用层
常见形式 UDP 泛洪、ICMP 泛洪、NTP/DNS/memcached 反射放大、SYN 泛洪、ACK 泛洪 HTTP/HTTPS 泛洪、慢速请求(Slowloris)、针对搜索、登录、下单等接口的高频请求
流量大小 大,Gbps 到 Tbps 级 小,常常只有几 Mbps 到几十 Mbps
是否需要完成 TCP 握手 不需要,一个包就是一次攻击 需要,必须建立连接后发出完整请求
源 IP 能否伪造 可以,UDP 和 SYN 泛洪几乎都伪造 不能,源 IP 真实,来自僵尸网络、代理池或拨号 IP
消耗的资源 上联带宽、路由器与防火墙的包处理能力、连接表 Web 进程、CPU、数据库连接、后端 API
服务器上的表现 入向带宽打满,ping 丢包,所有服务同时不通 带宽正常,网站 502/504 或极慢,其他端口(如 SSH)仍然正常
流量清洗能不能解决 能,这正是清洗设备的设计目标 基本不能,每个请求在网络层都是合法的
主要防护手段 机房清洗、黑洞路由、高防 IP、带宽冗余 WAF、按 IP 和接口限速、人机验证、缓存、业务侧改造
谁来处理 机房、上游运营商、高防服务商 应用和运维团队为主,七层高防或 CDN 为辅

CC 攻击属于 DDoS 吗

属于。DDoS 按作用层可以分成三类:

  • 网络层攻击:ICMP 泛洪、UDP 泛洪、各类反射放大,目标是把链路带宽塞满;
  • 传输层攻击:SYN 泛洪、ACK 泛洪、连接耗尽,目标是把服务器或防火墙的连接表塞满;
  • 应用层攻击:HTTP 泛洪、慢速攻击、DNS 查询泛洪,目标是把应用的处理能力耗光。

CC 就是应用层攻击里针对 Web 的那一种。之所以在国内被单独拎出来讲,是因为它的流量特征和防护思路与前两类差别太大,很多人买了“抗 DDoS”的服务却发现挡不住它。

四层攻击和七层攻击的流量差多少

用一个假设的算例感受一下量级差异。

SYN 泛洪:一个 SYN 包在线路上大约 60 字节,10 Gbps 的攻击流量相当于每秒约 2000 万个包。这个规模下,普通服务器的网卡和内核在包到达应用之前就已经处理不过来,机房清洗设备要做的就是识别这种协议特征并丢弃。

CC 攻击:一个 HTTP 请求连头部算上大约 500 字节。假设攻击者控制 2000 个代理 IP,每个 IP 每秒只发 1 个请求,合计 2000 QPS,流量只有 2000 × 500 × 8 ≈ 8 Mbps,在任何监控图上都不起眼。但如果被请求的是一个要查数据库的动态页面,每次处理耗时 50 ms,一个 CPU 核每秒只能处理 20 个请求,8 核服务器满打满算 160 QPS,2000 QPS 就是它处理能力的十几倍,网站在几秒内就会开始排队、超时。

这就是“是否需要真实 TCP 连接”这一行的意义:CC 要完成握手、发出合法请求,代价是源 IP 不能伪造,规模上不去;换来的是每个请求都能落到后端最贵的那段逻辑上。

为什么买了高防带宽还是被 CC 打挂

这是最常见的疑问,原因有三个:

  1. 清洗设备靠流量特征识别攻击。它看的是协议是否异常、速率是否突变、源分布是否集中。CC 请求是完整的 TCP 握手加合法的 HTTP 报文,与真实用户的请求在网络层没有区别,清洗设备放行是正确的行为。
  2. 高防带宽只是“管道大”。300 Gbps 的防护带宽说明链路灌不满,但后端还是那台 8 核服务器,处理能力没有变。
  3. 四层高防看不到 HTTP 内容。用端口转发方式接入的高防 IP 只做 TCP 层转发;HTTPS 站点如果没有把证书放到高防上做七层接入,防护方连 URL 都看不见,更谈不上按请求特征过滤。

所以防 CC 的前提是让防护设备能读到请求内容:要么在高防或 CDN 上做七层接入并上传证书,要么在自己的网关或 Nginx 前部署 WAF。

防护手段对比:清洗 vs WAF 与人机验证

手段 针对 原理 局限
流量清洗、黑洞路由 流量型 DDoS 在机房或上游按协议特征丢弃异常流量,超阈值时丢弃整个 IP 的流量 对合法 HTTP 请求无效
高防 IP(四层转发) 流量型 DDoS 把流量引到清洗中心再回源 看不到 HTTP 内容,防不了 CC
高防 CDN、七层高防 CC 与流量型 在边缘节点终结 TLS,按 URL、频率、指纹过滤,静态内容直接命中缓存 需要上传证书,动态请求仍要回源
WAF CC 规则匹配、按 IP/URL 的频率控制、UA 与 Referer 校验、浏览器指纹 规则太严会误伤正常用户
人机验证 CC 对可疑来源下发 JavaScript 挑战或验证码,脚本无法通过 影响用户体验,API 类接口不能用
服务器限速 CC Nginx 按 IP 限制请求速率与并发 对分布极广的代理池效果有限
业务侧改造 CC 登录、搜索、短信等接口加验证码或签名,热点页面缓存化 需要开发投入

实际部署一般是组合:外面挂七层高防或 CDN 吸掉大头,Nginx 上对高消耗接口单独限速,业务上把最容易被打的接口改成异步或加验证。

怎么判断自己遇到的是哪一种

先看带宽,再看日志。带宽打满是流量型,带宽正常而网站不可用就往 CC 方向查。Nginx 访问日志能直接给出答案:

# 最近 20 万行请求里,请求量前 20 的来源 IP
tail -n 200000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
# 被请求次数前 20 的 URL:CC 通常集中打少数几个动态页面
tail -n 200000 /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
# 每秒请求数的变化:找出攻击开始的时间点
tail -n 200000 /var/log/nginx/access.log | awk '{print substr($4,2,20)}' | uniq -c | sort -rn | head

典型的 CC 特征是:大量 IP 请求同一个或少数几个动态 URL、User-Agent 为空或高度一致、没有加载页面配套的 CSS 和图片、请求间隔机械地均匀。确认之后,可以先对被打的接口单独限速并拦掉明显异常的请求:

http {
    # User-Agent 为空的请求直接标记
    map $http_user_agent $bad_ua {
        default 0;
        ""      1;
    }
    limit_req_zone $binary_remote_addr zone=login:10m rate=2r/s;

    server {
        if ($bad_ua) { return 444; }

        # 只对高消耗接口限速,静态资源不受影响
        location = /api/login {
            limit_req zone=login burst=5 nodelay;
            proxy_pass http://backend;   # backend 为你已定义的 upstream
        }
    }
}

return 444 是 Nginx 特有的写法,直接关闭连接、不返回任何响应,比返回 403 更省资源。

在机房管理系统里能做什么

CC 攻击主要由业务方处理,机房侧能做的是让信息透明、让影响可控。Toplink DCIM 的客户自助端可以查看服务器的流量使用和被攻击事件记录,客户看到入向带宽平稳而网站不可用,就能直接朝应用层排查,而不是先怀疑机房线路;如果被打的服务器反过来向外喷出异常流量,带宽自动限速会按平均带宽自动把端口限到设定速率,避免波及同一交换机上的其他客户。

常见问题

CC 攻击这个名字是怎么来的?

通常的说法是 CC 为 Challenge Collapsar 的缩写:Collapsar(黑洞)是早年国内一款抗 DDoS 产品的名字,有人写了专门绕过它的 HTTP 请求工具并取名“挑战黑洞”,后来这类应用层攻击就都被叫作 CC。这是业内流传的非正式来历,不是标准定义。

HTTPS 网站是不是不怕 CC?

不是,反而更吃亏。每个 HTTPS 请求都要做 TLS 握手,服务器的 CPU 消耗比明文 HTTP 高得多;而且四层高防看不到加密内容,只有在高防或 CDN 上部署证书做七层接入,才能识别和过滤请求。

CC 攻击的源 IP 能封吗?

能封,但效果有限。CC 请求必须完成 TCP 握手,源 IP 是真实的,可以按 IP 限速或封禁;问题是攻击者手里通常有成千上万个代理或拨号 IP,封的速度赶不上换的速度,所以要靠人机验证把机器和人区分开。

想看看在你的机房里怎么用?

从一次产品演示开始,梳理你的业务链路。

查看价格
服务热线 400-112-2951

让我们聊聊你的 IDC 业务

扫码添加企业微信,预约产品演示或申请试用。

Toplink 企业微信二维码

长按保存或使用企业微信 / 微信扫描

也可致电
400-112-2951
Telegram
@TopLink88