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

作者:北南南北
来自:LinuxSir.Org
摘要:在服务器管理中,经常遇到DDOS攻击WWW服务器。对于Apache(httpd)服务器来说,防御DDOS是通过mod_evasive来实现的。本文将介绍mod_evasive模块的安装、配置;

 
  1、 mod_evasive 介绍; 
  2、 mod_evasive 的安装和配置; 
  2.1 mod_evasive 的下载地址; 
  2.2 mod_evasive 的安装; 
  2.3 mod_evasive 的配置; 
  2.4 对mod_evasive测试验证 ; 
  3、mod_evasive 的高级配置; 
  4、关于本文; 
  5、参考文档; 
  6、相关文档; 
  


+++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++


1、 mod_evasive 介绍;

mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。虽然并不能完全防御DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力。如果配合iptables、硬件防火墙等防火墙设备配合使用,可能有更好的效果。可惜LinuxSir.Org 并没有硬件防火墙,所以是否这种组合效果有更好的效果,我没办法验证。

mod_evasive 的官方地址: http://www.zdziarski.com/projects/mod_evasive


2、 mod_evasive 的安装和配置;


2.1 mod_evasive 的下载地址;

mod_evasive_1.10.1.tar.gz


2.2 mod_evasive 的安装;

安装 mod_evasive 之前,你要用安装Apache(httpd)服务器软件包,还要安装httpd-devel或 apache-dev。在Slackware 12.0中,安装httpd软件即可;

对于Apache 1.x 请用下面的编译方法;

#/usr/sbin/apxs -iac mod_evasive.c

对于Apache 2.x 可以用下面的办法;

#tar zxvf mod_evasive_1.10.1.tar.gz
#cd mod_evasive
#/usr/sbin/apxs -i -a -c mod_evasive20.c

注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;

我们然后修改/etc/ld.so.conf 文件,把编译出来的动态模块的所在位置指定在 ld.so.conf中;比如我用的是Aapche 2.x ,编译完成后,模块mod_evasive20.so 安装到了 /usr/lib/httpd/modules 目录中;那我们就要把 这个目录写入到ld.so.conf中。

#echo "/usr/lib/httpd/modules" >> /etc/ld.so.conf
#ldconfig

注: 具体要与你的系统环境为准,不要照搬照抄,如果你对Linux不太熟的话;


2.3 mod_evasive 的配置;

在编译安装完成后,会自动插入一行到Apache 配置文件中,对于Apache 2.x 版本中,应该在其配置文件中有类似下面的一行;

LoadModule evasive20_module   lib/httpd/modules/mod_evasive20.so

对于Apache 1.x来说,也应该差不多,大体只是路径不同罢了;

然后我们再修改 Apache 的配置文件,配置文件名为httpd.conf;

在Apache v1.x 版本中,要加入;

<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>

如果您不知道把这些插入到哪,用下面的办法做也是可以的;

在/etc目录中创建一个文件,比如mod_evasive.conf;

#touch /etc/mod_evasive.conf

然后把根据自己的Apache版本来加入相应的内容;

接着我们再修改 httpd.conf ,在最后一行加入

Include /etc/mod_evasive.conf

修改完成后,我们要重启Apache服务器;

比如在Slackware 12.0中,Apache 2.x的重启,我们要用到

#/etc/rc.d/rc.httpd restart

在Redhat、Fededora、Debian、Ubuntu、CentOS中的Apache,可以用;

#/etc/init.d/httpd restart

#/etc/init.d/apache restart

大体上差不多是这样的……


2.4 对mod_evasive测试验证 ;

防DDOS的模块做好后,我们可以要验证,可以用Apache 自带的ab工具,系统默认安装在/usr/sbin目录中;比如;

#/usr/sbin/ab -n 1000 -c 50 http://www.google.com:80/

注:上面的例子的意思是,如果您的服务器是google的WEB服务器,我们要发送数据请求包,总共1000个,每次并发50个;

