加固服务器防范Slowloris攻击
2017-11-23
从2000年开始黑客第一次成功瘫痪当时某些著名的电子商务网 站 后,DoS攻击一战成名,直到今日,此种手法仍能活跃,根本原因是TCP/IP通讯协议或程序设计的存在缺陷,所以无法根除此类的攻击手法,但也许可利用相关的配置来降低此类攻击的成功率。本文介绍了三种加固Apache服务器从而防范和减弱Slowloris攻击的方法。
什么是Slowloris攻击
Slowloris攻击是利用Web Server的漏洞或设计缺陷,直接造成拒绝服务。其通过极低的速度往服务器发送HTTP请求,引起Web Server的所有连接都将被恶意连接占用,导致拒绝服务。与传统的DoS攻击不同的地方在于此法只用单一的服务器加上少许的带宽就可以瘫痪Web服务器。它一般对Web服务器发送不完整的数据包并且以单一 结尾,这个不是完整的HTTP数据包。会造成Web服务器堵塞达到最大连接数。此类攻击针对Web服务器,使用Ping命令检测看不到效果。Slowloris攻击利用了HTTP协议的一个特点——等待完整的HTTP请求收到才会进行处理。如果一个HTTP请求不完整,或者是在网络上慢速传递,HTTP服务器会一直为这个请求保留资源等待它传输完毕。如果HTTP服务器有太多的资源都在等待,这就构成了DoS攻击。
通常对于Slowloris攻击给出的解决办法是:限制Web服务器的HTTP头部传输的最大许可时间。
使用mod_reqtimeout模块
mod_reqtimeout模块在Apache2.2.15版本后,该模块已经被默认包含用户可配置从一个客户端接收HTTP头部和HTTPbody的超时时间和最小速率。如果一个客户端不能在配置时间内发送头部或body数据,服务器会返回一个408(Request Time out)错误。
修改apache配置文件httpd.conf添加如下内容:
在重新启动Web服务器后,就可以利用mod_reqtimeout模块来限制(Request)的处理时间。一旦mod_reqtimeout模块检测到Slowris攻击,就会回复HTTP状态码408(Request Timeout)给用户,用户查看Apache服务器的日志文件access_log,将出现如图1所示信息。
图1 Apache服务器的日志文件
使用mod_qos模块
mod_qos是 Apache的QoS(Quality of Service)模块,用以提供各种控制机制包括设置不同请求的访问优先级,和基于不同资源的服务器访问控制。QoS(Quality of Service)是一种确保服务质量的服务,而mod_qos模块就是利用控管相关联机的方式来确保网站服务器运作顺畅,它可编译成Apache网站服务器的模块,为Apache新增QoS功能。
安装mod_qos的步骤:
首先下载源代码文件:mod_qos-11.32.tar.gz
然后解压缩,使用如下命令编译:
#apxs -i -c mod_qos.c
修改apache配置文件httpd.conf添加如下内容
参数说明:
QS_SrvMaxConnPerIP 50设定来源的IP能连线到服务器的最大连线数为50个。
MaxClients 256:最 多256个客户端连接服务器。
QS_Client Entries 100000: 处理来自多达100000个不同IP的连接。
QS_SrvMaxConnClose 180 接受Keep-alive连接数是180。
QS_SrvMinDataRate 150 1200设置最低传输速度。
在重启apacheweb服务器后,即可利用mod_qos模块来防御Slowris攻击。
使用mod_security模块
mod_security是一个集入侵检测和防御引擎功能的开源Web应用安全程序(或Web应用程序防火墙)。它以Apache Web服务器的模块方式运行,目标是增强Web应用程序的安全性,防止Web应用程序受到攻击,首先安装模块。
#yum -y install mod_security 它自带有专门针对慢速攻击防护的规则,配置如下:
在重启apacheweb服务器后,即可利用mod_security模块来防御Slowris攻击。