Sempre più spesso mi ritrovo con una miriade di log che riguardano attacchi di tipo brute force e/o DDoS sul server web. Infastidito da questa cosa, mi sono ricordato di un modulo per Apache la cui funzione è quella di abilitare un controllo sulle richieste verso l’intero sito e/o la singola pagina in un arco di tempo definibile;

Quando le richieste superano un determinato margine, l’ip in questione viene inserito in blacklist, e da quel momento il server web restituisce una pagina di  errore  di tipo 403 “Non permesso” per un lasso di tempo, anch’esso definibile quindi flessibile. Diciamo che si tratta di una sorta di limit-burst (riferito ad iptables) per il nostro server web Apache. Si tratta del modulo mod_evasive.

L’installazione prevede pochi semplici passi:

NB: la procedura è riferita ad Apache 2.0. Per ulteriori versioni di Apache e implementazione di tale modulo basta consultare il README.

~$ wget mod_evasive_1.10.1.tar.gz
~$ tar zxvf mod_evasive_1.10.1.tar.gz
~$ cd mod_evasive
~$ su -
~# /usr/sbin/apxs -cia mod_evasive20.c

Installato il modulo mod_evasive si passa alla configurazione. Usate il vostro editor preferito per configurare il file generico httpd.conf. Il percorso della directory  apache chiaramente cambia da distro a distro.

~# vi /etc/apache2/httpd.conf
<IfModule Mod_evasive20.c>
DOSHashTableSize   3097
DOSPageCount        2
DOSSiteCount        50
DOSPageInterval     1
DOSSiteInterval     1
DOSBlockingPeriod   10
</IfModule>

Dove i parametri sono:

NB: I parametri sono soggettivi in base alle esigenze.

Modificato e salvato il conf non resta che riavviare il servizio:

~# /etc/rc.d/rc.httpd restart

NB: il percorso di riavvio per i  demoni di servizzi in sistemi GNU/linux cambia come detto precedentemente da distro a distro. Nello specifico è riferito alla directory /etc/rc.d/ di slackware.

Link ufficiale del modulo: mod_evasive **