另外一个测试工具就是mod_evasive的解压包的目录中,有个test.pl ,你可以修改IP地址,然后用

#perl test.pl

是不是有效果,请根据 ab工具或 测试脚本出来的结果来查看;

因为我们编译mod_evasive时,用的是默认配置,所以日志被存放在/tmp目录中。如果有DDOS攻击,会在/tmp产生日志。日志的文件是以 dos-开头的;


3、mod_evasive 的高级配置;

如果想更改一些适合自己的参数,有些必要的参数,并不是通过配置文件修改就一下起作用的,我们要修改源码包中的 mod_evasive.c(Apache 1.x用之) 或 mod_evasive20.c (Apache 2.x用之);

#define DEFAULT_HASH_TBL_SIZE   3097ul  // Default hash table size
#define DEFAULT_PAGE_COUNT      2       // Default maximum page hit count per interval
#define DEFAULT_SITE_COUNT      50      // Default maximum site hit count per interval
#define DEFAULT_PAGE_INTERVAL   1       // Default 1 Second page interval
#define DEFAULT_SITE_INTERVAL   1       // Default 1 Second site interval
#define DEFAULT_BLOCKING_PERIOD 10      // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR         "/tmp"  // Default temp directory

比如我们改改其中的数字,根据英文很容易理解。比如修改日志存放目录,就把/tmp改成别的目录。如果您不知道放在哪好,还是用默认的吧;

如果您在这里更改了参数,不要忘记修改Apache 配置文件中关于mod_evasive 的参数;

如果您想加入一些其它的参数,请查阅源码包中的README,里面有详细说明,大多来说没太大的必要……

这个文件相当重要,如果您想更改某些设置,就要修改这个文件…… 


4、关于本文;

mod_evasive 还是有点用的,安装也不费力气。如果你需要的时候,会想到这个模块的 …… mod_evasive 是否有更高级的用法,也不是在这篇文章里能说的清楚的。如果不懂怎么办?请查看源码包中的README。

本文权当做软件说明 ……

北南 记之

From LinuxSir.Org


5、参考文档;

参考 mod_evasive 源码包中的README ……


6、相关文档;

《PHP加速器 eaccelerator 介绍》

转载于:https://www.cnblogs.com/licheng/archive/2008/01/23/1050085.html

