mod_evasive è un modulo di Apache per la protezione dagli attacchi DoS, DDoS e brute force. In sostanza questo modulo scarta tutte le richieste che non soddisfano i requisiti impostati durante la configurazione evitando sovraccarichi dovuti agli attacchi.
Tipologie di attacchi comuni
mod_evasive
Il modulo funziona tramite il sistema delle liste, quindi avremo:
White List
dove è possibile specificare gli indirizzi IP ai quali è concesso superare la configurazione che previene gli attacchi del modulo. In teoria qui vanno aggiunti unicamente gli IP sicuri, dai quali non ci aspettiamo un attacco.
Black List
questa lista viene popolata automaticamente dal modulo nel caso in cui un indirizzo IP non rispetti la configurazione che previene gli attacchi.
Installazione
Per installare il modulo è necessario lanciare il comando:
Debian / Ubuntu:
apt-get install apache2-utils
CentOS / Fedora:
yum install httpd-devel
Ma ovviamente è possibile anche installarlo manualmente scaricando il tar.gz
Successivamente è necessario abilitare il modulo:
/etc/apache2/apache2.conf (Debian / Ubuntu)
# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf
/etc/httpd/conf/httpd.conf (CentOS / Fedora)
LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so
Dopodichè è necessario configurare il modulo direttamente sotto l'abilitazione:
<IfModule mod_evasive20.c>
#optional directive (default value equals to 1024)
DOSHashTableSize 1024
#obligatory directives
DOSPageCount 10
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 60
DOSEmailNotify <someone@somewhere.com>
</IfModule>
Fatto ciò riavviamo apache per rendere effettive le modifiche alla configurazione.
Configurazione
Analizziamo nel dettaglio le varie voci:
DOSHashTableSize
Di default a 1024, da incrementare nel caso in cui il server risulti molto trafficato. Definisce il numero di nodi per ogni tabella hash figlia.
DOSPageCount
Numero di richieste alla stessa pagina per il DOSPageInterval.
DOSSiteCount
Numero di richieste globali per il DOSPageInterval.
DOSPageInterval
Intervallo di tempo in secondi. ( default a 1 )
DOSBlockingPeriod
Intervallo in secondi nel quale le richieste provenienti dall'IP in blackliste verranno ignorate. ( con un 403 ). Questo intervallo si resetta a ogni richiesta, anche in risposta 403.
DOSEmailNotify
Email di notifica del blocco.
DOSLogDir
Di default "/temp".
DOSWhitelist
Definisce la WhiteList, gli ip che la compongono non entreranno mai in BlackList. Questa è definita direttamente nell'apache.conf
(/etc/apache2/apache2.conf)
DOSWhitelist 127.0.0.1
DOSWhitelist 127.0.0.*
Spero di essere stato esaustivo, commentate!