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
#记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值.
DOSPageCount
#同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置.
DOSSiteCount
#同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSPageInterval
#设置DOSPageCount中时间长度标准,默认值为1。
DOSSiteInterval
设置DOSSiteCount中时间长度标准,默认值为1。
DOSBlockingPeriod
#被封时间间隔秒,这中间会收到 (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..*

服务器遭受到DDOS攻击,可以说防不胜防,但是作为apache服务器,可以安装一些模块一定程度上减缓DDOS的攻击。
比如第3方模块mod_evasive就是一个预防 Apache 遭受 DDos 攻击的模组,可以防止同一个 IP 对相同 URI 发出的大量请求,可设定的选项有:
– 限制同一个 IP 在一定秒数内请求一个页面或档案的次数。
– 限制同一个 IP 一秒内只可发出 50 个请求。
– 设定被禁止的 IP 封锁时间。

1.首先下载mod_evasive_1.10.1.tar.gz并解压:
# tar zxvf mod_evasive_1.10.1.tar.gz
我们先不进行安装,解压出来有一个文件test.pl,是用Perl语言写的,是测试服务器用的, 我们先来测试一下服务器(在没有安装减缓DDOS的情况)
# cd mod_evasive
# chmod 755 test.pl
# ./test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
......都可以正常访问,没有任何防御DDOS攻击

2.安装 (我这里使用apache是 2.2.8的版本)
# /usr/local/apache2/bin/apxs -i -a -c mod_evasive20.c (apxs用于编译模块工具,注意你自己服务器apache的安装目录和位置,路径可能和我的不一样)
注:没有apxs的话,请安装:httpd-devel或apache-dev
模块自动编译安装进/usr/local/apache2/modules,且自动在httpd.conf里添加LoadModule evasive20_module modules/mod_evasive20.so

3.配置
# vi /etc/httpd.conf
<IfModule mod_evasive20.c>
DOSHashTableSize 3097 #记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值.
DOSPageCount 5 #同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置.
DOSPageInterval 2 #设置DOSPageCount中时间长度标准,默认值为1。
DOSSiteCount 100 #同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSSiteInterval 2 #设置DOSSiteCount中时间长度标准,默认值为1。
DOSBlockingPeriod 3600 #被封时间间隔(秒),这中间会收到 403 (Forbidden) 的返回。
DOSEmailNotify 17rumen@17rumen.com #设置受到攻击时接收攻击信息提示的邮箱地址。
DOSLogDir "/var/log/mod_evasive" #攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。
#
进入信任ip名单的ip它们将不会受到阻止,其功能主要是用于保护软件,scripts,本地搜索,或其它的自动工具对服务器进行大量的资源请求时不会被
阻止。请确认而不是用在添加客户或其它什么类别的人员,因为这将给本模块进行正常工作带来阻碍。信任ip名单应在apache配置文件中添加如下格式的字
段(可以是ip段)
DOSWhitelist 127.0.0.1
DOSWhitelist 127.0.0.*
#ip地址后三段可以使用通配符,并且可以各格式复用
</IfModule>

新建目录来存放上在指定的日志文件:
mkdir /var/log/mod_evasive
重新启动apache2。
再次测试./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 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
可以看到已经有一些访问出现 403 Forbidden, 说明配置成功。

一定情况下抵挡防御DDOS的攻击, 当然如果是服务器机器承受不了,或者带宽不够, DDOS还是比较难防的,不过我们抵挡一部分算一部分。呵呵

---------------------------------------

WINDOWS下mod_evasive安装
目前还没有官方的WINDOWS版,这里是一个高手做了一些修改编译的版本。它禁用了这些功能:邮件通知、日志记录到独立文件的功能。
编译环境: windows xp ,vc++ 8 , apache 2.2.3 (环境设置为了 windows 2003 sp1)

LoadModule dosevasive22_module modules/mod_dosevasive22.dll
<ifmodule dosevasive22_module>
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.*
   

