分类: 系统运维
2010-05-06 15:13:28
1、 mod_evasive 介绍; mod_evasive是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。虽然并不能完全防御DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力。如果配合iptables、硬件防火墙等防火墙设备配合使用,可能有更好的效果。mod_evasive 的官方地址: 2、 mod_evasive 的安装和配置; 2.1 mod_evasive 的下载地址; 2.2 mod_evasive 的安装; 安装 mod_evasive 之前,你要用安装Apache(httpd)服务器软件包,还要安装httpd-devel或 apache-dev。在Slackware 12.0中,安装httpd软件即可; 对于Apache 1.x 请用下面的编译方法; #/usr/sbin/apxs -iac mod_evasive.c 对于Apache 2.x 可以用下面的办法; #tar zxvf mod_evasive_1.10.1.tar.gz #cd mod_evasive #/usr/sbin/apxs -i -a -c mod_evasive20.c 注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径; 我们然后修改/etc/ld.so.conf 文件,把编译出来的动态模块的所在位置指定在 ld.so.conf中;比如我用的是Aapche2.x ,编译完成后,模块mod_evasive20.so 安装到了 /usr/lib/httpd/modules 目录中;那我们就要把这个目录写入到ld.so.conf中。 #echo "/usr/lib/httpd/modules" >> /etc/ld.so.conf #ldconfig 注: 具体要与你的系统环境为准,不要照搬照抄,如果你对Linux不太熟的话; 2.3 mod_evasive 的配置; 在编译安装完成后,会自动插入一行到Apache 配置文件中,对于Apache 2.x 版本中,应该在其配置文件中有类似下面的一行; LoadModule evasive20_module lib/httpd/modules/mod_evasive20.so 对于Apache 1.x来说,也应该差不多,大体只是路径不同罢了; 然后我们再修改 Apache 的配置文件,配置文件名为httpd.conf; 在Apache v1.x 版本中,要加入; DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 在Apache v2.x加入; DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 如果您不知道把这些插入到哪,用下面的办法做也是可以的; 在/etc目录中创建一个文件,比如mod_evasive.conf; #touch /etc/mod_evasive.conf 然后把根据自己的Apache版本来加入相应的内容; 接着我们再修改 httpd.conf ,在最后一行加入 Include /etc/mod_evasive.conf 修改完成后,我们要重启Apache服务器; 比如在Slackware 12.0中,Apache 2.x的重启,我们要用到 #/etc/rc.d/rc.httpd restart 在Redhat、Fededora、Debian、Ubuntu、CentOS中的Apache,可以用; #/etc/init.d/httpd restart 或 #/etc/init.d/apache restart 大体上差不多是这样的…… 2.4 对mod_evasive测试验证 ; 防DDOS的模块做好后,我们可以要验证,可以用Apache 自带的ab工具,系统默认安装在/usr/sbin目录中;比如; #/usr/sbin/ab -n 1000 -c 50 注:上面的例子的意思是,如果您的服务器是google的WEB服务器,我们要发送数据请求包,总共1000个,每次并发50个; 另外一个测试工具就是mod_evasive的解压包的目录中,有个test.pl ,你可以修改IP地址,然后用 #perl test.pl 是不是有效果,请根据 ab工具或 测试脚本出来的结果来查看; 因为我们编译mod_evasive时,用的是默认配置,所以日志被存放在/tmp目录中。如果有DDOS攻击,会在/tmp产生日志。日志的文件是以 dos-开头的; 3、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,里面有详细说明,大多来说没太大的必要…… 这个文件相当重要,如果您想更改某些设置,就要修改这个文件…… 4、关于本文; mod_evasive 还是有点用的,安装也不费力气。如果你需要的时候,会想到这个模块的 …… mod_evasive 是否有更高级的用法,也不是在这篇文章里能说的清楚的。如果不懂怎么办?请查看源码包中的README。 |