[置顶]活动必备模块:关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明,可以用在防止刷票恶意多线程攻击等,安装mod_security加强apache2安全防sql 注入
在活动中,有一些功能被一直的访问想捞好处是很多人喜欢干的事,估计是用while(1){不段刷页面,IP不变,通过Apache日志看出来},用程序来实现获取兑换码,邀请好友等,还用多线程,给Apache服务器弄挂了,因为后台用的是直连Mysql,这样频繁是没法让Mysql消停的,这时就可以用这个插件了,其实也可以用Memcache来做到程序里,但我个人觉得这种应该是运维来做的事情,所以,我也想实践一下这个Apache插件的实际效果,乃至于编写Apache插件Etc,做了下测试发现这个mod_evasive20还真有必要给放上去,能避免一些用工具刷分的给把Apache以及后台DB给搞挂了:。
Apache的主要插件列表:
1)apache简单防DDOS攻击的配置,需要从网上找一个mod_evasive20模块一般情况下没有必要配置这玩意,但是活动确实有这样的问题压垮Apache,进而DB挂了。
2)apache防sql注入攻击的配置,需要安装mod_security模块。
加大apache最大连接数的配置,如果选择的是preworker工作方式。preworker和worker的区别就不讲了。apache2.0以上直接设置ServerLimit即可,apache2.0以前还要修改源代码才能使修改
的ServerLimit生效,建议应用服务器用apache2.0吧,性能差不了多少。
3)压缩传输的配置,这个做为网站来说非常重要,它是不压缩传输大小的20%左右,也就是说用户访问一个网站速度快了5倍,不配置不行,但是图片不能做压缩了。mod_deflate这个模块就是干这个的。实验证明,启用Apache的mod_deflate模块进行网页内容压缩,能够平均将网页大小降到原来的60%左右。尤其是对非图片、非多媒体为主的网站效果更加明显,http://yangsiwei.com/add-mod_deflate-module-to-apache2。
来源:http://www.youican.com/web/php/9035.html
相关配置参考DownLoad:
主要是先看配置文件的中文注释:
========================================================================
DOSHashTableSize 3097 这个是1G数量。
DOSPageCount 5 同一个时间同一个页面被访问的次数。对同一个用户
DOSSiteCount 100 同一个用户同时并发的连接数是100
DOSPageInterval 2
DOSSiteInterval 2 间隔时间
DOSBlockingPeriod 600 被封锁的时间是600秒
DOSLogDir "/var/log/mod_evasive" 日志文件的存放位置。
#DOSWhitelist 127.0.0.1
#DOSWhitelist 192.168.0.*这个就是白名单,这里的ip就不受上面的限制。
[root@102 ~]# touch /var/log/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
vi mod_evasive20.c
/*
#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
*/
#define DEFAULT_HASH_TBL_SIZE 6195ul // 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 500 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR"/usr/local/apache2/logs" // Default temp directory
/usr/local/apache2/bin/apxs -i -c mod_evasive20.c
...
cp .libs/mod_evasive20.so /usr/local/apache2/modules/mod_evasive20.so
cp .libs/mod_evasive20.lai /usr/local/apache2/modules/mod_evasive20.la
cp .libs/mod_evasive20.a /usr/local/apache2/modules/mod_evasive20.a
ranlib /usr/local/apache2/modules/mod_evasive20.a
chmod 644 /usr/local/apache2/modules/mod_evasive20.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apache2/modules
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_evasive20.so
注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;
安装完成之后会在/usr/local/apache2/conf/httpd.conf文件中,默认添加一行
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
vi /usr/local/apache2/conf/httpd.conf
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 6195
DOSSiteCount 50
DOSPageCount 2
DOSPageInterval 1
DOSSiteInterval 1
DOSSiteInterval 500
DOSLogDir "/usr/local/apache/logs"
#bai ming dang
DOSWhiteList 127.0.0.1
DOSWhiteList 127.0.0.*
</IfModule>
mkdir -p /usr/local/apache/logs //apache2 ,没有这个apache目录
D:\APMServ5.2.6\Apache\bin>ab.exe -n10000 -c1000 http://http://192.168.1.104/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking http: (be patient)
http://192.168.1.104/
效果果然成了:
Forbidden
You don't have permission to access / on this server.
Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80
而在这个机器上:
root@192.168.1.104:~ curl "http://192.168.1.104/"
...
<title>Test Page for Apache Installation</title>
...
依然正常,说明该模块生效。
发现,没有出现这个文件夹,估计是权限的问题,于是:
chmod -R 777 /usr/local/apache/logs/
再使用:
tail -f /usr/local/apache/logs/error_log中日志如下:
[Mon Jan 10 13:16:45 2011] [error] [client 192.168.1.94] client denied by server configuration: /usr/local/apache/htdocs/logo.png
root@192.168.1.104:~ /usr/local/apache/logs # ls
dos-192.168.1.101
本机测试:
root@192.168.1.104:~/usr/local/apache2/bin # ./ab -n10000 -c1000 http://192.168.1.104/
后再看这个页面的情况:
root@192.168.1.104:~/usr/local/apache2/bin # curl "http://192.168.1.104/"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
<hr>
<address>Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80</address>
</body></html>
看日志,在服务器的 /usr/local/apache/logs/目录下会有
dos-192.168.1.94这样的文件生成[一般是dos加ip],果然有,如下:
ls /usr/local/apache/logs/
dos-192.168.1.101 dos-192.168.1.104
查看日志多了一个:
dos-192.168.1.104
再看:
tail -f /usr/local/apache2/logs/error_log中日志如下:【注意:是错误日志在apache2/Logs,在第在apache2中】
bogon:/usr/local/apache/logs # tail /usr/local/apache2/logs/error_log
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
。。。
========================================================================
以下是这位兄弟的,看自己的不明白再看他的罢,以下来源:
http://hi.baidu.com/suantop/blog/item/33f392a423bbbbe59152ee01.html
安装modsecurity(mod_security 可以加强apache的安全性特别是在防sql 注入上有很好的效果。):
# tar zxvf
modsecurity-apache-1.9.tar.gz
# cd modsecurity-apache-1.9/apache2/
# /apache2/bin/apxs -cia mod_security.c
打开httpd.conf加入
查看是否有
LoadModule security_module modules/mod_security.so
如没有则加上去
添加一段mod_security的配置文件
<IfModule mod_security.c>
SecFilterEngine On
SecFilterCheckURLEncoding
On
SecFilterDefaultAction "deny,log,status:500"
#SecFilterForceByteRange
32 126
#SecFilterScanPOST On
SecAuditLog
logs/audit_log
###
SecFilter "\.\./"
#####
SecFilter
/etc/*passwd
SecFilter /bin/*sh
#for css attack
SecFilter "<( |
)*script"
SecFilter "<(.| )+>"
#for sql attack
SecFilter "delete[
]+from"
SecFilter "insert[ ]+into"
SecFilter "select.+from"
SecFilter
"union[ ]+from"
SecFilter "drop[ ]"
</IfModule>
来源:http://www.dzhope.com/post/752/
========================================================================
mod_evasive是apache防范DDOS攻击的模块,其原理大致如下:
有新访问到达时:
查看黑名单中是否有该客户IP。
将IP和请求URL一起HASH;查找HASH表看过去1秒是否连续请求同一页。
将IP和请求URL一起HASH;查找HASH表看过去1秒是否请求超过50个连接。
满足任意一条就返回403并阻止该IP一定时间,该时间由DOSSiteInterval决定。
#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
此时可以编译mod_evasive20.c文件来定义默认参数[如果不在编译前更改,那么可能会引起如日志无法记录到自定义的位置,BLOCKING_PERIOD无法生效]
#define DEFAULT_HASH_TBL_SIZE 6195ul // 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 500 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR"/usr/local/apache/logs" // Default temp directory
#/usr/local/apache/bin/apxs-i -a -c mod_evasive20.c
注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;
安装完成之后会在/usr/local/apache/conf/httpd.conf文件中,默认添加一行
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 6195
DOSSiteCount 50
DOSPageCount 2
DOSPageInterval 1
DOSSiteInterval 1
DOSSiteInterval 500
DOSLogDir "/usr/local/apache/logs"
#bai ming dang
DOSWhiteList 127.0.0.1
DOSWhiteList 127.0.0.*
</IfModule>
默认参数说明如下:
DOSHashTableSize 3097:定义哈希表大小。
DOSSiteCount 50:允许客户机的最大并发连接。
DOSPageCount 2:允许客户机访问同一页的间隔。
DOSPageInterval 1:网页访问计数器间隔。
DOSSiteInterval 1:全站访问计数器间隔。
DOSSiteInterval 60:加入黑名单后拒绝访问时间。
DOSLogDir "/tmp":锁定机制临时目录。
DOSWhiteList 127.0.0.1:防范白名单,不阻止白名单IP。
从一个客户端ip来压服务器
/usr/bin/ab -n10000 -c1000 http://192.168.1.32/logo.png
$ curl http://192.168.1.32/logo.png
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /logo.png
on this server.</p>
</body></html>
errorlog中如下
tail -f /usr/local/apache/logs/error_log中日志如下:
[Mon Jan 10 13:16:45 2011] [error] [client 192.168.1.94] client denied by server configuration: /usr/local/apache/htdocs/logo.png
在服务器的 /usr/local/apache/logs/目录下会有
dos-192.168.1.94这样的文件生成[一般是dos加ip]
参考:
http://www.linuxsir.org/main/node/244
http://saplingidea.javaeye.com/blog/610363
http://www.zdziarski.com/blog/?page_id=442
http://ha.ckers.org/slowloris/slowloris.pl
类dos的http服务攻击工具slowloris
大致原理是, 攻击者先发送一个包:
GET / HTTP/1.1\r\n
Host: host\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n
Content-Length: 86\r\n
结尾少了一个\r\n,所以apache持继等待,攻击者再发起一轮请求过去就会再次加重服务器的fork进程开销。虽然linux的进程设计的就够轻量的了,但是这样不停的产生进程会在短时间内让系统负载猛升,apache很快达到其所能处理连接的上限而又不能释放,再也无法提供服务了。这种攻击是很古老的攻击了,apache的连接数有限(并发),配置文件里可以更改,如果这个连接数到达了上限,就不能接收新的请求了,所以就被dos了。发起攻击的时候一般是攻击者占住一个连接不让apache释放,就可以累计占用连接数。与SYN攻击方式以及其他暴力攻击方式相比,可以用极少的带宽实现攻击效果,使Apache的httpd进程挂起不释放,导致Apache服务进程占满,达到攻击效果。
X-a: b\r\n
攻击者可以多发送一些类似的组合,直到Apache连接数耗尽。Web服务器查看http进程状态,可以看到有大量的httpd进程: 这个东西威力还挺大,因为不需要太多流量,就是一些HTTP头。而另外一些攻击者提供更绝的方法:
1.- send a content-length header without sending enough data
2.- use the keep-alive header and an incomplete request
3.- send a lot of small headers very slow
6195那个数字有问题
这个应该是素数
53ul, 97ul, 193ul, 389ul, 769ul,
1543ul, 3079ul, 6151ul, 12289ul, 24593ul,
49157ul, 98317ul, 196613ul, 393241ul, 786433ul,
1572869ul, 3145739ul, 6291469ul, 12582917ul, 25165843ul,
50331653ul, 100663319ul, 201326611ul, 402653189ul, 805306457ul,
1610612741ul, 3221225473ul, 4294967291ul
========================================================================
作者:北南南北
来自: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 ……
===========================================
最后说明配置文件的一些参数代表意思,这里我就不多说了,自己看
这个也是我网上复制下来的。
说明:
DOSHashTableSize 3097
#记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值.
DOSPageCount 5
#同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置.
DOSSiteCount 100
#同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSPageInterval 2
#设置DOSPageCount中时间长度标准,默认值为1。
DOSSiteInterval 2
设置DOSSiteCount中时间长度标准,默认值为1。
DOSBlockingPeriod 3600
#被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。
DOSEmailNotify 17rumen@17rumen.com
#设置受到攻击时接收攻击信息提示的邮箱地址。
DOSLogDir "/var/log/mod_evasive"
#攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。
好了,视频就演示到这里,谢谢观看!!!!!
软件工具 下载地址:请使用WinRAR或者7-Zip进行解压
==> 点击这里下载 mod_evasive_1.10.1.tar.gz
让Apache免受DDOS攻击的mod_evasive
2008-11-12 20:21来源:http://hi.baidu.com/hfr6666/blog/item/80c3befa70c7ac19a9d3112e.html
(本人做了部分修改)
让Apache免受DDOS攻击的mod_evasive
# cd /usr/local/src
# wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
# tar xzvf mod_evasive_1.10.1.tar.gz
# cd mod_evasive
# /usr/local/apache/bin/apxs -i -a -c mod_evasive20.c
修改部分:
# /usr/sbin/apxs -i -a -c mod_evasive20.c
注:没有apxs的话,请安装:httpd-devel
CentOs和RedHat可直接运行:yum install httpd-devel
模块就自动编译安装进 /usr/local/apache/modules,
自动在httpd.conf里添加
LoadModule evasive20_module modules/mod_evasive20.so
手工在httpd.conf 里添加一些配置:
<IfModule mod_evasive20.c>
#记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值
DOSHashTableSize 3097
#同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置。
DOSPageCount 3
#同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSSiteCount 40
#设置DOSPageCount中时间长度标准,默认值为1。
DOSPageInterval 2
#DOSSiteInterval 2 设置DOSSiteCount中时间长度标准,默认值为1。
DOSSiteInterval 2
#被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。
DOSBlockingPeriod 10
#设置受到攻击时接收攻击信息提示的邮箱地址。
DOSEmailNotify you@yourdomain.com
#受到攻击时Apache运行用户执行的系统命令
DOSSystemCommand "su - someuser -c ‘/sbin/… %s …’"
#攻击日志存放目录
DOSLogDir "/var/log/mod_evasive"
#进入信任ip名单的ip它们将不会受到阻止,其功能主要是用于保护软件,scripts,本地搜索,或其它的自动工具对服务器进行大量的资源请求 时不会被阻止.请确认而不是用在添加客户或其它什么类别的人员,因为这将给本模块进行正常工作带来阻碍信任ip名单应在apache配置文件中添加如下格 式的字段(可以是ip段)
DOSWhitelist 127.0.0.1
DOSWhitelist 127.0.0.*
#ip地址后三段可以使用通配符,并且可以各格式复用
</IfModule>
测试–在mod_evasive20目录下,执行
#perl test.pl
看到类似于下面的提示
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
就ok了
如果提示connection refused
就修改test.pl 里面的 127.0.0.1 为你本机用的ip
日志来源:
http://www.linuxsir.org/main/node/244
http://wenku.baidu.com/view/19d5fbd4360cba1aa811daa3.html
Apache的主要插件列表:
1)apache简单防DDOS攻击的配置,需要从网上找一个mod_evasive20模块一般情况下没有必要配置这玩意,但是活动确实有这样的问题压垮Apache,进而DB挂了。
2)apache防sql注入攻击的配置,需要安装mod_security模块。
加大apache最大连接数的配置,如果选择的是preworker工作方式。preworker和worker的区别就不讲了。apache2.0以上直接设置ServerLimit即可,apache2.0以前还要修改源代码才能使修改
的ServerLimit生效,建议应用服务器用apache2.0吧,性能差不了多少。
3)压缩传输的配置,这个做为网站来说非常重要,它是不压缩传输大小的20%左右,也就是说用户访问一个网站速度快了5倍,不配置不行,但是图片不能做压缩了。mod_deflate这个模块就是干这个的。实验证明,启用Apache的mod_deflate模块进行网页内容压缩,能够平均将网页大小降到原来的60%左右。尤其是对非图片、非多媒体为主的网站效果更加明显,http://yangsiwei.com/add-mod_deflate-module-to-apache2。
来源:http://www.youican.com/web/php/9035.html
相关配置参考DownLoad:
下载文件
主要是先看配置文件的中文注释:
========================================================================
DOSHashTableSize 3097 这个是1G数量。
DOSPageCount 5 同一个时间同一个页面被访问的次数。对同一个用户
DOSSiteCount 100 同一个用户同时并发的连接数是100
DOSPageInterval 2
DOSSiteInterval 2 间隔时间
DOSBlockingPeriod 600 被封锁的时间是600秒
DOSLogDir "/var/log/mod_evasive" 日志文件的存放位置。
#DOSWhitelist 127.0.0.1
#DOSWhitelist 192.168.0.*这个就是白名单,这里的ip就不受上面的限制。
[root@102 ~]# touch /var/log/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
vi mod_evasive20.c
/*
#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
*/
#define DEFAULT_HASH_TBL_SIZE 6195ul // 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 500 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR"/usr/local/apache2/logs" // Default temp directory
/usr/local/apache2/bin/apxs -i -c mod_evasive20.c
...
cp .libs/mod_evasive20.so /usr/local/apache2/modules/mod_evasive20.so
cp .libs/mod_evasive20.lai /usr/local/apache2/modules/mod_evasive20.la
cp .libs/mod_evasive20.a /usr/local/apache2/modules/mod_evasive20.a
ranlib /usr/local/apache2/modules/mod_evasive20.a
chmod 644 /usr/local/apache2/modules/mod_evasive20.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apache2/modules
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_evasive20.so
注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;
安装完成之后会在/usr/local/apache2/conf/httpd.conf文件中,默认添加一行
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
vi /usr/local/apache2/conf/httpd.conf
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 6195
DOSSiteCount 50
DOSPageCount 2
DOSPageInterval 1
DOSSiteInterval 1
DOSSiteInterval 500
DOSLogDir "/usr/local/apache/logs"
#bai ming dang
DOSWhiteList 127.0.0.1
DOSWhiteList 127.0.0.*
</IfModule>
mkdir -p /usr/local/apache/logs //apache2 ,没有这个apache目录
D:\APMServ5.2.6\Apache\bin>ab.exe -n10000 -c1000 http://http://192.168.1.104/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking http: (be patient)
http://192.168.1.104/
效果果然成了:
Forbidden
You don't have permission to access / on this server.
Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80
而在这个机器上:
root@192.168.1.104:~ curl "http://192.168.1.104/"
...
<title>Test Page for Apache Installation</title>
...
依然正常,说明该模块生效。
发现,没有出现这个文件夹,估计是权限的问题,于是:
chmod -R 777 /usr/local/apache/logs/
再使用:
tail -f /usr/local/apache/logs/error_log中日志如下:
[Mon Jan 10 13:16:45 2011] [error] [client 192.168.1.94] client denied by server configuration: /usr/local/apache/htdocs/logo.png
root@192.168.1.104:~ /usr/local/apache/logs # ls
dos-192.168.1.101
本机测试:
root@192.168.1.104:~/usr/local/apache2/bin # ./ab -n10000 -c1000 http://192.168.1.104/
后再看这个页面的情况:
root@192.168.1.104:~/usr/local/apache2/bin # curl "http://192.168.1.104/"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
<hr>
<address>Apache/2.0.59 (Unix) PHP/5.2.6 Server at 192.168.1.104 Port 80</address>
</body></html>
看日志,在服务器的 /usr/local/apache/logs/目录下会有
dos-192.168.1.94这样的文件生成[一般是dos加ip],果然有,如下:
ls /usr/local/apache/logs/
dos-192.168.1.101 dos-192.168.1.104
查看日志多了一个:
dos-192.168.1.104
再看:
tail -f /usr/local/apache2/logs/error_log中日志如下:【注意:是错误日志在apache2/Logs,在第在apache2中】
bogon:/usr/local/apache/logs # tail /usr/local/apache2/logs/error_log
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
[Tue Aug 23 07:00:26 2011] [error] [client 192.168.1.104] client denied by server configuration: /usr/local/apache2/htdocs/
。。。
========================================================================
以下是这位兄弟的,看自己的不明白再看他的罢,以下来源:
http://hi.baidu.com/suantop/blog/item/33f392a423bbbbe59152ee01.html
安装modsecurity(mod_security 可以加强apache的安全性特别是在防sql 注入上有很好的效果。):
# tar zxvf
modsecurity-apache-1.9.tar.gz
# cd modsecurity-apache-1.9/apache2/
# /apache2/bin/apxs -cia mod_security.c
打开httpd.conf加入
查看是否有
LoadModule security_module modules/mod_security.so
如没有则加上去
添加一段mod_security的配置文件
<IfModule mod_security.c>
SecFilterEngine On
SecFilterCheckURLEncoding
On
SecFilterDefaultAction "deny,log,status:500"
#SecFilterForceByteRange
32 126
#SecFilterScanPOST On
SecAuditLog
logs/audit_log
###
SecFilter "\.\./"
#####
SecFilter
/etc/*passwd
SecFilter /bin/*sh
#for css attack
SecFilter "<( |
)*script"
SecFilter "<(.| )+>"
#for sql attack
SecFilter "delete[
]+from"
SecFilter "insert[ ]+into"
SecFilter "select.+from"
SecFilter
"union[ ]+from"
SecFilter "drop[ ]"
</IfModule>
来源:http://www.dzhope.com/post/752/
========================================================================
mod_evasive是apache防范DDOS攻击的模块,其原理大致如下:
有新访问到达时:
查看黑名单中是否有该客户IP。
将IP和请求URL一起HASH;查找HASH表看过去1秒是否连续请求同一页。
将IP和请求URL一起HASH;查找HASH表看过去1秒是否请求超过50个连接。
满足任意一条就返回403并阻止该IP一定时间,该时间由DOSSiteInterval决定。
#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
此时可以编译mod_evasive20.c文件来定义默认参数[如果不在编译前更改,那么可能会引起如日志无法记录到自定义的位置,BLOCKING_PERIOD无法生效]
#define DEFAULT_HASH_TBL_SIZE 6195ul // 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 500 // Default for Detected IPs; blocked for 10 seconds
#define DEFAULT_LOG_DIR"/usr/local/apache/logs" // Default temp directory
#/usr/local/apache/bin/apxs-i -a -c mod_evasive20.c
注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;
安装完成之后会在/usr/local/apache/conf/httpd.conf文件中,默认添加一行
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 6195
DOSSiteCount 50
DOSPageCount 2
DOSPageInterval 1
DOSSiteInterval 1
DOSSiteInterval 500
DOSLogDir "/usr/local/apache/logs"
#bai ming dang
DOSWhiteList 127.0.0.1
DOSWhiteList 127.0.0.*
</IfModule>
默认参数说明如下:
DOSHashTableSize 3097:定义哈希表大小。
DOSSiteCount 50:允许客户机的最大并发连接。
DOSPageCount 2:允许客户机访问同一页的间隔。
DOSPageInterval 1:网页访问计数器间隔。
DOSSiteInterval 1:全站访问计数器间隔。
DOSSiteInterval 60:加入黑名单后拒绝访问时间。
DOSLogDir "/tmp":锁定机制临时目录。
DOSWhiteList 127.0.0.1:防范白名单,不阻止白名单IP。
从一个客户端ip来压服务器
/usr/bin/ab -n10000 -c1000 http://192.168.1.32/logo.png
$ curl http://192.168.1.32/logo.png
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /logo.png
on this server.</p>
</body></html>
errorlog中如下
tail -f /usr/local/apache/logs/error_log中日志如下:
[Mon Jan 10 13:16:45 2011] [error] [client 192.168.1.94] client denied by server configuration: /usr/local/apache/htdocs/logo.png
在服务器的 /usr/local/apache/logs/目录下会有
dos-192.168.1.94这样的文件生成[一般是dos加ip]
参考:
http://www.linuxsir.org/main/node/244
http://saplingidea.javaeye.com/blog/610363
http://www.zdziarski.com/blog/?page_id=442
http://ha.ckers.org/slowloris/slowloris.pl
类dos的http服务攻击工具slowloris
大致原理是, 攻击者先发送一个包:
GET / HTTP/1.1\r\n
Host: host\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n
Content-Length: 86\r\n
结尾少了一个\r\n,所以apache持继等待,攻击者再发起一轮请求过去就会再次加重服务器的fork进程开销。虽然linux的进程设计的就够轻量的了,但是这样不停的产生进程会在短时间内让系统负载猛升,apache很快达到其所能处理连接的上限而又不能释放,再也无法提供服务了。这种攻击是很古老的攻击了,apache的连接数有限(并发),配置文件里可以更改,如果这个连接数到达了上限,就不能接收新的请求了,所以就被dos了。发起攻击的时候一般是攻击者占住一个连接不让apache释放,就可以累计占用连接数。与SYN攻击方式以及其他暴力攻击方式相比,可以用极少的带宽实现攻击效果,使Apache的httpd进程挂起不释放,导致Apache服务进程占满,达到攻击效果。
X-a: b\r\n
攻击者可以多发送一些类似的组合,直到Apache连接数耗尽。Web服务器查看http进程状态,可以看到有大量的httpd进程: 这个东西威力还挺大,因为不需要太多流量,就是一些HTTP头。而另外一些攻击者提供更绝的方法:
1.- send a content-length header without sending enough data
2.- use the keep-alive header and an incomplete request
3.- send a lot of small headers very slow
6195那个数字有问题
这个应该是素数
53ul, 97ul, 193ul, 389ul, 769ul,
1543ul, 3079ul, 6151ul, 12289ul, 24593ul,
49157ul, 98317ul, 196613ul, 393241ul, 786433ul,
1572869ul, 3145739ul, 6291469ul, 12582917ul, 25165843ul,
50331653ul, 100663319ul, 201326611ul, 402653189ul, 805306457ul,
1610612741ul, 3221225473ul, 4294967291ul
========================================================================
作者:北南南北
来自: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 ……
===========================================
最后说明配置文件的一些参数代表意思,这里我就不多说了,自己看
这个也是我网上复制下来的。
说明:
DOSHashTableSize 3097
#记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值.
DOSPageCount 5
#同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置.
DOSSiteCount 100
#同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSPageInterval 2
#设置DOSPageCount中时间长度标准,默认值为1。
DOSSiteInterval 2
设置DOSSiteCount中时间长度标准,默认值为1。
DOSBlockingPeriod 3600
#被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。
DOSEmailNotify 17rumen@17rumen.com
#设置受到攻击时接收攻击信息提示的邮箱地址。
DOSLogDir "/var/log/mod_evasive"
#攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。
好了,视频就演示到这里,谢谢观看!!!!!
软件工具 下载地址:请使用WinRAR或者7-Zip进行解压
==> 点击这里下载 mod_evasive_1.10.1.tar.gz
让Apache免受DDOS攻击的mod_evasive
2008-11-12 20:21来源:http://hi.baidu.com/hfr6666/blog/item/80c3befa70c7ac19a9d3112e.html
(本人做了部分修改)
让Apache免受DDOS攻击的mod_evasive
# cd /usr/local/src
# wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
# tar xzvf mod_evasive_1.10.1.tar.gz
# cd mod_evasive
# /usr/local/apache/bin/apxs -i -a -c mod_evasive20.c
修改部分:
# /usr/sbin/apxs -i -a -c mod_evasive20.c
注:没有apxs的话,请安装:httpd-devel
CentOs和RedHat可直接运行:yum install httpd-devel
模块就自动编译安装进 /usr/local/apache/modules,
自动在httpd.conf里添加
LoadModule evasive20_module modules/mod_evasive20.so
手工在httpd.conf 里添加一些配置:
<IfModule mod_evasive20.c>
#记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值
DOSHashTableSize 3097
#同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置。
DOSPageCount 3
#同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSSiteCount 40
#设置DOSPageCount中时间长度标准,默认值为1。
DOSPageInterval 2
#DOSSiteInterval 2 设置DOSSiteCount中时间长度标准,默认值为1。
DOSSiteInterval 2
#被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。
DOSBlockingPeriod 10
#设置受到攻击时接收攻击信息提示的邮箱地址。
DOSEmailNotify you@yourdomain.com
#受到攻击时Apache运行用户执行的系统命令
DOSSystemCommand "su - someuser -c ‘/sbin/… %s …’"
#攻击日志存放目录
DOSLogDir "/var/log/mod_evasive"
#进入信任ip名单的ip它们将不会受到阻止,其功能主要是用于保护软件,scripts,本地搜索,或其它的自动工具对服务器进行大量的资源请求 时不会被阻止.请确认而不是用在添加客户或其它什么类别的人员,因为这将给本模块进行正常工作带来阻碍信任ip名单应在apache配置文件中添加如下格 式的字段(可以是ip段)
DOSWhitelist 127.0.0.1
DOSWhitelist 127.0.0.*
#ip地址后三段可以使用通配符,并且可以各格式复用
</IfModule>
测试–在mod_evasive20目录下,执行
#perl test.pl
看到类似于下面的提示
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
就ok了
如果提示connection refused
就修改test.pl 里面的 127.0.0.1 为你本机用的ip
日志来源:
http://www.linuxsir.org/main/node/244
http://wenku.baidu.com/view/19d5fbd4360cba1aa811daa3.html
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/4338/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2011-8-22 23:51
评论列表