Apache设置防DDOS模块mod_evasive的更多相关文章

  1. 关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明

    关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明 1. mod_evasive 介绍: mod_evasive 是Apache(httpd)服务器的防DDOS的一个 ...

  2. apache +php +php curl 模块设置

    2.2 linux 下面 2.2.1 web服务器安装 1目前采用的web服务器是apache2,在ubuntu 下安装 apt-getupdate apt-get installapache2 测试 ...

  3. 转:nginx防DDOS攻击的简单配置

    文章来自于: 近期由于工作需要,做了些防DDOS攻击的研究,发现nginx本身就有这方面的模块ngx_http_limit_req_module和ngx_http_limit_conn_module. ...

  4. nginx根据http_user_agent防DDOS

    前端squid反向代理到nginx nginx根据http_user_agent防DDOS 首先查看访问日志,找出可疑访问 找到http_user_agent 的特征,然后再作过滤 "Moz ...

  5. 详解浏览器缓存机制与Apache设置缓存

    一.详解浏览器缓存机制 对于,如何说明缓存机制,在网络上找到了两张图,个人认为思路是比较清晰的.总结时,上图. 这里需要注意的有两点: 1.Last-Modified.Etag是响应头里的数据 2.I ...

  6. nginx防ddos配置

    Nginx  limit_zone与limit_req_zone (防DDOS攻击模块) http { limit_req_zone $binary_remote_addr zone=one:100m ...

  7. Apache HTTP Server mod_session_dbd模块mod_session_dbd.c 安全漏洞

    漏洞名称: Apache HTTP Server mod_session_dbd模块mod_session_dbd.c 安全漏洞 CNNVD编号: CNNVD-201307-488 发布时间: 201 ...

  8. apache 设置环境变量

    在apache设置环境变量有什么好处: 提高代码的可移植性,不用因为换服务器而改项目代码

  9. wdlinux中apache配置反向代理模块

    想要在.htaccess中开启反向代理功能都不行[apache中没有mod_proxy模块] .htaccess 文件内容如下 RewriteEngine On RewriteBase / Rewri ...

随机推荐

  1. CentOS 开启GD库

    在php.ini 中没有找到"extension=php_gd2.dll"这行代码,这是因为CentOS一般没有预装GD库. 解决办法: 1.在线安装GD库 yum -y inst ...

  2. Newtonsoft.Json.dll解析json的dll文件使用

    要解析的json //解析前 //解析前 {,,,,,,,,,,},,,,,,,,,,,},,,,,,,,,,,,,,,,},,,,,,,,,},,,,,,,,,,,,},,,,,,,,,,,},,, ...

  3. winfrom 多语言切换

    1.首先将窗体的“Localizable”属性置为“True”,然后将“Language”属性置为自己想要的语言,点击重新生成项目 例如:置为“中文”,以及“英文”.当每次置为不同的语言并重新生成项目 ...

  4. 图片裁切插件jCrop的使用心得(一)

    之前,项目经理为了提升用户体验让我在之前图片上传功能的基础上实现图片的裁切功能,作为一个前端小白来说听了这个需求心里一紧,毕竟没有做过,于是跟项目经理商量要先做下调研.在一上午的调研中发现了jCrop ...

  5. Windows phone 8 安装在 VMWare上错误的各种解决方案

    http://windowsasusual.blogspot.jp/2013/01/how-to-launch-windows-phone-8-emulator.html Hardware requi ...

  6. web页面显示折叠树菜单笔记

    zTree -- jQuery 树插件 http://pan.baidu.com/s/1skwh94h

  7. ubuntu14.04配置lnmp

    看到了一片讲解ubuntu下安装lnmp的文章,跟着一步步的来,竟然很顺利的成功了,将文章复制如下,原著勿怪 一.操作步骤 1.安装Nginx sudo apt-get install update ...

  8. Siverlight网页应用程序中WCF通信注意事项

    最近刚刚接触WCF通信,功能就是客户端点击按钮后,服务器端返回一个随机数字.在VS2010中调试的时候,通信都正常,但发布到IIS7中就没反应了,经过几天的摸索,发现WCF的配置要注意以下两点: 1. ...

  9. Python安装模块出错(ImportError: No module named setuptools)解决方法

    原地址:http://www.cnblogs.com/BeginMan/archive/2013/05/28/3104928.html 在window平台下安装第三方模块时,出现这样的错误:

  10. Cloud Test 单页面即时监测功能上线!

    什么是即时监测? 即时监测,顾名思义是指输入 URL 后能够立即进行监测并展示结果,无需注册. 如下图,在输入框内输入需要监测的 URL,点击免费监测,即可展示网页监测结果: 图中我们可以看到页面各个 ...