HTTP慢放攻击

Apache服务器现在使用较多的有三种简单防护方式:

mod_reqtimeout:Apache2.2.15后,该模块已经被默认包含,用户可配置从一个客户端接收HTTP头部和HTTPbody的超时时间和最小速率。如果一个客户端不能在配置时间内发送万头部或body数据,服务器会返回一个408REQUEST TIME OUT错误。配置文件如下:

LoadModule

reqtimeout_module module/mod_reqtimeout.so

< IfModule

mod_reqtimeout.c >

RequestReadTimeout

header=20-40,MinRate=500 body=20,MinRate=500

< /IfModule

>

mod_qos:Apache的一个服务质量控制模块,用户可配置各种不同粒度的HTTP请求阈值,配置文件如下:

< IfModule

mod_qos.c >

/# handle

connections from up to 100000 different IPs

QS_ClientEntries

100000

/# allow only 50

connections per IP

QS_SrvMaxConnPerIP

50

/# limit maximum

number of active TCP connections limited to 256

MaxClients 256

/# disables

keep-alive when 180 (70%) TCP connections are occupied

QS_SrvMaxConnClose

180

/# minimum

request/response speed (deny slow clients blocking the server, keeping

connections open without requesting anything

QS_SrvMinDataRate

150 1200

< /IfModule

>

mod_security:一个开源的WAF模块,有专门针对慢速攻击防护的规则,配置如下:

SecRule

RESPONSE_STATUS "@streq 408" "phase:5,t:none,nolog,pass,

setvar:ip.slow_dos_counter=+1, expirevar:ip.slow_dos_counter=60, id:'1234123456′"

SecRule

IP:SLOW_DOS_COUNTER "@gt 5" "phase:1,t:none,log,drop,

msg:'Client

Connection Dropped due to high number of slow DoS alerts', id:'1234123457′"

传统的流量清洗设备针对CC攻击,主要通过阈值的方式来进行防护,某一个客户在一定的周期内,请求访问量过大,超过了阈值,清洗设备通过返回验证码或者JS代码的方式。这种防护方式的依据是,攻击者们使用肉鸡上的DDoS工具模拟大量http request,这种工具一般不会解析服务端返回数据,更不会解析JS之类的代码。因此当清洗设备截获到HTTP请求时,返回一段特殊JavaScript代码,正常用户的浏览器会处理并正常跳转不影响使用,而攻击程序会攻击到空处。

而对于慢速攻击来说,通过返回验证码或者JS代码的方式依然能达到部分效果。但是根据慢速攻击的特征,可以辅助以下几种防护方式:1、周期内统计报文数量。一个TCP连接,HTTP请求的报文中,报文过多或者报文过少都是有问题的,如果一个周期内报文数量非常少,那么它就可能是慢速攻击;如果一个周期内报文数量非常多,那么它就可能是一个CC攻击。2、限制HTTP请求头的最大许可时间。超过最大许可时间,如果数据还没有传输完成,那么它就有可能是一个慢速攻击。

你可能感兴趣的:(HTTP慢放攻击)