apache防ddos模块mod_evasive安装配置详解

发布时间:2020-04-13编辑:脚本学堂
本文介绍了apache防ddos模块mod_evasive安装与配置方法,实现apache防ddos拒绝服务攻击,感兴趣的朋友参考下。

本节内容:
apache防ddos模块mod_evasive安装与配置
 
一、mod_evasive 介绍
mod_evasive 是apache服务器http服务器的防ddos的一个模块。对于web服务器来说,是目前比较好的一个防护ddos攻击的扩展模块。
虽然并不能完全防御ddos攻击,但在一定条件下,还是起到缓服apache(httpd)服务器的压力。
如果配合iptables、硬件防火墙等防火墙设备配合使用,可能有更好的效果。
mod_evasive 的官方地址:
http://www.zdziarski.com/

二、mod_evasive 工作原理
apache模块mod_evasive利用hash表储存相应的http请求,利用设定规则判断是否拒绝对方的请求。

三、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/
apxs -i -a -c mod_evasive20.c
 

#编译、安装、并加载模块
#注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装apache(httpd)的,你应该自己来指定路径;
在编译安装完成后,会自动插入一行到apache 配置文件中,对于apache 2.x 版本中,应该在其配置文件中有类似下面的一行;
loadmodule evasive20_module   lib/httpd/modules/mod_evasive20.so

四、配置mod_evasive
 

复制代码 代码示例:
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
#加入以下配置
<ifmodule mod_evasive20.c>
    doshashtablesize    3097 #表大小
    dospagecount        2 #限制单位时间内同一ip请求同一网页次数
    dossitecount        10 #限制单位时间内同一ip请求网站次数
    dospageinterval     1 #网页存取间隔
    dossiteinterval     1 #网站存取间隔
    dosblockingperiod   10 #限制访问时间
    dosemailnotify     #疑似攻击时邮件通知
    dossystemcommand "su - onovps -c iptables -i input -s %s --dport 80 -j drop"
    #疑似攻击时用防火墙限制ip访问80端口
    doslogdir  "/var/log/    #日志目录
    doswhitelist 127.0.0.1 #添加白名单
</ifmodule>

使用以下方法也可以:
在/etc目录中创建一个文件,比如mod_evasive.conf;
 

复制代码 代码示例:
[root@localhost ~]#touch /etc/mod_evasive.conf

然后把根据自己的apache版本来加入相应的内容;
接着再修改 httpd.conf ,在最后一行加入
include /etc/mod_evasive.conf
修改完成后,要重启apache服务器使配置生效:
/etc/init.d/httpd restart

五、测试mod_evasive
防ddos的模块做好后,可以要验证,可以用apache 自带的ab工具,系统默认安装在/usr/sbin目录中;比如:
 

复制代码 代码示例:
[root@localhost ~]/usr/sbin/ab -n 1000 -c 50 http://www.baidu.com:80/

注:上面的例子的意思是,如果您的服务器是百度的web服务器,要发送数据请求包,总共1000个,每次并发50个;
另外一个测试工具就是mod_evasive的解压包的目录中,有个test.pl ,你可以修改IP地址,然后用
 

复制代码 代码示例:
[root@localhost ~]perl test.pl
http/1.1 200 ok
http/1.1 403 forbidden

是不是有效果,请根据 ab工具或 测试脚本出来的结果来查看;
注:因为编译mod_evasive时,用的是默认配置,所以日志被存放在/tmp目录中。如果有ddos攻击,会在/tmp产生日志。日志的文件是以 dos-开头的;

六、配置参数详解
 

doshashtablesize 3097:定义哈希表大小。  
dossitecount 50:允许客户机的最大并发连接。  
dospagecount 2:允许客户机访问同一页的间隔。  
dospageinterval 1:网页访问计数器间隔。  
dossiteinterval 1:全站访问计数器间隔。  
dossiteinterval 60:加入黑名单后拒绝访问时间。  
dosemailnotify xxxx@gmail.com:有ip加入黑名单后通知管理员。  
dossystemcommand "sudo iptables -a input -s %s -j drop":ip加入黑名单后执行的系统命令。  
doslogdir "/tmp":锁定机制临时目录,日志目录。  
doswhitelist 127.0.0.1:防范白名单,不阻止白名单ip。

七、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,里面有详细说明,大多来说没太大的必要……
这个文件相当重要,如果您想更改某些设置,就要修改这个文件……

八、总结
mod_evasive 还是有点用的,对于apache服务器来说,是目前比较好的一个防护ddos攻击的扩展模块。虽然并不能完全防御 ddos攻击,但在一定条件下,还是起到缓服apache(httpd)服务器的压力。如果配合iptables、硬件防火墙等防火墙设备配合使用,可能有更好的效果。安装也不费力气。如果你需要的时候,会想到这个模块的。