您的位置:首页 > 运维架构 > Apache

Apache 2.0 安装mod_dosevasive模块:防ddos及恶意刷新网站

2009-01-21 10:48 549 查看
1.下载

cd /tmp

wget


附件: mod.zip (2008-7-20 22:25:30, 20.11 K)
该附件被下载次数 111

tar zxf mod_evasive_1.10.1.tar.gz

2.安装

cd mod_evasive

/usr/local/apache2/bin/apxs -i -a -c mod_dosevasive20.c

3.配置
vi /usr/local/apache2/conf/httpd.conf

添加下面内容

LoadModule dosevasive20_module libexec/apache22/mod_dosevasive20.so

DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600

4.重新启动apache2,配置完毕。

5.测试

打开IE ,访问网站http://test.com 不断快速刷新网页就会出现错误提示,说明防泛有效,查看/tmp目录会dow.ip 日志文件。

说明:

DOSHashTableSize 3097 记录和存放黑名单的哈西表大小,如果服务器访问量很大,可以加大该值
DOSPageCount 5 同一个页面在同一时间内可以被统一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置。
DOSSiteCount 50 同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSPageInterval 2 设置DOSPageCount中时间长度标准,默认值为1。
DOSSiteInterval 2 设置DOSSiteCount中时间长度标准。
DOSBlockingPeriod 10 被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。

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回复。快用这个试试其它的服务器吧!(但请别说是我让你这样做的)
这是我的配置,呵呵。
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息