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. Javascript代码摘录

    判断浏览器窗口高度 if (document.documentElement.clientHeight <800) { var elm = document.getElementById('Di ...

  2. IE浏览器窗口合并

    百度经验:如何在IE上设置多窗口合并为单窗口(可切换)?

  3. 【转】iOS 9自带苹果式省电模式 依然软硬兼施

    非本人总结,转自:http://news.91.com/apple/1506/21837672.html 说好的改善和优化,iOS 9真的带来了.且不说那些经过改善的功能,iOS 9 推出的低功耗模式 ...

  4. C++学习笔记——一只P转C的OIer的学习历程

    2015-11-29 第一天接触c++(也不能这不说,看c++的程序也看了不少).重新找回了当时学pascal的感觉,从Hello World 开始写起,感觉自己的智商降低了,期间犯了各种弱智到不能再 ...

  5. MVC5 ModelBinder

    MVC5 ModelBinder 什么是ModelBinding ASP.NET MVC中,所有的请求最终都会到达某个Controller中的某个Action并由该Action负责具体的处理和响应.为 ...

  6. String类中常用的操作

    一.获取: 1.获取字符串的长度(注意是方法,不是跟数组的属性一样的) int length(); 1 public static void getLength(){ 2 String s = &qu ...

  7. 增加字体和颜色样式-------CSS

    通过使用CSS,控制文本的字体,风格和颜色 1.基本操作: body{ font-family: Verdana, Geneva, Tahoma, sans-serif } body{ font-si ...

  8. aircrack-ng on OSX 从零开始之安装

    今天在知乎上看到了Evil1m0在知乎上写的一个关于无线网入侵的帖子,激起我也想折腾一下想法.其实这个想法已经由来已久了.如今WIFI遍地都有,这里面的安全隐患我真心觉得太大.实在需要舆论来给大家普及 ...

  9. centos 卸载vsftpd方法

    centos 卸载vsftpd方法 在服务器上安装了vsftpd,配置出错需要卸载vsftpd.卸载vsftpd的命令如下: 1 [root@localhost ~]# rpm -aq vsftpd2 ...

  10. 纯CSS3代码实现表格奇偶行异色,鼠标悬浮变色

    1.首先会用到<tr></tr>元素两个伪类,nth-child()和hover. 然后需要注意的是伪类都是通过冒号引用的,不是点号,即tr:hover{} 其次,CSS代码中 ...