使用mod_evasive对抗DDos攻击

mod_dosevasive是一个Apache上的可选模块,它能应对一些基于HTTP的拒绝服务攻击,就是常说的Dos或者DDos攻击,这种攻击是让很多大小网站都头疼的攻击方式,mod_dosevasive从Apache1.3开始出现,虽然不能完全彻底的防止大规模的DDos攻击,但是对于普通的攻击来说,还是非常不错的选择。

  我的服务器(http://www.2008red.com/)就曾经收到过类似的测试攻击,搞得很头疼,我一些朋友的应用也遇到过类似的烦恼,基本上都通过安装mod_dosevasive得到了较好的解决。下面我就来以我在LINUX上安装基于Apache2.2.4的mod_dosevasive经过给大家分享一下经验,顺便进一步讲述一下mod_dosevasive的特性。

  mod_dosevasive通过对来访IP地址和访问URI建立内部动态哈希表来检测是否有攻击,如果有如下的行为将拒绝该IP的访问:

1.  每秒对同一页面的请求数超过平时(原文:Requesting  the  same  page  more  than  a  few  times  per  second)。
2.  每秒同一个子进程有超过50次的并发请求。
3.  临时被拒绝(在blacklist中)的时候还不断进行请求。

  mod_dosevasive可以非常方便的和防火墙、路由器等进行整合,进一步提高抗拒绝服务的能力。和别的防攻击工具一样, mod_dosevasive同样收到带宽、系统处理能力等因素的影响,所以要想应对大规模的攻击,最好的方式就是把mod_dosevasive和您的防火墙和路由器进行整合,而不是简单的安装成为独立的Apache模块。

mod_dosevasive在apache2.2.4上的安装方法:

一、使用源码安装:
1、下载

#cd  /tmp  (任何别的目录都行)
#wget  http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
2、解压缩

#tar  -zxvf  mod_evasive_1.10.1.tar.gz
#cd  mod_evasive
3、以动态模块方式编译

#  $APACHE_ROOT/bin/apxs -i -a -c mod_evasive20.c
4.  修改$APACHE_ROOT/conf/httpd.conf文件,加入对模块的支持:

LoadModule  dosevasive20_module  modules/mod_dosevasive20.so


二、httpd.conf 配置
在您的httpd.conf文件中,加入类似下面的部分
Apache  1.3.x

<IfModule  mod_dosevasive.c>
DOSHashTableSize  3097
DOSPageCount  5
DOSSiteCount  100
DOSPageInterval  2
DOSSiteInterval  2
DOSBlockingPeriod  600
</IfModule>
Apache  2.x

<IfModule  mod_dosevasive20.c>
DOSHashTableSize  3097
DOSPageCount  5
DOSSiteCount  100
DOSPageInterval  2
DOSSiteInterval  2
DOSBlockingPeriod  600
</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_dosevasive”  攻击日志存放目录,默认是  /tmp

下面是我的服务器上看到的一些日志情况:

#cd  /tmp
#ll  |wc  -l
       2303
#ls
......
dos-218.64.69.71                dos-219.80.33.54                dos-222.214.156.211
dos-218.64.79.59                dos-219.82.143.127            dos-222.214.2.148  
dos-218.64.81.162              dos-219.82.46.245              dos-222.214.206.162    
dos-218.65.102.178            dos-220.113.43.61              dos-222.214.207.191  
......
#more  dos-218.64.69.71
30611
可以看到,这个ip地址有30611次的访问攻击被记录!!!

Tags: apache, linux
« 上一篇 | 下一篇 »
只显示10条记录相关文章
firefox浏览shtml时直接显示源代码问题 (浏览: 372, 评论: 0)
自动封杀非法连接http的IP (浏览: 1191, 评论: 1)
Linux下添加硬盘,分区,格式化详解 (浏览: 549, 评论: 0)
/etc/fstab 文件说明 (浏览: 571, 评论: 0)
定时清理旧的log文件 (浏览: 1157, 评论: 1)
apache的rotatelogs使用手记 (浏览: 689, 评论: 0)
linux iptables 屏蔽IP段 (浏览: 866, 评论: 0)
linux下crontab时间的格式说明 (浏览: 855, 评论: 0)
用Linux系统防火墙功能抵御网络攻击 (浏览: 1336, 评论: 1)
Linux命令速查 (浏览: 2338, 评论: 0)
Trackbacks
点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
不错 真的不错

发表评论

评论内容(*):