网络与协议安全 · kp-020

DDoS 攻击原理与缓解

核心 约 20 分钟 状态:reviewed #网络#DDoS#可用性#CDN

一句话定义

分布式拒绝服务(DDoS)用大量来源的流量或请求耗尽目标的带宽、连接或计算资源,本质是资源不对称的滥用;缓解思路是"吸收(分布式容量)+ 过滤(区分好人坏人)+ 弹性(快速伸缩)",目标是可用性而非保密性。

为什么重要

DDoS 是最常见的"无入侵破坏":不需要任何漏洞即可发动,且能以极低成本瘫痪高价值服务。它也是 kp-001 可用性维度的最大威胁载体——防御预算中为可用性买单的部分,大半花在 DDoS 缓解架构上。理解它的分类学,能让容量规划与应急预案有据可依。

前置知识

kp-017(网络分层):三类攻击分别对应不同层。

核心概念

  • 三类攻击:
  • 体积型(Volumetric):耗带宽,如 UDP 洪泛与反射放大——攻击者向第三方服务(DNS/NTP 等)发伪造源地址的小请求,服务向受害者回大响应,放大倍数可达数十倍。
  • 协议型(Protocol):耗连接状态,如 SYN 洪泛(半开连接占满表项,机制见 kp-017)。
  • 应用型(Application Layer):耗业务资源,如 HTTP 请求洪泛、慢速连接(保持连接不发送完整请求耗尽并发槽),流量小、难与正常用户区分。
  • 关键不对称:攻击成本与防御成本的比例决定攻击可行性;僵尸网络(IoT 设备等弱防护主机集群)提供了廉价攻击力(历史见 kp-005 Mirai)。
  • 缓解层次:Anycast/CDN 分布式吸收 → 边界过滤与速率限制 → SYN Cookie/连接限额 → 应用层验证(缓存、配额、逐步升级的挑战)→ 弹性扩容与降级预案。
  • 组织层准备:与运营商/清洗服务的联动预案、监控告警阈值(kp-027)、以"黑洞路由"为代表的自伤性最后手段须预先约定。

公式、模型或图示

text
反射放大不对称:攻击者 ──小请求──▶ 反射服务 ──放大 N 倍──▶ 受害者
(受害者见海量"合法"响应流量,真实源被伪造地址掩盖)

防御资源公式:可承受流量 ≈ 吸收容量 × 过滤精度
  容量不够 → 被打满;精度不够 → 误伤正常用户

原理与机制

缓解的第一性原理是把"区分正常与恶意"的成本从业务服务器前移到专为此设计的层:CDN/Anycast 把流量分散到全球节点吸收体积型;边缘过滤吸收协议型;应用型最难,因为"看起来像真用户",需要行为分析、速率基线与业务信号(登录态、会话行为)综合判定——这也是为什么应用层攻击的缓解必须与业务指标联动而非纯网络设备。架构上的通用答案是"最小暴露面":源站不直接暴露公网(只允许来自清洗层/CDN 的回源访问),否则攻击者绕过缓存层直打源站,一切前置缓解失效。预案比技术更决定结果:攻击发生时的判断(是攻击还是故障)、升级路径(何时联系运营商)、降级策略(静态页、排队、关闭非核心功能)都应在演练中固化。

实例或案例

一次应用层攻击的处置时间线:监控告警(kp-027 规则:同会话请求速率超基线 10 倍)→ 确认为应用层而非链路故障 → 边缘开启针对性速率限制与验证升级 → 对确认为恶意的来源段收窄封禁 → 事后复盘把"源站仅接受回源访问"补进架构。整个事件没有入侵,全程是可用性运营。

直观类比

DDoS 像上千人同时挤进一家餐厅不点餐:座位(连接)、厨房(CPU)、门口马路(带宽)都可能被占满。缓解像餐厅搬到能容纳万人的大广场(CDN 吸收)、门口设检票员(过滤)、后厨可以临时加开(弹性)——而不是让厨师学着更快炒菜。

常见误区

  • "带宽大就能扛":应用型攻击用很小的流量即可打满业务层,容量解决不了精度问题。
  • "验证码是万能防线":它只对交互式应用层攻击有效,且以伤害真实用户为代价;体积型/协议型完全无效。
  • "没被攻击就不用准备":缓解架构(源站隐藏、清洗联动、预案)必须在平时建成,临战搭建来不及。

与其他知识点的关系

  • kp-017(网络分层):三类攻击的层次归属。
  • kp-019(防火墙与分段):边缘过滤与源站隔离的落地。
  • kp-028(应急响应):DDoS 处置是可用性事件响应的典型场景。

自测题

  1. 反射放大的原理与危害特征是什么?要点:伪造源地址让第三方服务代打,放大倍数高且源难追溯;对策是运营商层面过滤伪造源与前置清洗。
  2. 为什么应用层攻击最难防?要点:流量小、拟真度高,需行为与业务信号判定;纯网络设备难以区分。
  3. "源站仅接受回源访问"防的是什么?要点:绕过 CDN/清洗层直打源站的攻击路径;否则前置缓解形同虚设。

延伸阅读

《NIST SP 800-61》(NIST):把 DoS 类事件纳入应急响应流程的官方框架。