慢速DDoS与资源耗尽攻击的CDN防御

慢速DDoS与资源耗尽攻击的CDN防御

解释Slowloris、R-U-Dead-Yet等慢速DDoS如何用少量连接耗尽服务资源,并给出CDN会话超时、速率、并发与源站容量的防御方法。文章还提供分别设置头部、请求体、空闲与总会话超时、限制未完成请求并监控阶段完成率、上传和长连接接口使用独立策略等检查方法,并说明验证指标、常见误区与事件处置顺序,适合安全、运维

带宽曲线没有尖峰,服务器却接近无响应。连接数持续上涨,大量请求头迟迟不结束,应用线程和文件描述符被占满。这就是慢速DDoS最典型的伪装:攻击流量不大,却把服务端最稀缺的“等待能力”耗尽。

Slowloris通过缓慢发送请求头保持连接,R-U-Dead-Yet一类攻击则慢慢提交请求体。防御不能简单缩短所有超时,否则移动网络和大文件上传会被误伤。需要按协议阶段、接口用途和客户端行为设置边界。

为什么少量连接也能造成拒绝服务

传统Web服务器可能为每个连接保留线程、内存、套接字或上游会话。攻击者只要定期发送少量字节,让连接始终不超时,就能以很低带宽占用大量资源。代理层若把未完成请求提前转给源站,影响会被放大。

HTTP/2多路复用改变了攻击形态,一个连接可承载多个流;TLS握手和复杂请求体解析也会消耗计算。防护指标不能只看连接数,还要看阶段停留时间、每连接完成率和单位请求成本。

慢速DDoS:慢速DDoS资源耗尽原理
慢速DDoS资源耗尽原理

正常慢请求与恶意慢连接的差别

弱网用户可能偶尔发送缓慢,但通常会完成请求,并具有正常浏览路径。恶意连接则大量集中在特定阶段,字节间隔刻意低于超时阈值,完成率很低,来源和指纹可能高度重复。

判断时结合首字节时间、头部完成时间、请求体速率、并发数、失败率和后续行为。只按单个IP限速会被代理池绕过,也可能误伤运营商NAT用户。

CDN边缘应设置哪些控制

对请求头、请求体、空闲连接和整体会话分别设置超时;限制单客户端或同类指纹的未完成请求数;要求持续最低传输速率;对上传接口单独配置更合理的窗口。边缘应完整接收并验证请求后再回源,避免把慢连接传递给源站。

超过阈值不一定立即封禁,可以先降低并发、发送挑战或临时拒绝高成本接口。规则需要在真实弱网和移动端回归测试,观察误拦截。

源站仍然需要自己的保护

CDN不是源站资源管理的替代品。Web服务器、应用网关和数据库都应设置连接池、队列和请求预算,限制单个请求占用的最长时间。源站仅接受CDN回源,防止攻击者绕过边缘直接建立慢连接。

容量规划要看并发和等待,而不只是每秒请求。监控活跃连接、未完成请求、线程池、文件描述符、上游队列和超时分布,才能在业务失败前发现资源耗尽。

慢速DDoS:正常弱网与恶意慢连接
正常弱网与恶意慢连接

如何验证防御是否有效

在隔离测试环境模拟不同发送速率、连接数和协议阶段,记录边缘断开时间、源站连接变化和正常用户成功率。测试应包含弱网、长轮询、文件上传和API回调,避免把合法长连接当攻击。

生产上线先观察告警,再小范围执行。攻击发生时保留样本和时间分布,事后调整阈值。一个好策略不是“断得最快”,而是在源站资源稳定的前提下,让真实用户尽可能完成请求。

阈值应该由业务样本决定

设置超时前,先收集正常用户在不同网络下的请求头完成时间、上传速率和长连接时长,按接口而不是全站计算分位值。登录接口可以更严格,视频上传和回调接口需要独立窗口。阈值应留出正常波动空间,并随客户端版本变化复核。

攻击期间若源站连接持续增加,可逐步收紧未完成请求上限,而不是一次跳到极端值。每次调整记录时间和业务成功率,形成可回滚的处置轨迹。这样既能保护资源,也能向客服解释少量失败请求发生的原因。

慢速DDoS:慢速攻击防御流程
慢速攻击防御流程

落地检查清单

  • 分别设置头部、请求体、空闲与总会话超时
  • 限制未完成请求并监控阶段完成率
  • 上传和长连接接口使用独立策略
  • 源站仅允许CDN回源并设置连接预算
  • 用真实弱网场景验证误拦截率

结语

慢速DDoS利用的是服务器愿意等待的善意。通过边缘阶段性超时、行为基线和源站资源预算,把无限等待变成有边界的服务,才能在不伤害弱网用户的情况下阻断资源耗尽。

参考来源

延伸阅读