DDoS 攻击类型有几种?按消耗对象分类与识别方法
「DDoS 攻击类型」这个问题,很多文章会列一大堆名词,但看完还是不知道自己的服务器被哪种打了。这篇换个角度:先按"打的是什么"分类,再讲每种的识别特征和对应防御,最后给一张对照表。
两种分法,先搞清楚
业内有两种分类维度,混着用会乱:
| 分法 | 分类 | 说明 |
|---|---|---|
| 按消耗什么分 | 带宽消耗型(Volumetric) | 用巨量流量堵死你的入口,单位 Gbps |
| 资源消耗型(Protocol / Application) | 用少量请求耗尽你的连接数、CPU、线程,单位 Mpps 或 QPS | |
| 按 OSI 层次分 | 网络层(L3) | ICMP Flood、IP 分片攻击 |
| 传输层(L4) | SYN Flood、UDP Flood、ACK Flood、连接耗尽 | |
| 应用层(L7) | HTTP Flood、CC、慢速攻击(Slowloris) |
实战里用第一种更实用:带宽型的加带宽/上清洗,资源型的要动连接层和业务层逻辑,处理方式完全不同。
带宽消耗型:三种主流
1. UDP Flood
最粗暴也最常见。往目标 IP 的随机端口狂发 UDP 包,服务器收到后要回 ICMP 不可达,双向流量把带宽吃满。
特征:入向流量曲线瞬间拉满,CPU 正常,业务全挂。游戏服务器被打,一半以上是这种。
2. ICMP Flood(Ping 洪水)
大量 ICMP Echo Request。现在很多机房直接限速 ICMP,所以单独用这个的少了,通常混在混合攻击里。
3. 反射放大攻击
这是效率最高的一种:伪造源 IP(写成受害者的 IP),向大量第三方服务器发查询请求,第三方把放大了几十倍的响应打回受害者。
| 反射源 | 端口 | 放大倍数 | 现状 |
|---|---|---|---|
| DNS | 53 | 约 50 倍 | 最常见,开放递归解析器仍有大量存在 |
| NTP | 123 | 约 550 倍 | monlist 命令,已大量修补 |
| Memcached | 11211 | 最高 5 万倍 | 2018 年集中爆发,现在少见了 |
| SSDP | 1900 | 约 30 倍 | 家用路由器贡献最多 |
| CLDAP | 389 | 约 70 倍 | 针对 Windows AD 环境 |
为什么危险:攻击者只需要很小的带宽(比如 1Gbps),就能打出几十 Gbps 的效果。这也是"几十块买一小时打手"能打出大流量的原因。
资源消耗型:四种主流
1. SYN Flood
只发 SYN 不回 ACK,服务器为每个半连接分配内存并等待,等待队列(backlog)塞满后正常用户也连不进来。
特征:ss -ant | grep SYN_RECV | wc -l 数字异常大,CPU 不高但新连接全部超时。
防御:SYN Cookie、增大 backlog、清洗设备做源认证。
2. ACK Flood / 连接耗尽
建立大量完整连接但不发数据,把连接表占满。比 SYN Flood 更隐蔽,因为连接状态是 ESTABLISHED,看起来像正常用户。
3. CC 攻击(Challenge Collapsar)
针对应用层。大量请求打到需要消耗资源的接口——搜索、登录、排行榜、数据库查询。一个请求让服务器算 1 秒,一千个并发就能拖垮。
游戏场景的 CC 变种:
- 假人攻击:模拟玩家登录,走完整握手流程,耗尽登录服
- 房间创建攻击:疯狂创建房间,耗尽房间 ID 池和内存
- 匹配请求攻击:反复请求匹配,拖垮匹配服务
4. 慢速攻击(Slowloris / Slow POST)
用极慢的速度发完一个 HTTP 请求,一个连接占几分钟。特点是流量极小,监控上看不出异常,但连接数慢慢堆满。
怎么判断自己被哪种打了
按这个顺序查,五分钟能定位:
# ① 看带宽——判断是不是带宽型
iftop -i eth0 -n
# 入向流量远超正常峰值 → 带宽消耗型
# ② 看连接状态——判断是不是 SYN / 连接耗尽
ss -s
ss -ant | awk '{print $1}' | sort | uniq -c | sort -rn
# ③ 看包大小分布——小包多说明是资源型
tcpdump -i eth0 -nn -c 1000 | awk '{print $NF}' | sort | uniq -c
# ④ 看应用层 QPS——判断是不是 CC
tail -10000 /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
| 现象 | 大概率是 |
|---|---|
| 带宽打满,CPU 正常 | UDP Flood / 反射放大 |
| 带宽正常,SYN_RECV 暴增 | SYN Flood |
| 带宽正常,ESTABLISHED 暴增 | 连接耗尽 / 慢速攻击 |
| 带宽正常,QPS 暴增,CPU 打满 | CC 攻击 |
| 带宽、连接都正常,但业务卡 | 数据库层被打 / 内部问题 |
一张对照表:攻击类型 vs 防御手段
| 攻击 | 层次 | 关键指标 | 防御手段 |
|---|---|---|---|
| UDP Flood | L4 | Gbps | 流量清洗、丢弃异常 UDP |
| 反射放大 | L3/L4 | Gbps | 清洗 + 源认证(识别伪造源) |
| ICMP Flood | L3 | pps | 限速 ICMP、清洗 |
| SYN Flood | L4 | Mpps | SYN Cookie、代理握手 |
| 连接耗尽 | L4 | 连接数 | 连接数限制、超时回收 |
| CC / HTTP Flood | L7 | QPS | 会话识别、人机校验、限流 |
| 慢速攻击 | L7 | 连接时长 | 最短速率限制、超时 |
游戏行业实际遇到的是什么
根据我们处理过的案例,游戏服务器被打的比例大致是:
- UDP Flood 占一半以上——因为游戏多走 UDP,攻击工具也最成熟
- CC / 假人攻击约三成——成本低、效果好,专打登录服和匹配服
- 混合攻击约两成——同时打带宽和连接,让你顾此失彼
混合攻击最难处理,因为带宽型攻击会把你的监控和值班人员注意力吸走,资源型攻击趁机打进来。这种情况需要防护设备能同时处理 L3/L4 和 L7,而不是只做其中一层。
如果你不确定自己被哪种打了,可以把 ss -s 和 iftop 的输出发给我们,帮你看一下——联系方式。或者先看DDoS 防护原理了解清洗是怎么做的。