类dos的http服务攻击工具slowloris
2010-08-02 00:16:07 阿炯

大致原理是, 攻击者先发送一个包:
GET / HTTP/1.1\r\n
Host: host\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n
Content-Length: 86\r\n

结尾少了一个\r\n,所以apache持继等待,攻击者再发起一轮请求过去就会再次加重服务器的fork进程开销。虽然linux的进程设计的就够轻量的了,但是这样不停的产生进程会在短时间内让系统负载猛升,apache很快达到其所能处理连接的上限而又不能释放,再也无法提供服务了。这种攻击是很古老的攻击了,apache的连接数有限(并发),配置文件里可以更改,如果这个连接数到达了上限,就不能接收新的请求了,所以就被dos了。发起攻击的时候一般是攻击者占住一个连接不让apache释放,就可以累计占用连接数。与SYN攻击方式以及其他暴力攻击方式相比,可以用极少的带宽实现攻击效果,使Apache的httpd进程挂起不释放,导致Apache服务进程占满,达到攻击效果。

X-a: b\r\n
攻击者可以多发送一些类似的组合,直到Apache连接数耗尽。Web服务器查看http进程状态,可以看到有大量的httpd进程: 这个东西威力还挺大,因为不需要太多流量,就是一些HTTP头。而另外一些攻击者提供更绝的方法:
1.- send a content-length header without sending enough data
2.- use the keep-alive header and an incomplete request
3.- send a lot of small headers very slow

这种攻击并非无法解决,可以参考以下方法:
1、修改apache的配置文件以缓解,如Apache的很多配置选项比如 Timeout, KeepAliveTimeOut, MaxClients 等都可以用于缓解这种dos的。
2、写一个apache mod专门处理这种攻击,或者使用现有的比如 mod_evasive, 或者是 mod_security 再辅助其他手段进行阻止。同时可以从攻击者使用方法的具体细节来防止,如单ip的最大链接数和可以使用的带宽(可以参考本站笔者的另一篇文章-'使用模块限制apache并发连接数和带宽')。
3、配置 Iptables, 对于连接最多的IP进行阻止。
4、使用防火墙,或者其他前置的网络设备,自己配置条规则。

而这些天听说有很多小网站被攻击,apache的受害最大。应该是很多人拿了slowloris这个工具在滥用。而 Apache 的 default 配置对此类攻击并没有防御效果,导致了攻击的猖獗。不过该攻击方法较SYN也有一定的缺陷,他在攻击停止的时候,会在Apache的Acess Log中突然产生大量连续重复的日志,很容易被追踪到,因此程序还有一定的改进空间,使其更接近真实客户的访问结果。

关于Slowloris
使用perl语言写的,所以需要安装perl解释器,perl解释器具体安装过程不再赘述。不过需要注意的是,需要为perl安装IO-Socket-SSL模块,否则运行时将提示错误。
在debian下的组件:libio-socket-ssl-perl
redhat下的包:perl-IO-Socket-SSL.noarch

下载地址:wget http://ha.ckers.org/slowloris/slowloris.pl
执行程序:perl slowloris.pl -dns 3w.xxxyyy.com -port 80 -timeout 30 -num 5000 -cache

易受到攻击的http服务器有:
*  Apache 1.x
* Apache 2.x
* dhttpd
* GoAhead WebServer
* WebSense "block pages" (unconfirmed)
* Trapeze Wireless Web Portal (unconfirmed)
* Verizon's MI424-WR FIOS Cable modem (unconfirmed)
* Verizon's Motorola Set-Top Box (port 8082 and requires auth - unconfirmed)
* BeeWare WAF (unconfirmed)
* Deny All WAF (unconfirmed)

以下的服务器不会受到影响:
*  IIS6.0
* IIS7.0
* lighttpd
* Squid
* nginx
* Cherokee (verified by user community)
* Netscaler
* Cisco CSS (verified by user community)

apache官方对此类攻击的说明参考地址:
http://httpd.apache.org/docs/trunk/misc/security_tips.html#dos