Slowloris DDoS 攻击
一、简介
Slowloris DDoS 攻击是一种分布式拒绝服务攻击,其攻击目标是 OSI 模型的第 7 层。这类网络滥用旨在建立并保持与某个目标 FQDN 的多个 TCP 连接,并以慢速/少量的方式在已建立连接的各会话中生成HTTP 请求或 HTTP 连接,但从不完成任何请求。
这种类型的DDoS攻击启动所需的带宽最少,并且仅影响目标Web服务器,其他服务和端口不受影响,Slowloris DDoS攻击可以针对多种类型的Web服务软件。
二、攻击步骤
Slowloris DDoS攻击的实施过程分为四步:
- 攻击者向其僵尸网络或反向代理发出命令和控制指令,后者发送多个HTTP请求、随机化标头及其规避技术,同时通过其全球网络建立与目标服务器的多个连接。
- 目标服务器为每个请求建立一个TCP连接,并计划在相应HTTP请求完成时立即关闭该线程。服务器会持续时间过长的连接设为超时,从而释线程,使其可以接收后续请求。
- 为了防止线程超时,攻击者会间接性地发送不完整的请求标头或额外的HTTP请求,保持目标Web服务器保持活动状态,有效造成服务器认定需要等待该HTTP请求完成。
- 在等待对方发送更多HTTP请求、发送TCP连接的过程中,目标服务器的可用连接数量最终会耗尽,无法再响应合法流量的请求,由此造成拒绝服务。
三、与传统应用层DDoS攻击的区别
传统应用层DDoS攻击旨在发送超出服务器处理能力的海量HTTP请求,通过泛洪的方式造成服务器宕机,这需要攻击者需要具备大量资源能够淹没莫标注及。相比之下,Slowloris攻击只需要按间隔较长、持续时间较短的定期频率发送几个请求,而不必持续发送数以万计的HTTP请求。
这就导致网络带宽使用或连接请求数,不能再作为是否受到DDoS攻击依据。而安全团队应评估连接企图的标准次数、处于开放状态的连接数量、连接池数量、传入 HTTP 请求的数量、不完整 HTTP 请求的数量、每个来源 IP 地址允许的连接数上限、维护会话表的负载均衡器、Web 服务器日志记录基础架构,以及 DMZ 内的其他网络或系统路径。
四、缓解和防止
- 安全控制措施
- 增靠Web服务器允许的最大客户端数
- 限制允许单个IP地址尝试的连接数
- 对允许连接的最低传输速度进行限制
- 限制允许客户端保持连接的时间量
如果大量僵尸网络同时进行攻击,服务器也可能出现宕机
- 软件安全措施
- Apache相关安全模块
- Mod_limitipconn:限制单个IP并发连接数。
- Mod_qos:Apache服务质量,以提供不同用户、应用程序和数据的不同优先级连接。
- Mod_evasive:Apach防范DoS、DDoS的扩展模块,能够缓解在一定条件下的被DoS、DDoS的Apache服务器压力。
- Modsecurity:是一种用于Web程序的保护和检测引擎。
- Mod_noloris:为每一个HTTP请求增加一个标记,但是会增加服务器自身开销,并计算来自同一远程IP的连接数已处于SERVER_BUSY_READ状态(服务器正在从客户端读取数据)。当此计数过高时,后续连接将被拒绝。
- Mod_antiloris:作用与Mod_noloris功能相似。
五、攻击模拟
从Github克隆Slowloris工具,到Kali主机:
git clone https://github.com/gkbrk/slowloris.git
找到目标主机,使用命令
python3 slowloris.py IP_ADDRESS -s 300
数据包对比
- 正常数据包
2.异常数据包
通过两个数据包的连接方式对比可以发现,Slowloris DDoS攻击在最后结尾处没有使用\r\n
即ODOA
结尾,进而导致·其他用户无法访问。