mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。虽然并不能完全防御 DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力。如果配合iptables、硬件防火墙等防火墙设备配合使用,可能 有更好的效果。
最近准备配置iptables限制每个IP的并发数。但配置iptables才发现,由于Linux内核版本比较低,iptables不支持 connlimit模块,于是想到把conlimit模块编译到内核中,无奈openvz vps不支持编译内核。所以使用了Apache的防DDOS模 块mod_evasive,具体安装配置如下:
一、下载安装模块
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz tar zxvf mod_evasive_1.10.1.tar.gz cd mod_evasive 1、对于Apache 1.x 请用下面的编译方法; /usr/local/apache/bin/apxs -iac mod_evasive.c 2、对于Apache 2.x 可以用下面的办法; /usr/local/apache/bin/apxs -i -a -c mod_evasive20.c
1
2
3
4
5
6
7
8
9
|
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
tar zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive
1、对于Apache 1.x 请用下面的编译方法;
/usr/local/apache/bin/apxs -iac mod_evasive.c
2、对于Apache 2.x 可以用下面的办法;
/usr/local/apache/bin/apxs -i -a -c mod_evasive20.c
|
二、配置模块加入到httpd.conf中
在Apache v1.x 版本中,要加入;
<IfModule mod_evasive.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 </IfModule>
1
2
3
4
5
6
7
8
|
<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
|
在Apache v2.x加入;
<IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 </IfModule>
1
2
3
4
5
6
7
8
|
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
|
相关参数说明:
DOSHashTableSize 3097 #记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值. DOSPageCount 5 #同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置. DOSSiteCount 100 #同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。 DOSPageInterval 2 #设置DOSPageCount中时间长度标准,默认值为1。 DOSSiteInterval 2 设置DOSSiteCount中时间长度标准,默认值为1。 DOSBlockingPeriod 3600 #被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。 DOSEmailNotify **.@qq.com #设置受到攻击时接收攻击信息提示的邮箱地址。有IP加入黑名单后通知管理员。 DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP": #IP加入黑名单后执行的系统命令。 DOSLogDir "/usr/local/webserver/apache2/logs/mod_evasive"#手动创建目录mod_evasive,攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。锁定机制临时目录 #白名单 DOSWhiteList 127.0.0.1 DOSWhiteList 192.168.12.*