Apache设置防DDOS模块mod_evasive

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 **[email protected]
#设置受到攻击时接收攻击信息提示的邮箱地址。有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.*

服务器遭受到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 [email protected] #设置受到攻击时接收攻击信息提示的邮箱地址。
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.*

   
时间: 2024-10-06 23:28:42

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

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

关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明 1. mod_evasive 介绍: mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块.对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块.虽然并不能完全防御 DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力.如果配合iptables.硬件防火墙等防火墙设备配合使用,可能 有更好的效果.可惜LinuxSir.Org 并没有硬件防火墙

Apache 实现http协议自动转成https协议,Apache 防DDOS攻击 使用mod_rpaf模块 mod_evasive模块

一:实践环境介绍 二:配置Apache,实现访问http页面自动转成https页面 需求1:整个站点都实现http自动转https 需求2:整个站点使用http协议,只有某个单独页面从http自动转到https 实验环境介绍 使用yum 安装apache Apache版本 # httpd -v Server version: Apache/2.2.15 (Unix) Server built:   Aug 13 2013 17:29:28 使用yum 安装openssl # yum instal

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

文章来自于: 近期由于工作需要,做了些防DDOS攻击的研究,发现nginx本身就有这方面的模块ngx_http_limit_req_module和ngx_http_limit_conn_module. 一.基本介绍 1.ngx_http_limit_req_module 配置格式及说明: 设置一个缓存区保存不同key的状态,这里的状态是指当前的过量请求数.而key是由variable指定的,是一个非空的变量,我们这里使用$binary_remote_addr,表示源IP为key值. limit_

nginx常用的请求头参数和防DDOS攻击

前端squid反向代理到nginx nginx根据http_user_agent防DDOS 首先查看访问日志,找出可疑访问 找到http_user_agent 的特征,然后再作过滤 "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)Cache-Control: no-store, must-revalidate" if ($http_user_agent ~ must-revalidate) { return

CDN防DDoS攻击

随着近年来来网络技术的不断进步,CDN已经不只简单的用做网站加速,还能够更好的保护网站不被攻击.Cdn在相关节点中成功的建立动态加速机制以及智能沉于等机制,这种机制能够帮助网站流量访问分配到每一个节点中,智能的进行流量分配机制.如果cdn存在被ddos攻击的情况,Cdn整个系统就能够将被攻击的流量分散开,节省了站点服务器的压力以及节点压力.同时还能够增强网站被黑客给攻击的难度,真正帮助服务管理人员提供更多应该被攻击的时间,cdn能有效的防止ddos攻击,降低对网站带来的危害. 但是CDN防ddo

CNware防DDOS攻击介绍

近年来随着互联网带宽的不断增加,加上越来越多的DDOS黑客工具的发布,DDOS攻击的发起难度越来越低,DDOS攻击事件也处于上升趋势,这给互联网安全带来巨大的威胁.为了应对DDOS攻击,网络服务商非常注重防御来自外部的DDOS流量,包括购置防火墙,提高网络带宽等,投入了巨大的成本.这种属于"被动安全",即防止被他人从外部攻击.但在防御的过程中,有一个地方却一直被大多数服务商所忽略,那就是从IDC机房内部发起的DDOS攻击.如何主动抑制从内部发起的攻击,是"主动安全"

Apache设置经验总结(持续更新)

Alias 想让/opt/foswiki的内容显示出来,但不想拷贝到/var/www/html中,怎么做 Alias /foswiki/ "/opt/foswiki/" <Directory "/opt/foswiki/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> 这些是模

wdlinux中apache配置反向代理模块

想要在.htaccess中开启反向代理功能都不行[apache中没有mod_proxy模块] .htaccess 文件内容如下 RewriteEngine On RewriteBase / RewriteRule ^(.*)$ http://sogou.weixin.com/$1 [P] "proxy|P"(强制为代理) 此标记使替换成分被内部地强制作为代理请求发送,并立即中断重写处理,然后把处理移交给mod_proxy模块.你必须确保此替换串是一个能够被mod_proxy处理的有效U

防DDOS 脚本 CC攻击

#!/bin/sh #auther RuM #date 20140716 cc ( ) { [ -f ignore.ip.list ] ||  echo "127.0.0.1" > ignore.ip.list netstat -ntu | awk '{print $5}' | cut -d: -f4 | sort | uniq -c | sort -nr > BAD_IP_LIST while read line; do CURR_LINE_CONN=$(echo $li