Apache防DDOS模块mod_evasive安装和配置方法详解_Linux

一、mod_evasive 介绍
mod_evasive 是Apache(httpd)服务器的防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、硬件防火墙等防火墙设备配合使用,可能有更好的效果。安装也不费力气。如果你需要的时候,会想到这个模块的。

时间: 2024-08-30 04:57:18

Apache防DDOS模块mod_evasive安装和配置方法详解_Linux的相关文章

linux网站服务Apache的安装与配置方法详解_Linux

这篇文章介绍下linux网站服务apache的安装与配置方法,包括挂载光盘,安装http服务,管理httpd服务,httpd的配置文件几大部分.具体详情可以参考下文. 1.挂载光盘 自己习惯将光盘挂载在/media/cdrom目录,在做本地yum源的时候此目录为默认目录之一 [root@localhost /]# mount /dev/cdrom /media/cdrom/ 2.安装httpd服务(如果本地yum源已经搭建好就直接进行这一步,没有的话需要搭建,前面的文章有提到yum源的搭建) [

mysql 5.6.13 免安装版配置方法详解_Mysql

1. 下载mysql Community Server 5.6.13 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是: "D:\Program Files\MySQL\mysql-5.6.13-win32" 将解压目录下默认文件 my-default.ini 拷贝一份,改名 my.ini 复制下面的配置信息到 my.ini 保存 #如果没有my-default.ini,可自己新建my.ini或者从其他地方中获取 ################

YUM解决RPM包安装依赖关系及yum工具介绍本地源配置方法详解_Linux

1.背景概述 在实际生产环境下,对于在linux系统上安装rpm包,主要面临两个实际的问题 1)安装rpm包过程中,不断涌现的依赖关系问题,导致需要按照提示或者查询资料,手工安装更多的包 2)由于内外网的隔离,无法连接外网的yum源 鉴于上述因此,本文将详细介绍,yum工具以及配置本地yum源的方法 2.yum工具简介 •yum工具作为rpm包的软件管理器,可以进行rpm包的安装.升级以及删除等日常管理工作,而且对于rpm包之间的依赖关系可以自动分析,大大简化了rpm包的维护成本. •yum工具

Linux crontab定时任务配置方法(详解)_Linux

CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行.cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业.crontab命令允许用户提交.编辑或删除相应的作业.每一个用户都可以有一个crontab文件来保存调度信息.系统管理员可以通过cron.deny 和 cron

万网独享主机Apache为Ecshop商城添加404页面的方法详解_Linux

标题已经说的比较清楚,只针对这一种情况,希望给予遇到同样问题的人些许启发,缩短解决问题的时间. 相关信息: 万网独享主机/Linux操作系统/Apache/Ecshop商城/404页面设置,同样在win7系统/Apache上面也测试通过 一种问题解决方法: 1.首先在Apache的conf目录下面配置httpd.conf文件,找到#ErrorDocument 404 /missing.html,去除前面的#号即可,我的修改成了ErrorDocument 404 /404.html: 2.在站点的

linux系统中VNC远程桌面安装和配置方法详解

具体方法 1.检查linux系统是否安装VNC命令rpm -q vnc-server 如果没有安装则使用yum install vnc vnc-server 2.启动vnc服务  代码如下 复制代码 vncserver You will require a password to access your desktops. Password: Verify: 输入两次密码,这个就是你远程登陆时所需要的密码. 3.修改配置文件,root账户下  代码如下 复制代码 vi /etc/sysconfi

ubuntu安装phpmyadmin配置方法详解

在ubuntu下,运行:  代码如下 复制代码 sudo apt-getinstall phpmyadmin 过一会后会有一些设置,如选择服务器.密码设定等等内容.安装完成后,访问http://localhost/phpmyadmin会出现404错误,这是因为没有将phpmyadmin目录映射到apache目录下面,运行下面命令即可:  代码如下 复制代码 sudo ln -s /usr/share/phpmyadmin /var/www 现在我如果我们登录phpmyadmin会需要输入密码,我

Redhat/CentOS通过yum安装与配置方法详解

1 检查当前Linux系统是否安装了vsftp  代码如下 复制代码 [root@localhost ~]#rpm -qa|grep vsftpd //若没有任何输出内容,则表示当前linux系统未安装vsftp. 2 安装vsftpd服务器 从redhat或者centos的安装镜像包的server/文件夹中提取出rpm包.(RHEL5.3中的是vsftpd-2.0.5-12.el5.i386.rpm,通过vmtools把它复制到root's home中去,然后执行如下命令:  代码如下 复制代

linux网络参数配置方法详解_Linux

主要用途:1.查看网络接口设置: ifconfig –a或ifconfig 网络接口 –a2.网络配置 ifconfig  网络接口  [add/del]  IP地址  netmask  子网掩码 例:ifocnfig eth0 10.2.3.4 [netmask 255.255.255.0]3.网络接口的激活/关闭 格式:ifconfig 网络接口 up/down配置dns建立/etc/resolv.conf文件,在里面写入DNS服务器地址配置主机名配置/etc/sysconfig/netwo