1. DDoS 攻击概述:定义、攻击原理、攻击类型
大家好,我是老周。干安全这行十几年了,DDoS 算是我最早接触也最头疼的攻击之一。今天咱们就聊聊 DDoS 攻击到底是个什么东西。
说白了,DDoS 就是一群人堵你家门口。你想想看,正常情况下一两个人敲门,你还能应付。但如果突然来了一千个人同时挤你的门,你连门都打不开,更别说正常做生意了。
1.1 什么是 DDoS 攻击?
DDoS 的全称是 Distributed Denial of Service,分布式拒绝服务攻击。它的核心目标只有一个:让你的服务不可用。
攻击者会控制大量被感染的机器(我们叫它“肉鸡”),然后同时向目标服务器发送海量请求。这些请求会耗尽服务器的带宽、CPU、内存等资源,导致正常用户无法访问。
关键区别:DoS 是一对一,DDoS 是多对一。我见过很多新手分不清这两个概念。记住,DDoS 的“分布式”三个字才是它的杀手锏。
我在项目中遇到过一家电商公司,双十一当天被 DDoS 攻击。他们的服务器配置其实不差,但攻击流量直接打到了 200Gbps。结果呢?网站瘫痪了整整 6 个小时,损失惨重。嗯,这就是 DDoS 的威力。
1.2 攻击原理:它是怎么运作的?
DDoS 攻击的原理其实不复杂。我画了一张图,你看完就明白了。
攻击流程其实就三步:
- 组建僵尸网络:攻击者通过漏洞或木马感染大量设备,把它们变成“肉鸡”。
- 下发攻击指令:攻击者通过控制服务器,向所有肉鸡发送攻击目标信息。
- 发起攻击:所有肉鸡同时向目标发送请求,形成流量洪峰。
我的经验:现在的肉鸡不光是电脑了。IoT 设备、摄像头、路由器,甚至智能冰箱都可能被利用。我曾经见过一个案例,攻击者控制了 10 万台摄像头发起攻击,那场面...啧啧。
1.3 攻击类型:三大流派
DDoS 攻击按攻击目标可以分为三类。我习惯把它们比作三种不同的“堵门方式”。
| 攻击类型 | 攻击目标 | 典型手法 | 危害程度 |
|---|---|---|---|
| 容量耗尽型 | 网络带宽 | UDP Flood、ICMP Flood | 高(直接打满带宽) |
| 协议耗尽型 | 网络设备/协议栈 | SYN Flood、ACK Flood | 中高(消耗连接表) |
| 应用层攻击 | 应用服务器 | HTTP Flood、Slowloris | 极高(精准打击) |
1.3.1 容量耗尽型攻击
这是最“暴力”的一种。攻击者直接往你的带宽里灌数据,把你的网络出口堵死。
常见的做法是 UDP Flood。攻击者伪造源 IP,向目标发送大量 UDP 包。服务器收到后会尝试回复,结果回复包又把带宽占满了。这就是典型的“反射放大”攻击。
我记得有一次,客户说他们的防火墙 CPU 飙到了 100%。我一看流量图,好家伙,UDP 流量占了 95%。这就是典型的容量耗尽攻击。解决办法?要么加带宽,要么用云清洗。
注意:容量耗尽攻击的流量通常以 Gbps 为单位。现在常见的攻击规模在 100-500Gbps,大的能到 Tbps 级别。你想想看,普通企业的带宽也就 1-10Gbps,根本扛不住。
1.3.2 协议耗尽型攻击
这种攻击不拼流量大小,而是拼“技巧”。它专门攻击网络协议的设计缺陷。
最经典的就是 SYN Flood。TCP 三次握手的流程大家都知道吧?客户端发 SYN,服务器回 SYN-ACK,客户端再回 ACK。攻击者只发 SYN,不回 ACK。服务器的连接表就被这些半连接占满了。
我曾经帮一家游戏公司处理过这个问题。他们的游戏服务器每秒钟收到 50 万个 SYN 包,连接表瞬间爆满。正常玩家根本连不上去。后来我们调整了 SYN Cookie 和连接超时时间,才算稳住局面。
# Linux 下查看半连接数
netstat -ant | grep SYN_RECV | wc -l
# 调整 SYN 相关参数(临时生效)
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
sysctl -w net.ipv4.tcp_syn_retries=2
避坑指南:我曾经遇到过有人把 tcp_syn_retries 改成 0,结果正常连接也受影响。记住,调优要适度,别为了防攻击把正常业务搞崩了。
1.3.3 应用层攻击
这是最“聪明”的一种攻击。它模仿正常用户的请求,让你很难区分是攻击还是真实流量。
HTTP Flood 就是典型。攻击者控制肉鸡,不停地向你的网站发送 GET 或 POST 请求。每个请求看起来都像正常用户,但合在一起就能把你的应用服务器打垮。
还有一种叫 Slowloris 的攻击,更阴险。它建立 HTTP 连接后,慢慢发送请求头,每次只发一点点。服务器得一直保持连接等待,最后连接数被耗尽。
我处理过一个案例,攻击者用 5000 个肉鸡,每秒钟发 10 个 HTTP 请求。加起来就是 5 万 QPS。客户的 Tomcat 服务器直接挂了。后来我们上了 WAF 和限流,才算挡住。
核心观点:应用层攻击最难防御,因为它“长得像”正常流量。你需要结合行为分析、频率限制和 CAPTCHA 等手段才能有效识别。
1.4 三种攻击的对比
我整理了一张表,方便你对比这三种攻击的特点。
| 维度 | 容量耗尽型 | 协议耗尽型 | 应用层攻击 |
|---|---|---|---|
| 攻击目标 | 带宽 | 网络设备/协议栈 | 应用服务器 |
| 流量特征 | 流量大,特征明显 | 流量中等,协议异常 | 流量小,伪装性好 |
| 防御难度 | 低(加带宽/清洗) | 中(协议优化) | 高(行为分析) |
| 典型场景 | 大流量打垮网络 | 耗尽连接表 | 耗尽应用资源 |
| 防御手段 | 流量清洗、CDN | SYN Cookie、连接限制 | WAF、限流、CAPTCHA |
你想想看,这三种攻击其实可以组合使用。攻击者经常先打容量耗尽让你手忙脚乱,再混入应用层攻击精准打击。嗯,这就是所谓的“混合型 DDoS”。