HTTP GET Flood攻击防护解析

在这里插入图片描述

HTTP GET Flood

HTTP GET Flood攻击的原理很简单,攻击者利用攻击工具或者操纵僵尸主机,向目标服务器发起大量的HTTP GET报文,请求服务器上涉及数据库操作的URI或其它消耗系统资源的URI,造成服务器资源耗尽,无法响应正常请求。

302重定向

302重定向认证的原理是Anti-DDoS系统代替服务器向客户端响应302状态码(针对GET请求方法的重定向),告知客户端需要重定向到新的URL,以此来验证客户端的真实性。真实客户端的浏览器可以自动完成重定向过程,通过认证;而虚假源或者一般的攻击工具没有实现完整的HTTP协议栈,不支持自动重定向,无法通过认证。

①当连续一段时间内去往目标Web服务器的HTTP GET请求报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统将会代替服务器与客户端建立TCP三次握手。

②Anti-DDoS系统拦截HTTP请求,代替Web服务器回应302状态码,将客户端的访问重定向到一个新的URI。

③如果这个源是虚假源,或者不支持完整HTTP协议栈的攻击工具,不会向新的URI发起请求。

④如果这个源是真实客户端,则会向新的URI发起请求。Anti-DDoS系统收到请求后,将该客户端的源IP地址加入白名单。然后Anti-DDoS系统会再次回应302状态码,将客户端的访问重定向到一开始访问的URI。

⑤后续这个客户端发出的HTTP请求报文命中白名单直接通过。

验证码认证

验证码认证的原理是Anti-DDoS系统要求客户端输入验证码,以此来判断请求是否由真实的用户发起,而不是由攻击工具或僵尸主机发起。因为攻击工具或僵尸主机无法自动响应随机变化的验证码,所以能够有效的防御攻击。

①当连续一段时间内去往目标Web服务器的HTTP GET请求报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统将会代替服务器与客户端建立TCP三次握手。

②Anti-DDoS系统拦截HTTP请求,向客户端返回验证码页面,要求客户端输入验证码。

③如果这个源是攻击工具或僵尸主机,不会输入验证码。

④如果这个源是真实客户端,则会输入验证码并通过认证,Anti-DDoS系统将该客户端的源IP地址加入白名单。然后Anti-DDoS系统会请客户端继续访问一开始的URI。

⑤后续这个客户端发出的HTTP请求报文命中白名单直接通过。

验证码认证方式与302认证方式相比,防御效果更好,但是由于需要人机交互输入验证码,用户体验稍差一些。在实际使用验证码认证方式时,可以增加源IP统计的环节,即Anti-DDoS系统先基于目的IP进行统计,当去往某个目的IP的HTTP请求超过阈值时,启动基于源IP的统计。当来自某个源的HTTP请求也超过阈值时,才启动验证码认证机制。这样就会精确控制需要进行验证码认证的源IP范围,避免大范围的源IP都要输入验证码。

302重定向认证和验证码认证这两种源认证方式是防御HTTP GET Flood攻击的有效手段,但是源认证方式也存在一定的局限,比如机顶盒视频点播、特定移动网络等场景中,无法对客户端使用源认证方式。

HTTP POST Flood

攻击者利用攻击工具或者操纵僵尸主机,向目标服务器发起大量的HTTP POST报文,消耗服务器资源,使服务器无法响应正常请求,这就是HTTP POST Flood攻击。

重定向认证

Anti-DDoS系统代替服务器向客户端响应307状态码(针对POST请求方法的重定向),同时向客户端的浏览器注入Cookie,客户端再次发起请求时会在HTTP报头上附加Cookie信息,Anti-DDoS设系统通过验证Cookie信息的真实性来验证客户端。

①当连续一段时间内去往目标Web服务器的HTTP POST请求报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统将会代替服务器与客户端建立TCP三次握手。

②Anti-DDoS系统拦截HTTP请求,代替Web服务器回应307状态码,并在响应头部附加上由客户端IP生成的Cookie。

③如果这个源是虚假源,或者不支持完整HTTP协议栈的攻击工具,不会重新发起请求。

④如果这个源是真实客户端,Anti-DDoS系统生成的Cookie会写入到浏览器中,并且客户端会重新发起请求,请求头部就会带有该Cookie信息。Anti-DDoS系统收到请求后,验证Cookie是否正确,如果正确则将该客户端的源IP地址加入白名单。然后Anti-DDoS系统会回应408状态码,表示请求超时,使客户端重新发起访问。

⑤后续这个客户端发出的HTTP请求报文命中白名单直接通过。

上面介绍的307重定向认证方式能够很好地防御HTTP POST Flood攻击,但是这种方式也具有一定的局限性。其一,依赖于客户端浏览器的Cookie的机制,受安全级别限制。如果客户端的浏览器安全级别较高而无法写入Cookie,会导致认证不通过;其二,第一阶段重定向结束后,需要客户端再次手动执行提交等操作,才能重新发起POST请求。

同HTTP GET Flood的防御方式相似,HTTP POST Flood的源认证防御也支持增强方式,即验证码认证。

验证码认证

此处的验证码认证与HTTP GET Flood中的验证码机制相同,Anti-DDoS系统要求客户端输入验证码,以此来判断请求是否由真实的用户发起。其弊端也是需要人机交互输入验证码,用户体验稍差一些。具体的工作原理请参考HTTP GET Flood攻击与防御部分中的介绍,此处不再赘述。

猜你喜欢

转载自blog.csdn.net/LuHai3005151872/article/details/107610714