La protezione del server Web da diversi tipi di attacchi è una responsabilità cruciale per qualsiasi amministratore di sistema. ModEvasive è un modulo server Web Apache che ti aiuta a proteggere il tuo server Web in caso di attacchi DoS, DDoS e di forza bruta. Questi tipi di attacchi causano l'esaurimento della memoria del server, provocando il crash del tuo sito web.
Il modulo mod_evasive funziona creando una tabella hash di indirizzi IP e URI e monitorando le richieste sospette del server in entrata, come ad esempio:
- Effettuare più di 100 connessioni simultanee al secondo.
- Richiesta della stessa pagina più volte al secondo.
Se si verifica una tale richiesta sospetta, il modulo mod_evasive invia un errore 403 e blocca l'indirizzo IP.
In questo tutorial, ti mostreremo come installare e configurare mod_evasive con Apache su un server Ubuntu 18.04.
Prerequisiti
- Un nuovo VPS Ubuntu 18.04 sulla piattaforma Atlantic.Net Cloud.
- Un indirizzo IP statico configurato sul tuo server.
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Ubuntu 18.04 come sistema operativo con almeno 1GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al tuo server Ubuntu 18.04, esegui il comando seguente per aggiornare il tuo sistema di base con gli ultimi pacchetti disponibili.
apt-get update -y
Fase 2 – Installa mod_evasive
Prima di iniziare, il server web Apache deve essere installato sul tuo server. Se non è installato, puoi installarlo con il seguente comando:
apt-get install apache2 apache2-utils -y
Una volta installato il server web Apache, puoi installare mod_evasive con il seguente comando:
apt-get install libapache2-mod-evasive -y
Durante l'installazione, ti verrà chiesto di configurare un server di posta Postfix per la notifica via e-mail. È possibile scegliere l'opzione desiderata per completare l'installazione. Se non sei sicuro, scegli solo locale o nessuna configurazione .
Dopo aver installato mod_evasive, puoi verificare se il modulo mod_evasive è abilitato eseguendo il seguente comando:
apachectl -M | grep evasivo
Dovresti ottenere il seguente output:
[Mon Jan 27 13:55:35.707317 2020] [so:warn] [pid 29031] AH01574:il modulo dav_module è già caricato, saltando evasive20_module (shared)
A questo punto il modulo mod_evasive è installato e abilitato. Ora puoi procedere al passaggio successivo.
Fase 3 – Configura mod_evasive
Il file di configurazione predefinito di mod_evasive si trova in /etc/apache2/mods-enabled/evasive.conf. Dovrai configurare questo file in base alle tue esigenze.
Puoi aprire questo file utilizzando l'editor nano come mostrato di seguito:
nano /etc/apache2/mods-enabled/evasive.conf
Modificare il file come mostrato di seguito. Ti consigliamo di modificare DOSEmailNotify all'indirizzo a cui desideri inviare l'e-mail (se configurato) e DOSSystemCommand, ad esempio "su – richard -c '/sbin… %s …'"
; /var/log/mod_evasive"Salva e chiudi il file quando hai finito.
Di seguito viene mostrata una breve spiegazione di ciascuna opzione:
- DOSHashTableSize :mod_evasive usa questa opzione per controllare la dimensione della tabella hash. Si consiglia di aumentare questo valore se si dispone di un server Web occupato.
- DOSPageCount :questa opzione specifica il limite di soglia per il numero di richieste consentite allo stesso URI al secondo. Una volta superato il limite di soglia, l'indirizzo IP del cliente verrà inserito nella lista nera.
- DOSSiteCount :questa opzione specifica il limite al numero totale di richieste consentite allo stesso indirizzo IP.
- DOSPageInterval :questa opzione specifica l'intervallo di conteggio delle pagine.
- DOSSiteInterval :questa opzione specifica l'intervallo di conteggio del sito.
- DOSBlockingPeriodo :questa opzione definisce la quantità di tempo in secondi durante la quale un client verrà bloccato.
- DOSEmailNotifica :questa opzione invia un'e-mail all'indirizzo specificato quando un indirizzo IP è stato inserito nella lista nera.
- DOSSystemCommand :Ogni volta che un indirizzo IP è stato inserito nella lista nera, verrà eseguito il comando di sistema specificato.
- DOSLogDir :Questa opzione definisce la directory di log mod_evasive.
Quindi, crea una directory in cui archiviare il registro mod_evasive e cambiane la proprietà in www-data con il seguente comando:
mkdir /var/log/mod_evasivechown -R www-data:www-data /var/log/mod_evasive
Infine, riavvia il servizio Apache per implementare le modifiche:
systemctl riavvia apache2
Fase 4:prova mod_evasive
A questo punto il modulo mod_evasive è installato e configurato. È ora di verificare se il modulo funziona correttamente.
Vai al sistema remoto e invia una richiesta di pagina in blocco al server usando il comando ab:
ab -n 1000 -c 20 http://tuo-ip-server/
Questo comando provocherà l'equivalente di un attacco DoS inviando 1000 richieste di pagina in 10 connessioni simultanee.
Sul server, controlla il registro della posta eseguendo il comando seguente:
tail -15 /var/mail/root
Dovresti vedere che l'indirizzo IP del client è stato inserito nella lista nera da mod_evasive:
Ricevuto:da ubuntu1804 (Postfix, da userid 33) id B0C3EC1753; Mon, 27 Jan 2020 14:15:09 +0000 (UTC)A:[email protected]:1.0Content-Type:text/plain; charset="ANSI_X3.4-1968"Content-Transfer-Encoding:8bitMessage-Id:Data:Mon, 27 Jan 2020 14:15:09 +0000 (UTC)Da:www-data A:[email protected]:HTTP BLACKLIST 103.250.161.100mod_evasive HTTP Blacklist 103.250.161.100
Puoi anche testare mod_evasive usando lo script integrato test.pl. Dovrai modificare questo script per farlo funzionare.
Puoi modificare lo script come mostrato di seguito:
nano /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Trova la seguente riga:
stampa $SOCKET "GET /?$_ HTTP/1.0\n\n";
Sostituiscilo con il seguente:
stampa $SOCKET "GET /?$_ HTTP/1.0\r\nHost:127.0.0.1\r\n\r\n";
Salva e chiudi il file quando hai finito. Quindi, esegui lo script usando il comando perl:
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Se tutto funziona correttamente, dovresti ottenere il seguente output:
HTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 ForbiddenHTTP/1.1 403 Proibito
Conclusione
Congratulazioni! Il modulo mod_evasive è ora configurato per proteggere il tuo server da attacchi DDoS e Brute force.