Warning: Cannot modify header information - headers already sent by (output started at /var/www/lalieno.it/index.php:48) in /var/www/lalieno.it/inc/cookie.php on line 3
a cadenza discontinua
Come se fossi
BLOG

Apache - mod_evasive contro gli attacchi DoS

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

  • DoS ( Denial of Service )
    Consiste nel saturare le risorse di un Web Server, un server FTP o altro fino al rendere impossibile l'accesso. Questo attacco è generato solitamente da poche macchine. 
  • DDoS ( Distributed Denial of Service )
    E' un attacco DoS ma generato da molte più macchine. In genere di DDoS si parla di un attacco largamente distribuito generato anche da computer zombie, cioè da computer infetti i quali partecipano all'attacco.
  • Brute Force
    Consiste nell'effettuare un numero elevato di tentativi ai fini di scoprire anche un accesso. Come ad esempio forzare una pagina di login provando tutte le combinazioni possibili, oppure utilizzando dei dizionari con degli accessi 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!


di GuiZ
04/09/2015

Commenta

We'll never share your email with anyone else.

Mr. Q - circa 9 anni fa
Ha il difetto di bloccare i PDF scaricati in modalità partial-content , funzionalità che permette di scaricare alcune pagine per volta senza dover scaricare l'intero pdf.

l'unico modo che ho trovato è disattivare il partial-content per i pdf ma è una grossa limitazione.

<IfModule mod_headers.c>
<Files *.pdf>
Header set Accept-Ranges none
</Files>
</IfModule>