Slowloris DDoS 攻击解析
Slowloris DDoS 攻击是一种分布式拒绝服务攻击,其攻击目标是 OSI 模型的第 7 层。这类网络滥用旨在建立并保持与某个目标 FQDN 的多个 TCP 连接,并以慢速/少量的方式在已建立连接的各会话中生成 HTTP 请求或 HTTP 连接。部分攻击方 IP 会尝试建立大量 TCP 连接,并利用额外的成功连接或会话合并传入请求,从而耗尽应用程序或数据库资源。Slowloris 攻击得名于“懒猴”(slow loris,生活在亚洲的一种行动缓慢的灵长类动物),如果未被检测到,这种攻击会持续很长一段时间。通过 Anonymous、伊朗政府、Killnet 等攻击发起团体使用的 HOIC (High Orbit Ion Cannon) 和 LOIC (Low Orbit Ion Cannon) 等常用攻击工具框架,Slowloris 攻击走进主流视野。如今,我们也看到其他一些攻击者在利用相同的攻击技术,但将其与现代化基础架构以及命令与控制方法配合使用。
Slowloris DDoS 攻击的目的是什么?
这种 DDoS 攻击可以说是简单而“优雅”的方法,让攻击者能在复杂性极低的情况下造成 Web 服务器宕机。但应对起来较为复杂,因为它们难以分辨,其抵御措施的质量也难以控制。Slowloris 攻击只需极少的带宽即可实施,它们通常采用 Python 编写,而且事实已经证明,这类攻击能非常有效地攻破许多类型的 Web 服务器软件,特别是 Apache 1.x 和 2.x。这些类型的攻击旨在伪装成合法请求,绕过发挥抵御作用的筛查程序。
不同于需要耗用大量带宽的反射式 DDoS 攻击,Slowloris 借助看似比普通 HTTP 请求要慢的 HTTP 请求耗尽服务器资源,但从其他方面来看,其流量似乎完全合乎标准。攻击者利用了 HTTP 协议的一项独有特性:客户端能够将 GET 或 POST HTTP 请求拆分成多个数据包或会话。攻击者使用 Slowloris 攻击 Web 服务器,方法是建立多个连接并尽可能长时间地保持连接处于打开状态。为达到这种效果,攻击者会将 HTTP 请求分配到全球多个 僵尸网络 IP 地址,并对每个来源的 TCP 连接进行多线程处理。为将连接保持在打开状态,Slowloris 软件可能会在一个 TCP 连接即将超时的时候为各请求发送 HTTP 标头,由此造成拒绝服务。最终,被攻击的服务器将达到其同时连接池的上限,无法再处理其他请求,由此达到拒绝其他合法服务的效果。Slowloris DDoS 攻击还会影响到其他网络基础架构,例如 Local Traffic Manager (LTM) 或者其他处理 TCP 会话管理的技术。
Slowloris DDoS 攻击为何如此有效?
Slowloris DDoS 攻击被视为分布式拒绝服务攻击,它并不会发送大量的 HTTP 请求,每秒请求速率也不高,这种以较低的每秒请求速率发送合法 HTTP 请求数据包的做法让它很容易逃脱检测。此外,日志文件要到请求完成后才能写入,Slowloris 可能会在一段时间内造成服务器陷入瘫痪,而且在日志文件中无迹可寻,负责监控服务器的人员自然也不会收到危险信号。
Slowloris DDoS 攻击与传统应用程序 DDoS 攻击有何区别?
传统应用程序 DDoS 攻击旨在发送超出服务器处理能力的海量 HTTP 请求,用这种泛洪的方式造成服务器宕机,这需要攻击者具备大量资源。相比之下,Slowloris 攻击只需要按间隔较长、持续时间较短的定期频率发送几百个请求,而不必持续发送数以万计的 HTTP 请求。带宽并非检测此类 DDoS 攻击的关键指标。安全团队应该评估连接企图的标准次数、处于开放状态的连接数量、连接池数量、传入 HTTP 请求的数量、不完整 HTTP 请求的数量、每个来源 IP 地址允许的连接数上限、维护会话表的负载均衡器、Web 服务器日志记录基础架构,以及 DMZ 内的其他网络或系统路径。
阻止 Slowloris 攻击的最佳方法是什么?
可行的 Slowloris 攻击抵御措施包括:
-
限制一个 IP 地址可请求建立的连接数量。
-
提高所有连接所允许的传输速度下限。
-
限制客户端可保持连接的时长。
-
增加服务器允许的客户端数量上限。
-
部署可靠的云端抵御服务,配置可靠的负载均衡器、使用 Web 应用程序防火墙 (WAF) 或其他虚拟修补技术,并实施限速以限制各来源可以发出的请求数。
Slowloris 攻击是如何实施的?
Slowloris 攻击的实施过程分为四步:
-
攻击者向其僵尸网络或反向代理发出命令和控制指令,后者发送多个 HTTP 请求、随机化标头及使用其他规避技术,同时通过其全球网络建立与目标服务器的多个连接。
-
目标服务器为每个请求建立一个 TCP 连接,并计划在相应 HTTP 请求完成时立即关闭该线程。服务器会将持续时间过长的连接设为超时,从而释放线程,使其可以接收后续请求。
-
为了防止线程超时,攻击者会间歇性地发送不完整的请求标头或额外的 HTTP 请求,保持目标 Web 服务器保持活动状态,有效造成服务器认定需要等待该 HTTP 请求完成。
-
在等待对方发送更多 HTTP 请求、发起 TCP 连接的过程中,目标服务器的可用连接数量最终会耗尽,无法再响应合法流量的请求,由此造成拒绝服务。
为什么会发生 Slowloris DDoS 攻击?
网络犯罪分子发起攻击的目的可能是:造成竞争对手或敌手的网站宕机;作为政治黑客行动主义攻击的一环;分散防御者注意力,造成其无法注意到同时进行、更为危险的其他安全入侵,这种做法也叫作“烟雾弹式攻击”。通常,攻击者使用此类攻击的理由还包括其特征难以辨别,而且滥用率高。针对此类攻击实施抵御措施可能会造成较高的误报率,给访问 Web 服务器或 Web 应用程序不同模块的用户造成负面用户体验。
暂无评论内容