Apache+mod_evasive

Pošto ja na svom mail serveru imam i webmail pristup, logično je da i njega treba da zaštitim, a to ću izvestio korišćenjem fail2ban za Apache. A da bi fail2ban imao adekvatne logove koje treba da pregleda na razne nevaljalštine, bilo bi dobro pod Apache staviti mod_evasive.
Evo jednog lepog objašnjenja čemu mod_evasive služi : link
A evo dobrog linka za instalaciju : link
Instalacija :
#yum install httpd-devel
# wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
# tar xvfz mod_evasive_1.10.1.tar.gz
# cd mod_evasive
# apxs -cia mod_evasive20.c
# chmod 755 /usr/lib/httpd/modules/mod_evasive20.so
Povezivanje sa Apache-om ide preko /etc/httpd/conf/httpd.conf fajla u koji ubacujemo :
…..
LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so
…..
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 60
DOSEmailNotify admin-postmaster@moj.domen
DOSLogDir /var/log/httpd/mod_evasive
…..
Proveriti sintaksu :
# service httpd configtest
Syntax OK
I restartovati Apache.

Kako testirati postavljeni mod_evasive? Na neku zgodnu Linux mašinu postaviti sledeći skript :
#!/usr/bin/perl
## test.pl: small script to test mod_dosevasive’s effectiveness
use IO::Socket;
use strict;
for(0..100) {
my($response);
my($SOCKET) = new IO::Socket::INET( Proto => “tcp”,
PeerAddr=> “10.10.10.11:80”);
if (! defined $SOCKET) { die $!; }
print $SOCKET “GET /?$_ HTTP/1.0\n\n”;
$response = <$SOCKET>;
print $response;
close($SOCKET);
}

Kada se pokrene treba da daje sledeće :
HTTP/1.1 200 OK
HTTP/1.1 200 OK ili HTTP/1.1 302 Found
…..Pa to još mnogo puta, i onda kada mod_evasive proradi, treba da bude :
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
…..

Log ovoga na samom serveru gde je pokrenut mod_evasive je u /var/log/httpd/error_log.