缓慢的HTTP POST DoS攻击依赖于HTTP协议的事实,通过设计,将每次发送数据包的一部分。如果一个HTTP请求是不完整的,或者如果转移率非常低,服务器保持其资源忙等待其余的数据。如果服务器保持太多的资源忙,HTTP服务器将拒绝其它的请求服务。这个工具就是通过发送缓慢HTTP请求,让目标HTTP服务器处于忙碌状态(也可以这样理解,当post请求时,指定一个非常大的content-length,然后以很低的速度发包)。
测试使用工具 slowhttptest
下载地址:http://code.google.com/p/slowhttptest/downloads/list
安装方法
cd slowhttptest-x.x
./configure
make
make install
- z字节从接收缓冲区读取字节与单一的read()操作
案例说明
slowhttptest -c 1000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://mysite -x 10 -p 3
效果很明显,网页打开明显变慢
解决措施
对web服务器的http头部传输的最大许可时间进行限制,修改成最大许可时间为20秒。
预防,监控措施
统计每个TCP连接的时长并计算单位时间内通过的报文数量即可做精确识别。一个TCP连接中,HTTP报文太少和报文太多都是不正常的,过少可能是慢速连接攻击,过多可能是使用HTTP 1.1协议进行deHTTP Flood攻击,在一个TCP连接中发送多个HTTP请求。
限制HTTP头部传输的最大许可时间。超过指定时间HTTP Header还没有传输完成,直接判定源IP地址为慢速连接攻击,中断连接并加入黑名单。