一,简介
mod_evasive 是Apache服务器的防DDOS的一个模块。虽然并不能完全防御DDOS攻击,但在一定条件下,还是起到缓解Apache服务器的压力。如配合iptables、硬件防火墙等防火墙设备配合使用,可能有更好的效果。
官方地址: http://www.zdziarski.com https://github.com/jzdziarski/mod_evasive
mod_evasive,Helps to prevent HTTP DoS (DDoS) attacks or server brute force attacks.
二,安装配置
在http://www.apachelounge.com/download/下载apache对应的mod_evasive。 里面readme.txt有安装配置的方法。
httpd.conf中的配置文件如下:
LoadModule evasive2_module modules/mod_evasive2.so
<IfModule evasive2_module>
DOSDisplayToken On
DOSHashTableSize 3097
DOSSiteCount 100
DOSSiteInterval 1
DOSPageCount 6
DOSPageInterval 1
DOSBlockingPeriod 30
DOSLogDir "${SRVROOT}/logs/mod_evasive"
</IfModule>
三,相关参数
DOSHashTableSize 3097: 定义哈希表大小,记录黑名单的尺寸。
DOSSiteCount 100:允许客户机的最大并发连接。每个站点被判断为dos攻击的读取部件(object)的个数 一旦超过,用户ip将被列入黑名单
DOSSiteInterval 1:全站访问计数器间隔。 读取站点间隔秒
DOSPageCount 30:允许客户机访问同一页的间隔。每个页面被判断为dos攻击的读取次数。一旦超过,用户ip将被列入黑名单
DOSPageInterval 1:网页访问计数器间隔。 同一页面的规定间隔时间。
DOSBlockingPeriod 60:加入黑名单后拒绝访问时间。被封时间间隔秒 规定列入黑名单内ip的禁止时限,在时限内,用户继续访问将收到403 (Forbidden)的错误提示,并且计时器将重置。
DOSEmailNotify xxxx@gmail.com:有IP加入黑名单后通知管理员,需要系统有邮件组件。
DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP":IP加入黑名单后执行的系统命令。
DOSLogDir "/tmp":日志目录。
DOSWhiteList 127.0.0.1:防范白名单,不阻止白名单IP。
四,测试
然后使用apache的ab压力测试工具,可以测试apache是否可以有效防止ddos攻击。我在测试的时候,发现虽然请求被拦截了,但是cpu和内存使用率还是很高。是否可以设置拦截后不提醒用户,以减少负载。 百度了一下没搜到mod_evasive该怎么做。 这个问题暂时先放这里。
修改时间 2018-04-29