Apache_evasive模块(网络整理)
mod_evasive是一个Apache上的可选模块,它能应对一些基于HTTP的拒绝服务攻击,就是常说的Dos或者DDos攻击,这种攻击是让很多大小网站都头疼的攻击方式,mod_dosevasive从Apache1.3开始出现,虽然不能完全彻底的防止大规模的DDos攻击,但是对于普通的攻击来说,还是非常不错的选择。
mod_evasive通过对来访IP地址和访问URI建立内部动态哈希表来检测是否有攻击,如果有如下的行为将拒绝该IP的访问:
1.
每秒对同一页面的请求数超过平时。
2.
每秒同一个子进程有超过50次的并发请求。
3.
临时被拒绝(在blacklist中)的时候还不断进行请求。
mod_evasive可以非常方便的和防火墙、路由器等进行整合,进一步提高抗拒绝服务的能力。和别的防攻击工具一样,mod_evasive同样收到带宽、系统处理能力等因素的影响,所以要想应对大规模的攻击,最好的方式就是把mod_evasive和您的防火墙和路由器进行整合,而不是简单的安装成为独立的Apache模块。
安装
#wget
http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
#tar -zxvf
mod_evasive_1.10.1.tar.gz #cd mod_evasive
#/usr/local/apache/bin/apxs -i
-a -c mod_evasive20.c
#vi httpd.conf
LoadModule evasive20_module
modules/mod_evasive20.so
<IfModule
mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 50
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 120
</IfModule>
参数简单说明:
DOSHashTableSize 3097
记录和存放黑名单的哈西表大小,如果服务器访问量很大,可以加大该值
DOSPageCount 5
同一个页面在同一时间内可以被统一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置。
DOSSiteCount 50
同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSPageInterval 2
设置DOSPageCount中时间长度标准,默认值为1。
DOSSiteInterval 2
设置DOSSiteCount中时间长度标准。
DOSBlockingPeriod 10
被封时间间隔秒,这中间会收到403(Forbidden) 的返回。
其他可选参数:
DOSEmailNotify
lee@toplee.com 设置受到攻击时接收攻击信息提示的邮箱地址。
DOSSystemCommand “su –
someuser -c ‘/sbin/… %s …’” 受到攻击时Apache运行用户执行的系统命令
DOSLogDir
“/var/lock/mod_evasive” 攻击日志存放目录,默认是 /tmp
DOSWhitelist 127.0.0.1
信任ip名单 亦可为192.168.1.*