DDoS 防护:攻击的原理与应对之道
DDoS 早已不再只是大公司才会遇到的问题:如今租用几个小时的僵尸网络,比请一位管理员工作一小时还要便宜。电商网站、媒体、游戏服务器和小型企业站点都可能成为攻击目标。下面我们就来看看这类攻击是如何运作的,为什么普通主机应付不了,以及真正有效的办法是什么。
防护的原理很简单:流量不直接进入您的服务器,而是先经过一张过滤网络。垃圾请求在外围就被拦下,只有合法流量才能抵达应用。
什么是 DDoS 攻击
DDoS(Distributed Denial of Service)即分布式拒绝服务攻击。大量被感染的设备(僵尸网络)同时向您的资源发送请求,以耗尽它的资源:链路带宽、网络设备处理能力、CPU 或应用的连接池。其目的不是窃取数据,而是让服务对真实用户不可用。它与普通的负载高峰的关键区别在于:来源分散在成千上万个地址上,因此单纯「封掉一个 IP」是行不通的。
流量型攻击(L3/L4)
这是最直接的一类:用垃圾流量把链路塞满,直到有用的流量再也挤不进来。这类攻击包括 UDP 洪水、SYN 洪水以及放大攻击——攻击者把您的地址伪装成源地址,向开放的公共服务(DNS、NTP、memcached)发送一个很小的请求,而这些服务会向受害者回送体积大几十倍的数据包。此类攻击以每秒吉比特计量,只能依靠具备充足带宽余量的网络进行过滤来对抗——因为在您的服务器一侧,链路早已被塞满。
应用层攻击(L7)
这类攻击要隐蔽得多:流量并不大,看起来就是普通的 HTTP 请求,但每一个请求对服务器来说都代价高昂。机器人会疯狂访问站内搜索、目录筛选页面、各种表单或繁重的 API 方法——也就是那些会触发复杂数据库查询的地方。此时链路仍然空闲,应用却已经瘫痪。仅凭 IP 无法把这类机器人和真实访客区分开——需要分析行为、请求频率和请求头,并检验客户端是否具备执行浏览器逻辑的能力。
过滤如何运作:流量清洗中心
防护的基础在于:访问网站的流量会先经过一张分布式过滤网络(通常称为清洗中心,scrubbing centers)。请求由边缘节点接收,这些节点会:
- 依靠网络的总体带宽化解流量型攻击——攻击被「摊薄」到众多节点上;
- 丢弃明显非法的数据包以及已知的攻击特征;
- 分析客户端行为,在应用层拦截机器人;
- 缓存静态资源,即使在平时也能降低源站负载。
抵达您服务器的已经是被清洗过的流量。CDN + AntiDDOS 的组合正是这样工作的:这张网络充当互联网与您的基础设施之间的缓冲。
为什么必须隐藏真实 IP
如果攻击者知道您服务器的地址并绕过防护直接攻击,那么任何过滤都将失去意义。因此在启用代理之后,源站 IP 就不再暴露在 DNS 中:对外可见的只有过滤网络的地址。需要注意的是,真实地址仍可能通过以下途径「泄露」:DNS 历史记录中的旧 A 记录、mail 或 ftp 之类的子域名、邮件头以及 SSL 证书。在开启防护之前,建议先更换服务器 IP,并在服务器上只允许来自过滤网络的流量、拒绝其他一切来源。
需要提前准备什么
在攻击正酣时才去接入防护并不明智:DNS 变更不会立刻在全网生效,而您每分钟都在损失金钱。合理的最低准备包括:
- 提前调低 DNS 记录的 TTL,让切换在几分钟内完成;
- 把域名区域放在能够一键开启代理的运营商处;
- 把静态资源迁移到 CDN——这既能卸掉基础负载,也能在平时让网站更快;
- 了解自己正常的流量画像:没有它就无法把攻击和一次成功的广告投放区分开。
| 攻击类型 | 表现形式 | 有效手段 |
|---|---|---|
| UDP / SYN 洪水 | 链路被塞满,服务器不可用 | 网络侧过滤、带宽余量 |
| 放大攻击 | 流量比平时高出几十倍 | 清洗中心、按特征拦截 |
| HTTP 洪水(L7) | 链路空闲,应用却「瘫痪」 | 反机器人、行为分析 |
| 直击 IP 的攻击 | 防护已开启,但网站仍不可用 | 隐藏 IP,仅允许过滤网络访问 |
并不存在一个通用的 DDoS「开关」:流量型攻击靠网络容量化解,应用层攻击靠行为分析识别,而直接冲着服务器来的攻击则靠隐藏其地址来规避。真正有效的防护,是这三个层面同时到位。您可以在 Alviy CDN 与网站防护中接入它们,并在价格页面比较各套餐。