Situazione tipo: Sei a casa di venerdi sera che stai cazzeggiando felicemente, fino a che non ti rendi conto che uno dei server sta subendo uno scan su una determinata url…
questo è quanto deve essere accaduto al mio collega ieri analizzando i log si apache di una delle macchine in nostra gestione…
Come fare quindi per prevenire, ed evitare danni da determinate situazioni? la risposta si chiama mod_dosevasive.
Con questo modulo per apache, abilitiamo un controllo sulle richieste verso l’intero sito e la singola pagina in un arco di tempo definibile; se le richieste superano un determinato margine l’ip in questione verrà messo in blacklist, e da quel momento verrà restituita una pagina 403 (Non permesso) per un lasso di tempo, anch’esso definibile.
L’installazione è di una facilità disarmante:
apt-get install libapache-mod-dosevasivefinito
Adesso dobbiamo configurarlo, inserendo nel file di configurazione di apache quanto segue:
<IfModule mod_dosevasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 30
</IfModule>Vediamo cosa significano i parametri:
| DOSHashTableSize | Dimensione della tabella di hash, più è grande più memoria è richiesta, ma più veloce saranno i lookups |
| DOSPageCount | Numero di richieste, per la stessa pagina, massime concesse prima che l'indirizzo finisca in blacklist |
| DOSSiteCount | Numero di richieste, per l'intero sito, massime concesse prima che l'indirizzo finisca in blacklist |
| DOSPageInterval | Arco di tempo, in secondi, entro il quale devono rientrare le richieste massime definite nel PageCount |
| DOSSiteInterval | Arco di tempo, in secondi, entro il quale devono rientrare le richieste massime definite nel SiteCount |
| DOSBlockingPeriod | Arco di tempo, in secondi, durante il quale verrà restituito un errore di tipo 403 all'ip blacklistato, il timer verrà resettato qualora durante il conteggio l'ip faccia un altra hit, ricevendo quindi, l'errore per più tempo ancora. |
Adesso possiamo relodare apache per rendere effettive le modifiche:
/etc/init.d/apache2 force-reload
| |