安装方法: 1、下载附件中的压缩包,解压并拷贝mod_dosevasive22.dll到Apache安装目录下的modules目录(当然也可以是其他目录,需要自己修改路径)。 2、修改Apache的配置文件http.conf。 添加以下内容 LoadModule dosevasive22_module modules/mod_dosevasive22.so DOSHashTableSize 3097 DOSPageCount 3 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 其中DOSHashTableSize 3097 记录黑名单的尺寸 DOSPageCount 3 每个页面被判断为dos攻击的读取次数 DOSSiteCount 50 每个站点被判断为dos攻击的读取部件(object)的个数 DOSPageInterval 1 读取页面间隔秒 DOSSiteInterval 1 读取站点间隔秒 DOSBlockingPeriod 10 被封时间间隔秒 mod_dosevasive v1.10 什么是mod_dosevasive? mod_dosevasive是一种提供躲避 HTTP DOS/DDOS攻击或暴力强制攻击的apache模块。它同样可以用作网络探测和管理的工具,通过简单的配置,就可以同ipchains(ip链?) 火墙,路由器等设备进行对话。并通过email或系统日志提供报告。 发现攻击是通过创建一个内建的IP地址和URIs的动态哈希表来完成,并且阻止同一ip在以下的情况: 1.在同一秒多次请求同一页面 2.对同一child(对象?)作出超过50个并发请求 3.被列入黑名单的ip 这种方式在单点攻击和分布式多点攻击的状况下都能很好工作,但如同其它的黑软件一样,只是针对于那些对网络带宽和处理器消耗的攻击,所以这就是为什么我们要推荐你将它与你的火墙和路由器配合使用,因为这样才能提供最大限度的保护。 这 个模块有一个内建的滤除机制和级别设定,对付不同情况,正因如此合法请求不会受到妨碍,即使一个用户数次连击“刷新”,也不会受到影响,除非,他是故意这 样做的。mod_dosevasive完全可以通过apache配置文件来配置,很容易就可以集成到你的web服务器,并且容易使用。 DOSHashTableSize ---------------- 哈希表的大小决定每个子级哈希表的顶级节点数,越多则越可避免反复的查表,但会占据更多内存,如果你的服务器要应付很多访问,那就增大它。The value you specify will automatically be tiered up to the next prime number in the primes list (see mod_dosevasive.c for a list of primes used). DOSPageCount ------------ 规定请求同一页面(URI)的时间间隔犯规的次数,一旦超过,用户ip将被列入黑名单 DOSSiteCount ------------ 规定请求站内同一物件的时间间隔犯规的次数,一旦超过,用户ip将被列入黑名单 DOSPageInterval --------------- 同一页面的规定间隔时间,默认为1秒 DOSSiteInterval --------------- 站内同一物件的时间间隔,默认为1秒 DOSBlockingPeriod ----------------- The blocking period 是规定列入黑名单内ip的禁止时限,在时限内,用户继续访问将收到403 (Forbidden)的错误提示,并且计时器将重置。由于列入黑名单后每次访问都会重新计时,所以不必将时限设置太大。在Dos攻击下,计时器也会保持 重置 DOSEmailNotify -------------- 假如这个选项被设置,每个ip被列入黑名单时,都将发送email通知。但有机制止重复发送相同的通知 注意:请确定mod_dosevasive.c (or mod_dosevasive20.c)已正确配置。 默认配置是 "/bin/mail -t %s" %s 是email发送的目的地址,假如你是linux或其它使用别的邮箱的操作系统,你需要修改这里 DOSSystemCommand ---------------- 假如设置了此项,当有ip被列入黑名单,指定的系统命令将被执行,此项功能被设计为受攻击时可以执行ip过滤器和其它的工具软件,有内建机制避免对相同攻击作重复反应 用 %s 表示黑名单中的ip DOSLogDir --------- 系统日志目录 默认"/tmp"目录用作保密机制,仅向一些特权级用户开放 (这里有些不懂,可能翻错了) By default "/tmp" will be used for locking mechanism, which opens some security issues if your system is open to shell users. 在没有特权shell用户时,你应该为apache服务器用户(通常为root)创建一个只可写的文件夹,并在httpd.conf里配置访问权限 WHITELISTING IP ADDRESSES 在1.8版中提供信任ip机制 进入信任ip名单的ip它们将不会受到阻止,次功能主要是用于保护软件,scripts,本地搜索,或其它的自动工具对服务器进行大量的资源请求时不会被阻止 请确认而不是用在添加客户或其它什么类别的人员,因为这将给本模块进行正常工作带来阻碍 信任ip名单应在apache配置文件中添加如下格式的字段(可以是ip段) DOSWhitelist 127.0.0.1 DOSWhitelist 127.0.0.* ip地址后三段可以使用通配符,并且可以各格式复用 TWEAKING APACHE keep-alive项是确保能阻止攻击(至少其中一部分攻击). 但在阻止攻击,发送403页面前,5-10 个页面还是会通过阻止而发送 . 所以你必须设置足够高的MaxRequestsPerChild, 但不是无限,是一个非零的数,默认的MaxRequestsPerChild设定是10000. 这还是将允许少量的攻击进入,但如果你配合火强使用,将天衣无缝 TESTING 运行 test.pl来测试是否安装成功,如果不是localhost的话,修改其中的服务器地址字段,成功的话在25-50个(取决于你的配置)请求后你将收到403 forbidden回复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值