DirectAdmin是一款国外主机常用的商业主机管理面板,默认采用Apache引擎,简单易用,功能全面,我们还可以通过添加一些模块来优化它的性能。上个月老赵分享了添加Mod_cache模块(前情回顾),今天我们来看看另一个模块:mod_evasive。
mod_evasive是apache防DDoS攻击的模块,当有新访问到达时:查看黑名单中是否有该客户IP,将IP和请求URL一起HASH;查找HASH表看过去1秒是否连续请求同一页,将IP和请求URL一起HASH;查找HASH表看过去1秒是否请求超过XX个连接;满足任意一条就返回403并阻止该IP一定时间,该时间由DOSSiteInterval决定。下面,我们一起来看看如何安装和配置mod_evasive。
********☆☆☆安装☆☆☆********
以root账户SSH登陆服务器,依次运行下列指令。
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 #进入目录
/usr/sbin/apxs -i -a -c mod_evasive20.c #安装(注意,这里我们的DA面板Apache版本为2.*)
OK了,做完以上,mod_evasive就已经正确安装了。
********☆☆☆配置☆☆☆********
这时候,mod_evasive模块已正确安装,并自动加入到httpd.conf,我们可以检查该文件/etc/httpd/conf/httpd.conf,看到下面这行:
LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so
接下来,我们配置mod_evasive。
编辑httpd-evasive.conf文件,并加入规则。SSH运行:
vim /etc/httpd/conf/extra/httpd-evasive.conf
加入以下内容:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097 #定义哈希表大小。
DOSSiteCount 50 #允许客户机的最大并发连接。
DOSPageCount 2 #允许客户机访问同一页的间隔。
DOSPageInterval 1 #网页访问计数器间隔。
DOSSiteInterval 1 #全站访问计数器间隔。
DOSBlockingPeriod 3600 #加入黑名单后拒绝访问时间。
DOSEmailNotify #有IP加入黑名单后通知管理员。
DOSSystemCommand “sudo iptables -A INPUT -s %s -j DROP” #IP加入黑名单后执行的系统命令。
DOSLogDir “/tmp” #锁定机制临时目录。
DOSWhiteList 127.0.0.1 #防范白名单,不阻止白名单IP。
</IfModule>
然后,保存规则,退出。
最后,重启httpd。
service httpd restart #或者/etc/init.d/httpd restart
现在,我们的Apache已经加入了mod_evasive模块了。
mod_evasive压缩包内有个测试脚本test.pl,你可以修改后自行测试是否有效。
perl test.pl #测试
以上参数仅供参考,mod_evasive模块还有一些高级的功能,期待大家来讨论,本文以DirectAdmin面板为例,其他的环境如果以Apache引擎,同样也可以安装该模块。