GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Difenditi da DoS e DDoS su Apache con mod_evasive

Introduzione

Il modulo mod_evasive è un modulo di servizi Web Apache che aiuta il tuo server a rimanere in esecuzione in caso di attacco. Un tipo comune di attacco informatico si presenta sotto forma di Denial of Service (DoS), Distributed Denial of Service (DDoS) o tentativi di forza bruta di sopraffare la tua sicurezza.

La natura di questi attacchi consiste nell'utilizzare diversi computer per effettuare richieste ripetute contro il tuo server. Ciò fa sì che il server esaurisca la potenza di elaborazione, la memoria, la larghezza di banda della rete e non risponda.

Questa guida ti guiderà attraverso la configurazione e l'installazione di mod_evasive per la protezione da DoS e DDoS.

Prerequisiti

  • Lo stack LAMP (Linux, Apache, MySQL, PHP) installato e configurato
  • Accesso a un account utente con sudo o privilegi di root
  • Un server di posta funzionante (per avvisi e-mail)

Come funziona Apache mod_evasive

Il mod_evasive Apache l'utilità funziona monitorando le richieste del server in entrata. Lo strumento controlla anche le attività sospette da un IP, come:

  • Diverse richieste per la stessa pagina in un secondo.
  • Più di 50 richieste simultanee al secondo.
  • Richieste effettuate mentre l'IP è temporaneamente nella lista nera.

Il modulo invia un errore 403 se si verifica una di queste cose. Per impostazione predefinita, questo include anche un periodo di attesa di 10 secondi nella lista nera. Se l'indirizzo IP che effettua la richiesta riprova in quella finestra di 10 secondi, il tempo di attesa aumenta.

mod_evasive ti aiuta a difenderti da questo tipo di attacchi attraverso il rilevamento e la gestione della rete.

Passaggi per l'installazione dell'utility Apache mod_evasive

Passaggio 1:installa l'utilità del server Web Apache

Prima di installare l'utilità, aggiorna il repository del pacchetto con il comando per la tua distribuzione Linux:

Debian / Ubuntu :

sudo apt update

RedHat / CentOS :

sudo yum update

Consenti al sistema di aggiornare e aggiornare i tuoi elenchi di software.

Quindi, installa un'utilità di supporto:

Debian/Ubuntu :

sudo apt install apache2-utils

RedHat/CentOS :

sudo yum install httpd-devel

La sezione finale dell'output è simile a questa:

Questa utilità è necessaria per l'installazione di mod_evasive .

Fase 2:installa mod_evasive

Debian/Ubuntu

Per installare il mod_evasive modulo su Debian / Ubuntu, inserisci quanto segue:

sudo apt install libapache2-mod-evasive

Quando ricevi un messaggio, seleziona Ok e scegli la tua configurazione.

In caso di dubbi, seleziona Nessuna configurazione o Solo locale.

CentOS/RedHat

Per installare il modulo mod_evasive su RedHat / CentOS:

Aggiungi il repository EPEL:

sudo yum install epel-release

E poi, inserisci:

sudo yum install mod_evasive

Consenti il ​​completamento del processo.

Fase 3:Configura mod_evasive

Come la maggior parte dei pacchetti software Linux, mod_evasive è controllato da un file di configurazione. Apporta le seguenti modifiche nel file di configurazione come primo passaggio per prevenire gli attacchi DDoS:

1. Usa un editor di testo a tua scelta con i seguenti comandi:

Debian / Ubuntu :

sudo nano /etc/apache2/mods-enabled/evasive.conf

RedHat / CentOS :

sudo nano /etc/httpd/conf.d/mod_evasive.conf

2. Trova la seguente voce:

#DOSEmailNotify        [email protected]

Rimuovi il # firmare, quindi sostituire [email protected] con il tuo indirizzo email effettivo. Utilizza un'e-mail che controlli regolarmente:è qui che lo strumento invierà avvisi.

3. Rimuovere il tag di commento dalle seguenti voci, in modo che il file di registro abbia il seguente aspetto:

DOSHashTableSize 3097

DOSPageCount 2

DOSSiteCount 50

DOSPageInterval 1

DOSSiteInterval 1

DOSBlockingPeriod 10

DOSEmailNotify [email protected]

DOSLogDir "/var/log/apache2/"

4. Salvare il file ed uscire. Ricarica il servizio Apache inserendo quanto segue:

Debian / Ubuntu :

sudo systemctl reload apache2

RedHat / CentOS :

sudo systemctl restart httpd.service

Test mod_evasive

Ora, verifichiamo che il modulo funzioni correttamente.

In questo esempio, usa test.pl script per testare mod_evasive.

