Mod_evasive è un modulo per Apache che agisce automaticamente quando viene rilevato un attacco DoS HTTP o un attacco di forza bruta. Mod_evasive è in grado di registrare e segnalare abusi e segnalare problemi via e-mail. Prima di seguire questa guida, è già necessario disporre di un server LAMP che funzioni correttamente.
Questa guida è stata scritta per CentOS e le sue varianti (come RHEL) e Debian e le sue varianti (come Ubuntu).
Il modulo crea una tabella di indirizzi IP e URL. Se vengono soddisfatte le condizioni impostate nella configurazione (come descritto più avanti in questo documento), l'abuso degli utenti riceverà un errore 403 (vietato). Inoltre, l'indirizzo IP viene registrato e, se l'opzione è impostata, verrà inviata un'e-mail all'indirizzo e-mail specificato.
Passaggio 1: installazione httpd-devel
Il pacchetto httpd-devel contiene i file necessari per la creazione di Dynamic Shared Objects per Apache. Abbiamo bisogno di questo pacchetto per installare il modulo, poiché lo compileremo noi stessi nei seguenti passaggi.
Su CentOS / RHEL, eseguire:
yum install httpd-devel
Su Debian / Ubuntu, eseguire:
apt-get install apache2-utils
Dopo aver installato correttamente questo pacchetto, procedere con il passaggio successivo. Se l'installazione non è stata completata correttamente, il passaggio successivo avrà (molto probabilmente) esito negativo.
Passaggio 2: download e installazione mod_evasive
Metodo 1: Compilazione
Scarica il modulo:
cd /usr/src
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
Estrai il modulo:
tar xzf mod_evasive*.tar.gz
Passare alla directory:
cd mod_evasive
Successivamente, utilizzeremo apxs2
uno strumento creato per creare e installare moduli che estendono le funzionalità di Apache. Apxs2
crea un oggetto condiviso dinamico, motivo per cui è stato installato httpd-devel
nel passaggio n. 1.
Eseguire:
apxs2 -cia mod_evasive20.c
Metodo 2: installazione utilizzando yum
(consigliato)
Quando il epel-release
repository è installato, mod_evasive
è disponibile tramite yum
.
Aggiungi il repository:
yum install epel-release
Installa il modulo usando yum
:
yum install mod_evasive
Passaggio 3: aggiunta del modulo ad Apache
In genere, Apache carica tutti i moduli da mods-enabled
, quindi ogni volta che un modulo viene aggiunto a quella cartella, non è necessario aggiungerlo manualmente alla configurazione di Apache. Apri il tuo file di configurazione per verificare se questo è il caso.
Su CentOS, il file pertinente è: /etc/httpd/conf/httpd.conf
Su Ubuntu, il file pertinente è: /etc/apache2/apache2.conf
Cerca Include
. Una riga come Include mods-enabled/*.conf
dice ad Apache di caricare tutti i moduli. Se non è presente, aggiungi quella riga nella parte superiore del file e riavvia Apache.
Per Ubuntu, aggiungi i seguenti contenuti nella parte inferiore del file:
LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so
Passaggio 4: configurazione e modifica delle impostazioni
Aggiungi il seguente blocco al file di configurazione. I percorsi sono gli stessi del passaggio 3.
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 60
DOSEmailNotify <[email protected]>
</IfModule>
Una rapida panoramica di questi parametri è disponibile in README
. È possibile leggere il file README come segue:
cat /usr/src/cd mod_evasive/README
Molto probabilmente dovrai modificare queste impostazioni di volta in volta, per assicurarti che siano adatte al tuo server e ai tuoi siti web. Dopotutto, alcuni server hanno più attività e traffico di altri.
Passaggio 5: riavvio del server Web
Riavviare il server Web Apache per rendere effettive le modifiche e caricare il modulo:
service httpd restart
Assicurati che il modulo sia caricato in Apache:
httpd -M | grep evasive
Questo dovrebbe tornare evasive20_module (shared)
. In caso contrario, il modulo non è stato caricato correttamente e si consiglia di ricontrollare i file di configurazione e se sono stati salvati correttamente.
Si noti che questo modulo non sostituisce la protezione DDoS in quanto non può funzionare quando la capacità del server è esaurita. In effetti, Vultr offre protezione DDoS che è molto utile per una migliore protezione del server (oltre a utilizzare questo modulo). Per le minacce più semplici, in particolare gli attacchi basati su script, il modulo fa il suo lavoro ed è sicuramente utile.
Ora hai installato il mod_evasive
modulo in Apache e quindi hai reso la tua app web più sicura.