带宽曲线没有尖峰,服务器却接近无响应。连接数持续上涨,大量请求头迟迟不结束,应用线程和文件描述符被占满。这就是慢速DDoS最典型的伪装:攻击流量不大,却把服务端最稀缺的“等待能力”耗尽。
Slowloris通过缓慢发送请求头保持连接,R-U-Dead-Yet一类攻击则慢慢提交请求体。防御不能简单缩短所有超时,否则移动网络和大文件上传会被误伤。需要按协议阶段、接口用途和客户端行为设置边界。
为什么少量连接也能造成拒绝服务
传统Web服务器可能为每个连接保留线程、内存、套接字或上游会话。攻击者只要定期发送少量字节,让连接始终不超时,就能以很低带宽占用大量资源。代理层若把未完成请求提前转给源站,影响会被放大。
HTTP/2多路复用改变了攻击形态,一个连接可承载多个流;TLS握手和复杂请求体解析也会消耗计算。防护指标不能只看连接数,还要看阶段停留时间、每连接完成率和单位请求成本。

正常慢请求与恶意慢连接的差别
弱网用户可能偶尔发送缓慢,但通常会完成请求,并具有正常浏览路径。恶意连接则大量集中在特定阶段,字节间隔刻意低于超时阈值,完成率很低,来源和指纹可能高度重复。
判断时结合首字节时间、头部完成时间、请求体速率、并发数、失败率和后续行为。只按单个IP限速会被代理池绕过,也可能误伤运营商NAT用户。
CDN边缘应设置哪些控制
对请求头、请求体、空闲连接和整体会话分别设置超时;限制单客户端或同类指纹的未完成请求数;要求持续最低传输速率;对上传接口单独配置更合理的窗口。边缘应完整接收并验证请求后再回源,避免把慢连接传递给源站。
超过阈值不一定立即封禁,可以先降低并发、发送挑战或临时拒绝高成本接口。规则需要在真实弱网和移动端回归测试,观察误拦截。
源站仍然需要自己的保护
CDN不是源站资源管理的替代品。Web服务器、应用网关和数据库都应设置连接池、队列和请求预算,限制单个请求占用的最长时间。源站仅接受CDN回源,防止攻击者绕过边缘直接建立慢连接。
容量规划要看并发和等待,而不只是每秒请求。监控活跃连接、未完成请求、线程池、文件描述符、上游队列和超时分布,才能在业务失败前发现资源耗尽。

如何验证防御是否有效
在隔离测试环境模拟不同发送速率、连接数和协议阶段,记录边缘断开时间、源站连接变化和正常用户成功率。测试应包含弱网、长轮询、文件上传和API回调,避免把合法长连接当攻击。
生产上线先观察告警,再小范围执行。攻击发生时保留样本和时间分布,事后调整阈值。一个好策略不是“断得最快”,而是在源站资源稳定的前提下,让真实用户尽可能完成请求。
阈值应该由业务样本决定
设置超时前,先收集正常用户在不同网络下的请求头完成时间、上传速率和长连接时长,按接口而不是全站计算分位值。登录接口可以更严格,视频上传和回调接口需要独立窗口。阈值应留出正常波动空间,并随客户端版本变化复核。
攻击期间若源站连接持续增加,可逐步收紧未完成请求上限,而不是一次跳到极端值。每次调整记录时间和业务成功率,形成可回滚的处置轨迹。这样既能保护资源,也能向客服解释少量失败请求发生的原因。

落地检查清单
- 分别设置头部、请求体、空闲与总会话超时
- 限制未完成请求并监控阶段完成率
- 上传和长连接接口使用独立策略
- 源站仅允许CDN回源并设置连接预算
- 用真实弱网场景验证误拦截率
结语
慢速DDoS利用的是服务器愿意等待的善意。通过边缘阶段性超时、行为基线和源站资源预算,把无限等待变成有边界的服务,才能在不伤害弱网用户的情况下阻断资源耗尽。