欢迎大家分享自己的文档,请点击查阅:分享方法,![]() 如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友…… DDoS (distributed denial-of-service) 及 DoS (denial-of-service) 在网络上十分常见,而 DoS攻击所传送的请求跟正常的请求一样,分别在于每秒钟发出大量请求到服务器,使服务器的负载增加,最常见的情况是服务器暂停服务。 而 mod_evasive 则是一个预防 Apache 遭受 DDos 攻击的模块,可以防止同一个 IP 对相同 URI 发出的大量请求,可设定的选项有: – 限制同一个 IP 在一定秒数内请求一个页面或档案的次数。 – 限制同一个 IP 一秒内只可发出 50 个请求。 – 设定被禁止的 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配置文件中添加如下内容: <IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 5 DOSSiteCount 50 DOSPageInterval 2 DOSSiteInterval 2 DOSBlockingPeriod 10 </IfModule> 参数解析: DOSHashTableSize — 这是占用内存的大小,如果服务器比较繁忙,这个数值要设定大一点。 DOSPageCount — 同一 IP 在一个时段内可以存取同一页面的次数,超过会被禁止。 DOSSiteCount — 同一 IP 在一个网站内可以占用多少 Object,超过会禁止。 DOSPageInterval — DOSPageCount 内的时段设定。 DOSSiteInterval — DOSSiteCount 的时间设定,以秒为单位。 DOSBlockingPeriod — 当发现疑似攻击后,使用者会收到 403 Forbidden,这是设定封锁的时间,以秒为单位。 重启apache # /usr/local/apache2/bin/apachectl restart 对mod_evasive测试验证 ; 防DDOS的模块做好后,我们可以要验证,可以用Apache 压力测试工具 webbench,比如; # webbench -c 200 -t 10 http://localhost/phpinfo.php 注:上面的例子的意思是,对本地服务器上phpinfo.php 在10秒里发起200个连接。 另外一个测试工具就是mod_evasive的解压包的目录中,有个test.pl ,你可以修改IP地址,然后用 #perl test.pl 因为我们编译mod_evasive时,用的是默认配置,所以日志被存放在/tmp目录中。如果有DDOS攻击,会在/tmp产生日志。日志的文件是以 dos-开头的; mod_evasive 的高级配置; 如果想更改一些适合自己的参数,有些必要的参数,并不是通过配置文件修改就一下起作用的,我们要修改源码包中的 mod_evasive.c(Apache 1.x用之) 或 mod_evasive20.c (Apache 2.x用之); #define DEFAULT_HASH_TBL_SIZE 3097ul // Default hash table size 如果您在这里更改了参数,不要忘记修改Apache 配置文件中关于mod_evasive 的参数; 如果您想加入一些其它的参数,请查阅源码包中的README,里面有详细说明,大多来说没太大的必要…… 这个文件相当重要,如果您想更改某些设置,就要修改这个文件…… 转载请注明linux系统运维: |