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