在DDoS攻击的讨论中,注意力通常集中在流量洪泛型攻击——几十G、几百G的流量瞬间涌入,靠带宽把服务器打瘫。但有一类攻击恰好相反:它的流量极小,单个连接只消耗几KB带宽,却能通过长期占用连接资源,把服务器的连接表耗尽。这就是慢速攻击。
慢速攻击的防护难点在于:它不触发流量阈值告警,传统的基于带宽或PPS的清洗策略对它几乎无效。高防CDN需要在连接层和应用层识别慢速攻击的行为特征,才能有效防护。本文拆解三种常见慢速攻击的原理和识别逻辑。
一、Slowloris:让连接永远不完成
Slowloris攻击的目标是Web服务器。它的原理是:攻击者向服务器发起大量HTTP请求,但故意不发送完整的请求头。比如,一个正常的HTTP请求头在几百毫秒内发送完毕,Slowloris攻击者则每隔几十秒发送一个请求头字段,让服务器一直处于“等待请求完成”的状态。
服务器为每个未完成的请求维护一个连接状态,这个状态会占用内存和连接表项。当大量Slowloris连接同时存在时,服务器的连接表被占满,正常用户的请求无法建立连接。Slowloris的攻击强度很低——每个连接每秒只发送几十字节,不触发任何流量告警,但对服务器的连接资源消耗巨大。
高防CDN识别Slowloris的关键是连接生命周期监控。正常的HTTP请求从建立连接到请求完成,通常在几秒内结束;Slowloris连接的存活时间远超正常范围。清洗设备可以设置连接存活时间阈值,超过阈值的连接被判定为慢速攻击并强制关闭。同时,监控单位时间内来自同一源IP的新建连接数,如果某个源IP持续建立新连接但从不完成请求,也可以被标记为可疑。
二、慢速POST:用极低速率传输请求体
慢速POST攻击的目标是消耗服务器的应用层资源。它的原理是:攻击者发送一个Content-Length很大的POST请求,然后以极低的速率(如每秒1字节)发送请求体。服务器需要接收完整的请求体才能处理请求,因此在请求体接收完成之前,连接一直保持。
慢速POST与Slowloris的区别在于:Slowloris攻击的是请求头阶段,慢速POST攻击的是请求体阶段。两者都通过延长连接生命周期来消耗服务器资源,但触发的防御机制不同。Slowloris可以通过限制请求头接收时间防护,慢速POST则需要限制请求体接收时间。
高防CDN识别慢速POST的关键是传输速率监控。清洗设备需要计算每个连接的实时传输速率,如果某个连接的传输速率长期低于正常水平,且请求体大小远超已传输的数据量,可以判定为慢速POST攻击。清洗设备可以直接断开连接,或者对连接进行限速,强制其在合理时间内完成传输。
三、慢速读:拖延响应读取时间
慢速读攻击的目标是消耗服务器的响应资源。它的原理是:攻击者发起正常请求,但接收服务器响应时故意放慢读取速度——比如服务器发送了1MB的响应数据,攻击者只读取几KB,然后暂停,让服务器一直处于“等待发送剩余数据”的状态。
慢速读的攻击强度更低,因为它不消耗服务器的入站带宽,只消耗服务器的发送缓冲区和连接资源。但攻击效果与Slowloris类似——大量慢速读连接同时存在时,服务器的发送缓冲区被占满,正常用户的响应无法发送。
高防CDN识别慢速读的关键是发送缓冲区监控。清洗设备需要监控每个连接的发送缓冲区占用情况,如果某个连接长期存在未发送完的数据,且读取速率低于阈值,可以判定为慢速读攻击。清洗设备可以主动限制响应发送速率,或者在连接存活时间超过阈值后强制关闭。
| 攻击类型 | 攻击阶段 | 消耗资源 | 识别逻辑 |
|---|---|---|---|
| Slowloris | 请求头阶段 | 连接状态、连接表项 | 连接生命周期监控、新建连接频率 |
| 慢速POST | 请求体阶段 | 连接状态、应用层资源 | 传输速率监控、请求体完成时间 |
| 慢速读 | 响应阶段 | 发送缓冲区、连接资源 | 发送缓冲区监控、读取速率 |
四、慢速攻击防护的评估要点
评估高防CDN的慢速攻击防护能力时,需要确认以下事项。第一,连接层是否有存活时间限制。 能否对长期存活的连接进行监控和强制关闭。第二,是否有传输速率监控。 能否识别传输速率异常低的连接。第三,是否区分慢速攻击和正常慢速请求。 部分业务的正常请求本身可能较慢(如大文件上传),防护逻辑需要避免误封。第四,是否支持连接资源配额。 单个源IP或单个会话的连接数是否有限制,防止单一来源占满连接表。
慢速攻击的防护与高防CDN七层防护和四层防护的区别中提到的L4和L7分工有一定交叉:Slowloris和慢速POST的识别发生在L7(应用层),但连接资源的管理属于L4(传输层)的范畴。完整的高防CDN需要两层协同,才能有效防护慢速攻击。
五、结语
慢速攻击通过延长连接生命周期消耗服务器资源,不触发流量告警,是传统清洗策略的盲区。Slowloris攻击请求头阶段,慢速POST攻击请求体阶段,慢速读攻击响应阶段。高防CDN需要在连接层监控存活时间,在应用层监控传输速率,在响应层监控发送缓冲区,才能有效识别和拦截慢速攻击。评估时需要确认服务商是否具备连接生命周期监控和传输速率监控能力,这些细节比“是否支持慢速攻击防护”这个简单的勾选项更能说明防护的完整性。