分类: LINUX
2010-03-24 14:09:34
DDoS (distributed denial-of-service) 及 DoS (denial-of-service) 在网络上十分常见,而 DoS 攻击所传送的请求跟正常的请求一样,分别在于每秒钟发出大量请求到服务器,使服务器的负载增加,最常见的情况是服务器暂停服务。 而 mod_evasive 则是一个预防 Apache 遭受 DDos 攻击的模块,可以防止同一个 IP 对相同 URI 发出的大量请求,可设定的选项有: – 限制同一个 IP 在一定秒数内请求一个页面或档案的次数。 mod_evasive 安装: 先到如下地址下载包:http://www.zdziarski.com/blog/?page_id=442 目前最新稳定版本是:mod_evasive_1.10.1 解压缩 # tar xzvf tar xzvf mod_evasive_1.10.1.tar.gz # cd mod_evasive_1.10.1 # /usr/local/apache2/bin/apxs -iac mod_evasive20.c 安装好后,在apache的配置文件中应该能看到以下内容: LoadModule evasive20_module modules/mod_evasive20.so 编辑apache配置文件,在apache配置文件中添加如下内容:
参数解析: DOSHashTableSize — 这是占用内存的大小,如果服务器比较繁忙,这个数值要设定大一点。 重启apache # /usr/local/apache2/bin/apachectl restart 对mod_evasive测试验证 ; 防DDOS的模块做好后,我们可以要验证,可以用Apache 压力测试工具 webbench,比如;
注:上面的例子的意思是,对本地服务器上phpinfo.php 在10秒里发起200个连接。 另外一个测试工具就是mod_evasive的解压包的目录中,有个test.pl ,你可以修改IP地址,然后用 #perl test.pl 是不是有效果,请根据 ab工具或 测试脚本出来的结果来查看; 因为我们编译mod_evasive时,用的是默认配置,所以日志被存放在/tmp目录中。如果有DDOS攻击,会在/tmp产生日志。日志的文件是以 dos-开头的;
如果想更改一些适合自己的参数,有些必要的参数,并不是通过配置文件修改就一下起作用的,我们要修改源码包中的 mod_evasive.c(Apache 1.x用之) 或 mod_evasive20.c (Apache 2.x用之); #define DEFAULT_HASH_TBL_SIZE 3097ul // Default hash table size 比如我们改改其中的数字,根据英文很容易理解。比如修改日志存放目录,就把/tmp改成别的目录。如果您不知道放在哪好,还是用默认的吧; 如果您在这里更改了参数,不要忘记修改Apache 配置文件中关于mod_evasive 的参数; 如果您想加入一些其它的参数,请查阅源码包中的README,里面有详细说明,大多来说没太大的必要…… 这个文件相当重要,如果您想更改某些设置,就要修改这个文件…… |