目前的网络攻击多种多样,什么CC,DDOS,碎片,死亡ping等等,但是最头疼的就是DDOS了。大多数网站都是使用使用Apache的httpd服务作为服务端的,可以在apache中加载mod_evasive模块来防止DDOS攻击。本文将介绍如何在apche中配置mod_evasive模块。
1.mod_evasive 介绍
mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。虽然并不能完全防御 DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力。如配合iptables、硬件防火墙等防火墙设备配合使用,可能有 更好的效果。
mod_evasive 的官方地址: http://www.zdziarski.com
2、源码安装mod_evasive
[root@Centos6 ~] # wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz [root@Centos6 ~] # tar xzvf mod_evasive_1.10.1.tar.gz [root@Centos6 ~] # cd mod_evasive [root@Centos6 ~] # /usr/local/apache/bin/apxs -i -a -c mod_evasive20.c
3、修改httpd.conf,关于mod_evasive的相关参数
- <IfModule mod_evasive20.c>
- DOSHashTableSize 3097
- DOSPageCount 5
- DOSSiteCount 100
- DOSPageInterval 2
- DOSSiteInterval 2
- DOSBlockingPeriod 3600
- DOSEmailNotify lampbo@qq.com
- DOSLogDir "/var/log/mod_evasive"
- </IfModule>
参数说明:
- <IfModule mod_evasive20.c>
- DOSHashTableSize 3097
- #记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值.
- DOSPageCount 5
- #同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置.
- DOSSiteCount 100
- #同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
- DOSPageInterval 2
- #设置DOSPageCount中时间长度标准,默认值为1。
- DOSSiteInterval 2
- #设置DOSSiteCount中时间长度标准,默认值为1。
- DOSBlockingPeriod 3600
- #被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。
- DOSEmailNotify lampbo@qq.com
- #设置受到攻击时接收攻击信息提示的邮箱地址。
- DOSLogDir "/var/log/mod_evasive"
- #攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。
- </IfModule>
4、测试
在mod_evasive_1.10.1.tar.gz解压目录下面有个测试脚本,是用perl写的,如果可以看下一下结果,就表示该模块安装成功。
[root@Centos6 ~] # chmod 755 test.pl ./test.pl HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden
这个时候,可以到你的/var/log/mod_evasive目录下面发现有一个日志文件,同时你的邮箱也会收到该报警信息。
- 相关参数
- DOSHashTableSize 3097 #定义哈希表大小。
- DOSSiteCount 50 #允许客户机的最大并发连接。
- DOSPageCount 2 #允许客户机访问同一页的间隔。
- DOSPageInterval 1 #网页访问计数器间隔。
- DOSSiteInterval 1 #全站访问计数器间隔。
- DOSSiteInterval 60 #加入黑名单后拒绝访问时间。
- DOSEmailNotify xxxx@gmail.com #有IP加入黑名单后通知管理员。
- DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP" #IP加入黑名单后执行的系统命令。
- DOSLogDir "/tmp" #锁定机制临时目录。
- DOSWhiteList 127.0.0.1 #防范白名单,不阻止白名单IP。