HTTP 慢速攻击是一种利用 HTTP 协议特性进行的攻击方式。它通过发送大量的半开连接请求到目标服务器,每个连接请求只发送少量的数据,并长时间保持连接不断开,导致服务器无法处理正常请求。
目前常见的 HTTP 慢速攻击主要分为以下三种:
- Slow headers (也称 slowloris):Web 应用在处理 HTTP 请求之前都要先接收完所有的 HTTP 头部。当 Web 服务器再没接收到 2 个连续的\r\n时,会认为客户端没有发送完头部,而持续等待客户端发送数据,从而消耗服务器的连接和内存资源。
-
- 攻击原理:攻击者在 HTTP 请求头中将 Connection 设置为 Keep-Alive,要求 Web Server 保持 TCP 连接不要断开,随后缓慢地每隔几分钟发送一个 key-value 格式的数据到服务端,如a:b\r\n,导致服务端认为 HTTP 头部没有接收完成而一直等待。如果攻击者使用多线程或者傀儡机来做同样的操作,服务器的 Web 容器很快就被攻击者占满了 TCP 连接而不再接受新的请求。
-
- 例如,客户端每隔一段时间如 5s 发送一个 HTTP 头部,由于没有\r\n\r\n结尾,服务端认为头部没有传送完成,会一直等待客户端发送数据,连接一直被占用。当这种请求占用完服务端的所有资源后,该服务端将无法提供正常的服务。
- Slow body (也称 Slow HTTP POST):攻击者发送一个 HTTP POST 请求,该请求的 Content-Length 头部值很大,使得 Web 服务器或代理认为客户端要发送很大的数据。服务器会保持连接准备接收数据,但攻击客户端每次只发送很少量的数据,使该连接一直保持存活,消耗服务器的连接和内存资源。
-
- 攻击原理:在 POST 提交方式中,允许在 HTTP 的头中声明 content-length,也就是 POST 内容的长度。在提交了头以后,将后面的 body 部分卡住不发送,这时服务器在接受了 POST 长度以后,就会等待客户端发送 POST 的内容,攻击者保持连接并且以 10S - 100S 一个字节的速度去发送,就达到了消耗资源的效果。
-
- 例如,将 Content-Length 设置为一个较大的值(如抓包中的 2000 字节),然后以每隔一段时间去发送很小的内容(如抓包中每次发送一个test1234),从而和服务器保持长时间连接,当这种攻击数量大的时候,服务器就会拒绝服务,从而导致正常业务无法进行。
- Slow read (也称 Slow Read attack):客户端与服务器建立连接并发送了一个 HTTP 请求,客户端发送完整的请求给服务器端,然后一直保持这个连接,以很低的速度读取 Response,比如很长一段时间客户端不读取任何数据,通过发送 Zero Window 到服务器,让服务器误以为客户端很忙,直到连接快超时前才读取一个字节,以消耗服务器的连接和内存资源。
-
- 攻击原理:采用调整 TCP 协议中的滑动窗口大小,来对服务器单次发送的数据大小进行控制,使得服务器需要对一个回应分成很多个包来发送。要使这种攻击效果更加明显,请求的资源要尽量大。
-
- 例如,将 windows size 被刻意设置为很小的值,如 512,然后依次递减,这样就会造成服务器需要很长时间发送客户端所需数据,从而达到长时间占用服务器资源的目的。
二、攻击方式大揭秘
(一)Slow read 攻击
Slow read 攻击是 HTTP 慢速攻击的一种方式。攻击者建立连接后发送完整请求,然后以很低的速度读取 Response,消耗服务器连接和内存资源。
其攻击原理是采用调整 TCP 协议中的滑动窗口大小,来对服务器单次发送的数据大小进行控制,使得服务器需要对一个回应分成很多个包来发送。要使这种攻击效果更加明显,请求的资源要尽量大。例如,将 windows size 被刻意设置为很小的值,如 512,然后依次递减,这样就会造成服务器需要很长时间发送客户端所需数据,从而达到长时间占用服务器资源的目的。
(二)Slow headers 攻击
Slow headers 攻击也是 HTTP 慢速攻击的常见形式之一。攻击者发送 HTTP 请求,一直不停发送 HTTP 头部但不发送结束符,占用服务器连接资源。
攻击原理是,正常情况下当 client 和 server 通信时,client 发送的 header 请求头信息的结尾应该是 “0d0a0d0a”。但是在 Slow headers 攻击中,只会发送 “0d0a”,而 HTTP 协议默认在服务器接收到全部信息之后才会开始处理,如果始终没有接收到完整的 request 信息那么服务器会为其保留连接池并持续等待后续信息直到连接超时。通常配置不太好的服务器的并发连接池数并不多,当攻击者连续不间断的建立连接并占满 server 的连接池资源之后,server 就不能为正常用户提供服务,达到 DoS 攻击效果。
例如,客户端每隔一段时间如 5s 发送一个 HTTP 头部,由于没有 “\r\n\r\n” 结尾,服务端认为头部没有传送完成,会一直等待客户端发送数据,连接一直被占用。当这种请求占用完服务端的所有资源后,该服务端将无法提供正常的服务。
(三)Slow body 攻击
Slow body 攻击在 HTTP 慢速攻击中同样具有很大危害。攻击者发送 HTTP POST 请求,设置很大的 Content-Length 值,却以缓慢速度发送数据,耗尽服务器资源。
攻击原理为,在 Post 攻击中 http header 头是完整发送的,但是这里会利用 header 头里面的 content-length 字段,正常情况下 content-length 的长度就是所要发送的数据长度,但是攻击者可以定制 client 发送的 content-length,于是如果攻击者发送一个 content-length 特别大的值,那么 server 就会等待后续没有传完的 body 内容。此时攻击者会延迟发送后续的 body 甚至是不发送,但是 server 端依旧会在等待并为其保留连接池并持续等待后续信息直到连接超时。如果攻击者与服务器建立大量连接,而且都告诉 server 后续还要传输数据,那么 server 的连接池到达一定程度时就会被占满达到 DoS 攻击。
例如,将 Content-Length 设置为一个较大的值(如抓包中的 2000 字节),然后以每隔一段时间去发送很小的内容(如抓包中每次发送一个 “test1234”),从而和服务器保持长时间连接,当这种攻击数量大的时候,服务器就会拒绝服务,从而导致正常业务无法进行。
三、攻击特点细分析
(一)隐蔽性高
HTTP 慢速攻击利用 HTTP 协议合法特性,难被传统安全设备识别,其隐蔽性高主要体现在以下几个方面。首先,慢速攻击使用的都是合法的 HTTP 语法,如在 Slow Headers 攻击中,攻击者发起 HTTP 请求,一直不停发送 HTTP 头部但不发送结束符,利用服务器在没接收到 2 个连续的\r\n时会认为客户端没有发送完头部而持续等待的特性,使得普通的入侵检测系统难以将其识别为恶意行为。其次,无论是 Slow read 攻击、Slow headers 攻击还是 Slow body 攻击,外观上与正常请求并无明显区别,这使得许多传统的安全设备很难察觉。例如,在 Slow read 攻击中,攻击者建立连接后发送完整请求,然后以很低的速度读取 Response,这种行为与正常用户偶尔的网络延迟或缓慢操作相似,难以区分。
(二)占用资源少
每个慢速连接只发送少量数据,攻击者可使用较少资源发起大量攻击。在 Slow headers 攻击中,攻击者持续以极低速率(如每秒一个字节)发送额外的头部字段,单个连接的带宽消耗极低。Slow body 攻击中,每次只发送很小的报文(比如 10 - 100s 发一个字节),同样占用很少的资源。而在 Slow read 攻击中,很长一段时间客户端不读取任何数据,通过发送 Zero Window 到服务器,直到连接快超时前才读取一个字节,也几乎不占用多少资源。攻击者可以利用这种特性,用普通 PC 就能建立多达 3000 个以上的此类连接,迅速耗尽服务器资源。
(三)攻击效果显著
HTTP 慢速攻击能够迅速导致服务器性能下降甚至崩溃。以三种常见的慢速攻击方式为例,Slow headers 攻击会使服务器的连接资源被大量无效连接占据,无法处理正常请求,导致服务器 CPU 和内存因持续处理无效连接而过度负载,在极端情况下可能导致服务器崩溃或重启。Slow body 攻击中,服务器会一直等待攻击者发送数据,当大量这样的连接存在时,服务器资源被大量消耗,最终无法响应正常业务。Slow read 攻击以很低的速度读取 Response,长时间占用服务器连接和内存资源,使得新的请求无法得到处理,同样会影响服务器性能,当攻击数量大的时候,服务器就会拒绝服务,从而导致正常业务无法进行。
四、防火墙如何防范 HTTP 慢速攻击
(一)配置防火墙
防火墙在防范 HTTP 慢速攻击中起着至关重要的作用。通过限制连接速度和数量,可以有效减少攻击者占用服务器资源的机会。使用专业防火墙设备,能够更好地监控和管理网络流量,及时发现异常连接并采取相应措施。例如,可以设置每个 IP 地址的最大连接数,当超过这个数量时,防火墙可以自动阻断该 IP 的连接请求,从而防止攻击者利用大量连接进行慢速攻击。
(二)使用防护软件
专业的防护软件可以对网络流量进行实时监控和过滤,是防范 HTTP 慢速攻击的重要手段。这些软件能够检测到异常的网络行为,如大量慢速连接、长时间不释放连接等,并及时阻止攻击。防护软件可以通过分析流量模式和数据包特征,识别出潜在的慢速攻击,并采取相应的防护措施,如断开连接、封锁 IP 地址等。同时,防护软件还可以提供警报功能,让管理员能够及时了解网络安全状况,以便采取进一步的措施。
(三)服务器优化
服务器优化是防范 HTTP 慢速攻击的重要环节。增加硬件配置,如提升 CPU、内存和带宽等,可以提高服务器的处理能力和响应速度,使其能够更好地应对大量的连接请求。同时,软件性能优化也不可或缺。通过优化服务器配置和应用程序代码,可以减少资源消耗,提高服务器的整体性能。例如,可以优化数据库查询、缓存机制等,以减少服务器的响应时间,降低被攻击的风险。
(四)定期更新服务器系统
定期更新服务器系统是防范 HTTP 慢速攻击的必要措施。及时修补漏洞可以防止攻击者利用已知的安全漏洞进行攻击。服务器系统的漏洞可能会被攻击者利用,从而导致服务器被攻击。因此,定期检查和更新服务器系统,安装最新的安全补丁,可以有效提高服务器的安全性。同时,更新服务器系统还可以提升服务器的性能和稳定性,为防范 HTTP 慢速攻击提供更好的基础。
(五)设置请求超时时间
合理设置请求超时时间是防范 HTTP 慢速攻击的有效方法。当连接在一定时间内没有活动时,自动关闭该连接,可以避免攻击者长时间占用连接资源。例如,可以将请求超时时间设置为较短的时间,如 30 秒或 60 秒。如果在这段时间内没有收到客户端的请求或响应,服务器可以自动断开连接,释放资源。这样可以有效地防止攻击者利用慢速连接进行攻击,提高服务器的资源利用率。
(六)使用高防 CDN
高防 CDN 在防范 HTTP 慢速攻击中具有重要作用。利用分布式节点防护,高防 CDN 可以将攻击流量分散到多个节点,减轻源站服务器的压力。智能流量清洗功能可以实时监测并过滤掉恶意流量,确保合法流量顺畅到达目标服务器。例如,当发生 HTTP 慢速攻击时,高防 CDN 可以快速识别异常流量,并将其引导到清洗节点进行处理,从而保护源站服务器不受攻击影响。同时,高防 CDN 还可以提高网站的访问速度和用户体验,为网站的安全稳定运行提供有力保障。
五、防护效果展风采
防火墙对 HTTP 慢速攻击具有显著的防护效果,能够有效保障服务器的安全稳定运行。
首先,防火墙通过多种防护策略,如紧急模式 CC 防护、自定义 CC 防护规则等,可以清洗类似 Slowloris 类型的慢速攻击。在紧急模式 CC 防护中,综合源站异常响应情况(超时、响应延迟)和网站历史访问大数据分析,紧急模式决策生成防御策略,实时拦截高频访问请求。自定义 CC 防护则可以根据用户访问源 IP 或者 SESSION 频率制定防护规则,对访问进行处置,处置措施包括告警、人机识别和阻断。
其次,防火墙还可以限制连接速度和数量。通过配置防火墙,限制来自单个 IP 地址的连接速度和总连接数,以减少攻击者对服务器的占用。使用专业的防火墙设备,如路由器、交换机等,来限制网络流量和连接速度,提高网络安全性。
专业的防护软件也是防火墙防护体系的重要组成部分。防护软件能够对网络流量进行实时监控和过滤,检测到异常的网络行为,如大量慢速连接、长时间不释放连接等,并及时阻止攻击。防护软件可以通过分析流量模式和数据包特征,识别出潜在的慢速攻击,并采取相应的防护措施,如断开连接、封锁 IP 地址等。同时,防护软件还可以提供警报功能,让管理员能够及时了解网络安全状况。
服务器优化也是防火墙防护的重要环节。增加硬件配置,如提升 CPU、内存和带宽等,可以提高服务器的处理能力和响应速度,使其能够更好地应对大量的连接请求。同时,软件性能优化也不可或缺。通过优化服务器配置和应用程序代码,可以减少资源消耗,提高服务器的整体性能。
定期更新服务器系统是防范 HTTP 慢速攻击的必要措施。及时修补漏洞可以防止攻击者利用已知的安全漏洞进行攻击。服务器系统的漏洞可能会被攻击者利用,从而导致服务器被攻击。因此,定期检查和更新服务器系统,安装最新的安全补丁,可以有效提高服务器的安全性。
合理设置请求超时时间也是防范 HTTP 慢速攻击的有效方法。当连接在一定时间内没有活动时,自动关闭该连接,可以避免攻击者长时间占用连接资源。例如,可以将请求超时时间设置为较短的时间,如 30 秒或 60 秒。如果在这段时间内没有收到客户端的请求或响应,服务器可以自动断开连接,释放资源。
高防 CDN 在防范 HTTP 慢速攻击中也具有重要作用。利用分布式节点防护,高防 CDN 可以将攻击流量分散到多个节点,减轻源站服务器的压力。智能流量清洗功能可以实时监测并过滤掉恶意流量,确保合法流量顺畅到达目标服务器。
总之,防火墙通过多种防护策略和手段,能够有效防范 HTTP 慢速攻击,保障服务器的安全稳定运行。
墨者安全 防护盾
墨者安全作为专业级别安全防护专家,在应对 Webshell 风险隐患方面展现出了卓越的能力。其拥有全面的检测机制,能够精准识别 Webshell 的各种类型和变体,无论是复杂的大马,还是隐蔽的内存马,都难逃其敏锐的监测。
墨者安全防护盾具备强大的实时监控功能,对服务器的各项活动进行 7*24 小时不间断的监视。一旦发现任何可疑的 Webshell 活动迹象,立即发出警报,并迅速采取隔离和清除措施,将风险扼杀在萌芽状态。
在防护策略上,墨者安全防护盾采用了多层次的防御体系。不仅能够在网络层面阻挡外部的恶意访问和攻击,还能深入系统内部,对服务器的文件系统、进程等进行深度检查和保护,确保 Webshell 无法植入和运行。
同时,墨者安全防护盾拥有快速的应急响应能力。当 Webshell 攻击事件发生时,专业的安全团队能够迅速介入,进行深入的分析和处理,最大程度减少攻击带来的损失,并帮助用户快速恢复服务器的正常运行。
墨者安全防护盾还注重用户教育和培训,为用户提供关于 Webshell 防范的专业知识和最佳实践,帮助用户提升自身的安全意识和防范能力,共同构建坚实的网络安全防线。