Lo script si trova in:/usr/share/doc/libapache2-mod-evasive/examples/test.pl .

Utilizzare il comando seguente per eseguire lo script:

perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl

L'output dovrebbe restituire questo messaggio:

Parametri e impostazioni

Ci sono molti parametri mod_evasive che puoi configurare:

  • DOSSystemCommand : Innanzitutto, potresti aver notato che questa opzione è stata lasciata disabilitata come commento. Questo comando consente di specificare un comando di sistema da eseguire quando un indirizzo IP viene aggiunto alla lista nera. Puoi usarlo per lanciare un comando per aggiungere un indirizzo IP a un firewall o a un filtro IP.
  • DOSHashTableSize : Aumenta questo valore per i server Web più occupati. Questa configurazione alloca spazio per l'esecuzione delle operazioni di ricerca. Aumentando le dimensioni si migliora la velocità a scapito della memoria.
  • DOSPageCount : Il numero di richieste per una singola pagina che attiva la blacklist. È impostato su 2, che è basso (e aggressivo):aumenta questo valore per ridurre i falsi positivi.
  • DOSSiteCount : Il numero totale di richieste per lo stesso sito dallo stesso indirizzo IP. Per impostazione predefinita, questo valore è impostato su 50. Puoi aumentare fino a 100 per ridurre i falsi positivi.
  • DOSPageInterval : Numero di secondi per DOSPageCount . Per impostazione predefinita, questo è impostato su 1 secondo. Ciò significa che se non lo modifichi, la richiesta di 2 pagine in 1 secondo inserirà temporaneamente nella blacklist un indirizzo IP.
  • DOSSiteInterval : Simile a DOSPageInterval , questa opzione specifica il numero di secondi che DOSSiteCount monitori. Per impostazione predefinita, questo è impostato su 1 secondo. Ciò significa che se un singolo indirizzo IP richiede 50 risorse sullo stesso sito Web in un solo secondo, verrà temporaneamente inserito nella lista nera.
  • DOSBlockingPeriod : La quantità di tempo in cui un indirizzo IP rimane nella lista nera. Impostato su 10 secondi per impostazione predefinita, puoi modificarlo in qualsiasi valore desideri. Aumenta questo valore per mantenere gli indirizzi IP bloccati in timeout per un periodo più lungo.
  • DOSLogDir : Per impostazione predefinita, questo è impostato per scrivere i log in /var/log/mod_evasive. Questi registri possono essere esaminati in seguito per valutare il comportamento del cliente.

Puoi creare una nuova directory per salvare questi log di accesso ad Apache:assicurati di cambiare il proprietario in Apache, quindi aggiorna la posizione in questa voce:

sudo mkdir /var/log/apache/mod_evasive
sudo chown -R apache:apache /var/log/apache/mod_evasive
sudo nano /etc/apache2/mods-enabled/evasive.conf
DOSLogDir "/var/log/apache/mod_evasive"

Indirizzi IP nella whitelist: Questa opzione non è inclusa in evasive.conf f ile per impostazione predefinita.

Apri di nuovo il file per la modifica, quindi aggiungi la seguente riga:

DOSWhitelist 192.168.0.13

DOSWhitelist 192.168.0.*

Sostituisci l'indirizzo IP con quello che desideri inserire nella whitelist. Inoltre, dovresti elencare solo una voce per riga . Viene in genere utilizzato con un client affidabile che scambia molti dati con il tuo sito web.

Questo strumento è utile per rilevare bot e script. Se ci sono bot o script che desideri consentire, puoi inserirli nella whitelist per impedire a questi bot e script di attivare un'azione nella blacklist.

Assicurati di salvare il file ed esci. Quindi, ricarica il tuo servizio Apache prima di testare una di queste opzioni.


Ubuntu
  1. Difenditi da DoS e DDoS su Apache con mod_evasive

  2. Proteggi Apache con Lets Encrypt su Ubuntu 18.04

  3. Come installare e configurare Nextcloud con Apache su Ubuntu 18.04

  4. Come installare Joomla con Apache su Ubuntu 18.04

  5. Configurazione di Apache 2.4 con Fastcgi su Ubuntu 16.04 – Cosa devo fare con Php7.0-fpm.conf?

Installa WordPress su Ubuntu 20.04 con Apache, MariaDB, PHP7.4 (LAMP)

Come installare WordPress 4.7 su Ubuntu 16.04 con Apache, MariaDB, PHP7

Come installare più versioni PHP con Apache su Ubuntu 18.04 e 16.04

Come installare Apache con Let's Encrypt SSL su Ubuntu 20.04 LTS

Come installare Apache con PHP-FPM su CentOS 8

Come proteggere Apache con Let's Encrypt su Ubuntu 20.04