# ### 1.必要モジュールのインストール
# yum install httpd-devel
# ### 2. ソースを取得、インストール
# cd /tmp/
# wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
# tar xvzf mod_evasive_1.10.1.tar.gz
# cd mod_evasive
# apxs -cia mod_evasive20.c
# ### 3. モジュールがインストールされているのを確認
# ls -l /usr/lib64/httpd/modules/ | grep evasive20
-rwxr-xr-x. 1 root root 51149 Jun 5 04:29 mod_evasive20.so
# ### 4.設定ファイルを作成
# vi /etc/httpd/conf.d/mod_evasive20.conf
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
# ### 5.Apache再起動
# /etc/init.d/httpd restart
# ### 6. 確認(※)
# perl test.pl
1--------HTTP/1.1 200 OK
2--------HTTP/1.1 200 OK
3--------HTTP/1.1 200 OK
4--------HTTP/1.1 200 OK
5--------HTTP/1.1 200 OK
6--------HTTP/1.1 200 OK
7--------HTTP/1.1 200 OK
8--------HTTP/1.1 200 OK
9--------HTTP/1.1 200 OK
10--------HTTP/1.1 200 OK
11--------HTTP/1.1 200 OK
12--------HTTP/1.1 200 OK
13--------HTTP/1.1 200 OK
14--------HTTP/1.1 200 OK
15--------HTTP/1.1 200 OK
16--------HTTP/1.1 200 OK
17--------HTTP/1.1 403 Forbidden
18--------HTTP/1.1 403 Forbidden
19--------HTTP/1.1 403 Forbidden
・・・
98--------HTTP/1.1 403 Forbidden
99--------HTTP/1.1 403 Forbidden
100--------HTTP/1.1 403 Forbidden
101--------HTTP/1.1 403 Forbidden
### テスト用スクリプトをちょっとだけ修正しています
root@lpic303-CentOS6 mod_evasive]# cat test.pl
#!/usr/bin/perl
# test.pl: small script to test mod_dosevasive's effectiveness
use IO::Socket;
use strict;
my $count = 1;
for(0..100) {
my($response);
my($SOCKET) = new IO::Socket::INET( Proto => "tcp",
PeerAddr=> "127.0.0.1:80");
if (! defined $SOCKET) { die $!; }
print $SOCKET "GET /?$_ HTTP/1.0\n\n";
$response = <$SOCKET>;
print $count++;
print "--------";
print $response;
close($SOCKET);
}
DOSPageIntervalDOSPageCount |
DOSPageIntervalで設定した秒数以内で、同じページにアクセスできる上限数 |
DOSBlockingPeriod |
ブラックリストへ登録された接続元を遮断する時間(ミリ秒) |