2. 国家计算机网络应急技术处理协调中心, 北京 100029;
3. 四川科瑞软件有限责任公司, 四川 绵阳 621000
DDoS攻击会导致Web服务器无法向用户提供正常的服务.应用层DDoS攻击不同于网络层DDoS攻击,所有应用层DDoS请求都是合法的.慢速DDoS攻击主要利用的是thread-based架构的服务器的特性,这种服务器会为每个新连接打开一个线程.攻击者和Web服务器建立正常的HTTP连接以后,通过各种方法保持这个连接,从而占用服务器大量的资源.对应用层慢速DDoS的原理进行分析,并提出了相应的防御方法,能提高服务器抗DDoS攻击的能力,从而有效地提升服务器的安全性能.
2. National Computer Network Emergency Response Technical Team/Coordination Center of China, Beijing 100029, China;
3. Sichuan Kerui Software Co. Ltd, Sichuan Mianyang 621000, China
Web server can't provide normal service for users under DDoS attack. DDoS attack on application layer is different from DDoS attack on network layer, and each request sent by DDoS attack on application layer is legal. Slow DDoS attack mainly uses thread-based architecture characteristics of Web server. Web server of this type will open a new thread for every new connection. After the attacker has built a normal HTTP connection with Web server successfully, he will hold this connection through all kinds of methods to take up a lot of resources of Web server. The principle of slow DDoS on application layer is analyzed and related defense methods are proposed, which can improve ability to resist DDoS attack of Web server and safety performance.
分布式拒绝服务(DDoS,distribute deny of service)攻击会导致Web服务器无法向用户提供正常的服务.应用层的DDoS攻击和网络层的DDoS攻击不同,应用层的DDoS攻击的请求全部是合法业务请求. Web服务器应用层的DDoS攻击方法是通过大量消耗Web服务器的正常资源,从而导致Web服务器无法向用户提供正常的服务.为了保护Web信息系统的安全,需要对Web信息系统进行安全分析与评估.慢速DDoS攻击主要利用的是thread-based架构的服务器的特性,这种服务器会为每个新连接打开一个线程.攻击者和Web服务器建立正常的HTTP连接以后,通过各种方法保持这个连接,从而大量占用服务器的资源.
通过搭建Web服务器模拟系统对常见慢速DDoS攻击原理进行分析,从应用层DDoS攻击的特点出发,研究并提出应用层慢速DDoS攻击的防御方法,提高服务器抗DDoS攻击的能力,从而提高服务器的安全性能.
介绍了慢速DDoS的攻击原理,对慢速DDoS攻击原理实验进行了描述并提出应对慢速DDoS攻击的防御方法.
1 慢速DDoS原理应用层DDoS攻击大量消耗Web服务器的正常资源,从而导致Web服务器无法向用户提供正常服务而且应用层DDoS攻击不同于网络层DDoS攻击,所有应用层DDoS攻击的请求都是合法的.其中最为典型的攻击为CC攻击. CC攻击的本名为HTTP-FLOOD,是一种专门针对Web服务器的应用层FLOOD攻击,攻击者操纵网络上的被控肉鸡,对攻击目标Web服务器进行海量http request攻击,直到服务器带宽被占满,无法向其他用户提供正常的访问,造成了拒绝服务[1].由于伪造的HTTP请求和客户正常请求没有区别,加大了防御的难度.
CC攻击需要攻击者控制网络上大量的肉鸡计算机,利用这些被控肉鸡计算机在短时间内向被攻击Web服务器发送海量攻击请求.慢速DDoS攻击无须控制网络上其他肉鸡计算机,只需要使用攻击者一台个人计算机就可以让一个中小型Web服务器在1 min之内拒绝其他用户的服务,从而无法提供Web服务.
慢速DDoS攻击的原理如下:对任何一个开放了HTTP访问的Web服务器,攻击者先建立一个连接,指定一个比较大的Content-Length,然后以非常低的速度发包,比如1~10 s发一个字节,然后一直维持该连接不断开.如果客户端持续建立多个此种类型的连接,Web服务器可用的连接将逐步被攻击者占满,从而Web服务器无法向正常用户提供服务,导致拒绝服务[2].
慢速DDoS攻击分为3种类型.
1) Slow headers.因为HTTP头部包含了一些Web应用可能用到的重要信息,Web应用服务器必须在接收完所有的HTTP头部以后才能处理HTTP请求中的数据. Web服务器必须收到2个连续的\r\n时才会认为HTTP头部发送完毕.攻击者利用这个特点,向Web服务器发起一个HTTP请求,一直不停地发送HTTP头部,消耗服务器的连接和内存资源.攻击方法是:攻击者客户端与服务器建立TCP连接后,每30 s才向服务器发送一个HTTP头部,因为Web服务器一直没有收到2个连续的\r\n,Web服务器认为客户端没有发送完头部,从而持续等待客户端发送数据.
2) Slow body.攻击者向Web服务器发送一个HTTP POST请求,该请求的Content-Length头部值很大,Web服务器以为客户端要发送很大的数据.服务器会一直保持连接准备接收数据,但攻击客户端每次只发送很少量的数据,使该连接一直保持存活,消耗服务器大量资源.攻击方法是:攻击客户端与服务器建立TCP连接后,发送完整的HTTP头部,但是HTTP POST方法带有较大的Content-Length,然后每10 s发送一次随机的参数. Web服务器因为没有接收到相应Content-Length的HTTP报的内容,而持续地等待客户端发送数据,造成Web服务器资源被无效连接所占用,无法向客户提供正常服务[3-4].
3) Slow read.攻击者客户端与Web服务器建立连接并发送了一个HTTP请求,客户端发送完整的请求给服务器端,然后一直保持该连接,以很低的速度读取Web服务器的Response,比如很长一段时间攻击者客户端不读取任何数据,通过发送Zero Window到服务器,让服务器误以为客户端很忙,直到连接快超时之前才读取一个字节,以消耗服务器的连接和内存资源.攻击方法是:客户端把数据发给服务器后,服务器发送响应时,收到了客户端的Zero Window提示(表示自己没有缓冲区用于接收数据),服务器不得不持续地向客户端发出Zero Window Probe包,询问客户端是否可以接收数据[5-6].
以3种类型中的Slow body慢速DDoS攻击为主要研究对象.
2 仿真实验 2.1 环境搭建本系统所使用的实验环境分为两部分,其中一部分为搭建了Web服务器模拟系统的靶机,Web服务器为使用了thread-based架构的Apache;另外一部分是攻击机,其中攻击机的系统环境为已安装好攻击工具Slow Http Test的Kali.
通过使用Slow Http Test工具模拟HTTP攻击并向系统发起攻击使Web服务器不断保持连接等待状态并且消耗资源,使用服务器压力测试工具httperf和autobench测试出在服务器达到处理请求的门限值时,相应的连接速率、请求速率等不再变化.
2.2 Slow Http TestSlow Http Test是一款对Web服务器进行慢攻击的测试软件,慢攻击是相对于CC或者DDoS的快而言的,并不是只有量大速度快才能使Web服务器崩溃,使用慢攻击有时候也能达到同一效果. Slow Http Test测试软件包括Slowloris,Slow HTTP POST,Slow Read Attack等攻击方式.这些慢攻击工具的原理就是让Web服务器等待,让服务器在保持连接等待时,不断消耗资源.
本实验中使用的慢攻击方式为Slow HTTP POST,在POST的提交方式中,允许在HTTP的头中声明content-length,也就是POST内容的长度.在提交了头以后,将后面的body部分卡住不发送,这时服务器在接受了POST长度以后,就会等待客户端发送POST的内容,攻击者保持连接并且以10~100 s一个字节的速度去发送,就达到了消耗资源的效果,因此不断地增加这样的连接,就会使得服务器的资源被消耗,最后可能死机,但是可能对很多Web服务器程序已经失效了[7-8].
2.3 仿真结果通过使用Slow Http Test工具对靶机发起慢速DDoS攻击,并用httperf和autobench压力测试工具对服务器进行监测,得到仿真数据如表 1所示.其中,1) Rr为每秒向Web服务器发送的请求数(并发数); 2) Rc为每秒建立连接的请求数; 3) Rmin为每秒响应的最小请求数; 4) Ra为每秒响应的平均请求数; 5) Rmax为每秒响应的最大请求数; 6) T为服务器响应时间.将表 1数据绘成相应图形便于直观分析,得到结果如图 1所示.
结合表 1和图 1可以看出,在并发数小于等于50前,随着并发数不断增加,服务器的连接速率几乎相应地增长,每秒响应请求数的各项指标Rmin、Ra、Rmax也不断增加,服务器的响应时间值变化不大,比较稳定,但在并发数达到50之后,服务器的连接速率近似不变(因网络不稳定存在小波动),每秒响应请求数的各项指标Rmin、Ra、Rmax也逐渐趋于稳定,服务器的响应时间值突然大幅度增加,并一直趋于增长趋势.实验结果表明,服务器处理响应请求的门限值近似为50,在慢速DDoS攻击的并发数达到50之后,服务器已达到请求最大承受能力.
3 慢速DDoS攻击防御方法 3.1 使用Anti-DDoS设备针对HTTP慢速DDoS攻击的特点,Anti-DDoS设备对每秒钟HTTP并发连接数进行检查,当每秒钟HTTP并发连接数超过设定值时,会触发HTTP报文检查,检查出以下任意一种情况,都认定受到HTTP慢速连接攻击,则将该源IP地址判定为攻击源,加入动态黑名单,同时断开此IP地址与HTTP服务器的连接.
1) 连续多个HTTP POST报文的总长度都很大,但是其HTTP载荷长度都很小.
2) 连续多个HTTP GET/POST报文的报文头都没有结束标识.
3.2 NginxNginx (engine x)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好[9].利用搭建好的Nginx服务器,主要有两种防御方法可以有效抵抗慢速DDoS攻击:主动防御法和被动防御法.
1) 主动防御法
为了让Nginx支持更多的并发连接数,根据实际情况对工作线程数和每个工作线程支持的最大连接数进行调整.例如设置“worker_processes 10”和“worker_connections 1024”,那这台服务器支持的最大连接数就是10×1 024=10 240. Nginx 0.7开始提供了2个限制用户连接的模块:NginxHttpLimitZoneModule和NginxHttpLimitReqModule. NginxHttpLimitZoneModule可以根据条件进行并发连接数控制. Nginx Http Limit Req Module可以根据条件进行请求频率的控制[10].
2) 被动防御法
① 禁止IP地址
访问者通过浏览器正常访问网站,与服务器建立的连接一般不会超过20个,可以通过脚本禁止连接数过大的IP访问.
② 根据特征码屏蔽请求
一般同一种慢速DDoS攻击工具发起的攻击请求包总是相同的,而且和正常请求有所差异.当服务器遭遇慢速DDoS攻击时,可以快速查看日志,分析其请求的特征,比如User-agent,将攻击请求包中的参数值作为特征进行过滤,将符合特征的请求全部拒绝访问[11].
4 结束语慢速DDoS攻击主要利用的是thread-based架构的服务器的特性,这种服务器会为每个新连接打开一个线程.攻击者和Web服务器建立正常的HTTP连接以后,通过各种方法保持这个连接,从而大量占用服务器的资源.从应用层DDoS攻击的特点出发,通过搭建Web服务器模拟系统对常见慢速DDoS攻击原理进行分析,并提出应用层慢速DDoS攻击的防御方法,能提高服务器抗DDoS攻击的能力,从而提高服务器的安全性能.在未来的研究工作中,将继续通过仿真实验对提到的慢速DDoS攻击的防御方法进行检测,并验证其抗慢速DDoS攻击的能力.
[1] | 徐琳. 应用层DDoS攻击防御与检测方法[D]. 上海: 上海交通大学, 2013. http://d.wanfangdata.com.cn/Thesis/D544869 |
[2] | 田开琳. 低速DDoS攻击的异常检测[D]. 上海: 华东师范大学, 2010. http://cdmd.cnki.com.cn/Article/CDMD-10269-2010198641.htm |
[3] | 冯鸿雁, 刘利锋. 一种防止网络攻击的方法及装置[M]. 2008. |
[4] | 王飞. 分布式拒绝服务攻击检测与响应技术研究[D]. 长沙: 国防科学技术大学, 2013. http://cdmd.cnki.com.cn/Article/CDMD-90002-1014047673.htm |
[5] |
张永铮, 肖军, 云晓春, 等. DDoS攻击检测和控制方法[J]. 软件学报, 2012, 23(8): 2058–2072.
Zhang Yongzheng, Xiao Jun, Yun Xiaochun, et al. DDoS attacks detection and control mechanisms[J]. Journal of Software, 2012, 23(8): 2058–2072. |
[6] |
王浩. 针对TCP的低速DDoS解析及防御策略[J]. 计算机工程, 2009, 35(13): 122–124.
Wang Hao. Low-rate TCP-targeted DDos analysis and defense Policy[J]. Computer Engineering, 2009, 35(13): 122–124. doi: 10.3969/j.issn.1000-3428.2009.13.042 |
[7] | 余双成. DDoS攻击检测技术研究[D]. 北京: 北京邮电大学, 2013. http://d.wanfangdata.com.cn/Thesis/Y2288067 |
[8] | 张烜. 基于应用层的DDoS攻击检测防御技术研究[D]. 北京: 北京邮电大学, 2009. http://cdmd.cnki.com.cn/Article/CDMD-10013-2009232037.htm |
[9] |
田纯青. 利用Nginx实现基于URI的Web负载分配[J]. 现代计算机(专业版), 2009(07): 187–191.
Tian Chunqing. Using Nging to implement web load distribution based on URI[J]. Modern Computer, 2009(07): 187–191. doi: 10.3969/j.issn.1007-1423-B.2009.07.056 |
[10] | 吴迪, 徐国胜. 一种基于Nginx的安全设备代理方案[C]//中国通信学会学术年会. 2012. |
[11] | 吴迪. 基于Nginx的安全管理系统的设计与实现[D]. 北京: 北京邮电大学, 2013. |