在FreeBSD上使用mod_evasiv对抗DDos攻击

cd /usr/ports/www/mod_evasive
make install clean
vi /usr/local/etc/apache2/httpd.conf
LoadModule evasive20_module   libexec/apache2/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize    3097
DOSPageCount        5
DOSSiteCount        10
DOSPageInterval     2
DOSSiteInterval     2
DOSBlockingPeriod   360
DOSEmailNotify [email protected]itkylin.com
DOSLogDir “/var/log/http/mod_evasive”
# Wildcards can be used on up to the last 3 octets if necessary.
# Multiple DOSWhitelist commands may be used in the configuration.
DOSWhiteList 192.168.0.8
DOSWhiteList 192.168.1.*
</IfModule>
:wq
mkdir /var/log/http/mod_evasive
chown -R www:www /var/log/http/mod_evasive

参数简单说明:

DOSHashTableSize 3097 记录和存放黑名单的哈西表大小,如果服务器访问量很大,可以加大该值
DOSPageCount 5 同一个页面在同一时间内可以被统一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置。
DOSSiteCount 10 同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSPageInterval 2 设置DOSPageCount中时间长度标准,默认值为1。
DOSSiteInterval 2 设置DOSSiteCount中时间长度标准。
DOSBlockingPeriod 360 被封时间间隔秒,这中间会收到403 (Forbidden) 的返回。

自带的测试工具:
cd /usr/local/share/doc/mod_evasive/
chmod 755 test.pl
./test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden