Se sei capitato qui è perche stai cercando una guida che ti aiuti a difenderti dagli attacchi DoS, DDoS e Brute Force su server Debian.

Gli attacchi di questo tipo sono le principali minacce in campo informatico. 

Un attacco DDoS (Distributed Denial of Service) è un tentativo dannoso di interrompere il normale traffico di un server, servizio o rete mirato travolgendo l'obiettivo o la sua infrastruttura circostante con un flusso di traffico Internet. Gli attacchi DDoS raggiungono l'efficacia utilizzando più sistemi informatici compromessi come fonti di traffico di attacco. Le macchine sfruttate possono includere computer e altre risorse di rete come i dispositivi IoT. Da un livello elevato, un attacco DDoS è come un ingorgo imprevisto che intasa l'autostrada, impedendo al traffico regolare di arrivare a destinazione.

 

Modulo Apache MOD_EVASIVE

Il modulo mod_evasive per Apache2 viene utilizzato per contrastare attacchi Denial of Service (DoS: Denial of Service), DDOS e forza bruta. Questo modulo cercherà di rilevare richieste eccessive che richiedono una pagina su un sito Web in un periodo di tempo molto breve.

L'uso di mod_evasive non è sufficiente per una buona sicurezza, il lavoro di rilevamento e filtraggio deve essere svolto a un livello molto più vicino al livello di rete, anche a livello hardware. Il rilevamento degli attacchi e il filtraggio degli indirizzi IP non è il normale lavoro di un server web come Apache. Questo modulo facile da usare può aiutarti a migliorare maggiormente la sicurezza del tuo server.

Sarà consigliabile utilizzare mod_evasive insieme ad altri strumenti complementari come mod_security e Fail2Ban.L'indirizzo IP dell'attaccante può essere bloccato nel tempo con Fail2Ban.

 

Installazione di MOD_EVASIVE

Per installare mod_evasive, controlla tutti i moduli presenti:

sudo apache2ctl -M
sudo apache2ctl -M | grep evasive

 

Installa mod_evasive:

sudo apt-get install libapache2-mod-evasive

 

Visualizza l'elenco dei moduli attivati:

sudo ls /etc/apache2/mods-enabled/

 Sono stati aggiunti i file evasive.conf ed evasive.load. Il file /etc/apache2/mods-available/mod-evasive.conf contiene le direttive di configurazione del modulo. Il file /etc/apache2/mods-available/mod-evasive.load dice ad Apache2 dove trovare il modulo nel filesystem.

 

Il modulo mod-evasivo si prende cura di se stesso. puoi verificarlo con il comando:

sudo a2enmod evasive
Module evasive already enabled

 

Crea la cartella che memorizzerà i log:

sudo mkdir /var/log/apache2/mod_evasive 
sudo touch /var/log/apache2/mod_evasive/dos_evasive.log 
sudo chown -R www-data:www-data /var/log/apache2/

 

Configurazione

Per configurare mod_evasive:

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

 

Le direttive trovate nel file /etc/apache2/mods-enabled/evasive.conf verranno applicate a tutti i siti gestiti da Apache. Per utilizzare mod_evasive con un sito particolare, aggiungi le direttive mod_evasive al file di configurazione del sito. Configura il sito /etc/apache2/sites-available/mon-site.conf con il <IfModule mod_evasive20.c> e <IfModule>. Le direttive contenute in questo file sostituiranno quindi quelle della configurazione globale.

<IfModule mod_evasive20.c>
 DOSHashTableSize 3097
 
# Non più di 2 pagine al secondo.
 DOSPageCount 2
 DOSPageInterval 1
 
# Non più di 100 richieste al secondo (immagini, CSS, ...)
 DOSSiteCount 100
 DOSSiteInterval 1
 
# Periodo in secondi durante il quale il client viene bloccato.
 DOSBlockingPeriod 500
 
# Aggiungi uno o più indirizzi IP whitelist.
# L'indirizzo IP locale può essere inserito nella whitelist.
# DOSWhitelist 127.0.0.1
# L'indirizzo IP del server può essere inserito nella whitelist.
# DOSWhitelist xxx.xx.xxx.xxx
# I 3 indirizzi IP sono quelli di Google Bot.
 DOSWhitelist 66.249.65. *
 DOSWhitelist 66.249.66. *
 DOSWhitelist 66.249.71. *
 
# Notifica l'avviso con un'e-mail.
 DOSEmailNotify admin[at]domain[dot]tls
# Non dimenticare di sostituire [at] e [dot].
 
# Percorso alla cartella di registro di Apache2, mod_evasive.
# Il file conterrà gli indirizzi IP nella lista nera.
# DOSLogDir "/ var / log / apache2 / mod_evasive"
# Restituisce un file tramite indirizzo IP. Il valore contenuto non è coerente.
# cat dos-127.0.0.1 che contiene 19915. 
# Sono le 19:00 sì, ma 41 minuti e non 16 minuti ...
# Dai la priorità alla gestione dei log con il tuo script.
 
# Avvia un comando con DOSSystemCommand.
# Ad esempio, avvia uno script Iptables:
# DOSSystemCommand "sudo iptables -A INPUT -s% s -j DROP"
# Scrivi i log:
 DOSSystemCommand "/bin/echo %s >> /var/log/apache2/mod_evasive/dos_evasive.log && /bin/date >> /var/log/apache2/mod_evasive/dos_evasive.log"
</IfModule>

# Controlla la sintassi della configurazione di Apache2:
sudo apache2ctl -t
# Sintassi OK

# Riavvia Apache2 per tenere conto delle modifiche:
sudo /etc/init.d/apache2 riavvio

 

Elenco dei parametri

DOSHashTableSize

  • Dimensioni della tabella hash.
  • L'aumento di questo numero migliora le prestazioni ma consuma più memoria.
  • Lascia il valore predefinito.

 

DOSPageCount

  • Numero di richieste per la stessa pagina nell'intervallo DOSPageInterval, oltre questo, l'indirizzo IP viene bloccato.

 

DOSSiteCount

  • Numero di richieste per lo stesso sito nell'intervallo DOSSiteInterval, oltre questo, l'indirizzo IP viene bloccato.

 

DOSPageInterval

  • Numero di richieste per la stessa pagina in secondi.

 

DOSSiteInterval

  • Numero di richieste per lo stesso sito in secondi.

 

DOSBlockingPeriod

  • Periodo in secondi durante il quale l'indirizzo IP verrà bloccato (viene restituito un valore proibito).

 

DOSWhitelist

  • Ti consente di inserire nella whitelist gli indirizzi IP.
  • DOSWhitelist 192.168.0. * Consente le richieste da macchine su una rete locale privata.

 

DOSEmailNotify admin[at]domain[dot]tls 

  • Notifica l'avviso con un'e-mail.
    • Nota su DOSEmailNotify: per eseguire il comando, il modulo cerca l'eseguibile /bin/mail. Tuttavia, questo non è in questo posto. Affinché funzioni, è necessario creare un collegamento simbolico da /usr/sbin/mail a /bin/mail:
      ln -s /usr/bin/mail /bin/mail
    • Per il momento non viene ricevuta nessuna mail, non riesco a trovare come inviare e ricevere mail da DOSEmailNotify.
    • Dovremmo essere in grado di consultare le mail con il comando "tail -f /var/mail/www-data" (Non più testato. Non funzionante per il momento). Nessun messaggio viene inviato durante il test con lo script perl.

 

DOSLogDir "/var/log/apache2/mod_evasive/"

  • Percorso del file di registro di Apache2, mod_evasive.
  • Restituisce un file in base all'indirizzo IP.
  • Il valore contenuto non è coerente. cat dos-127.0.0.1 che contiene 19915.
  • Sono le 19:00 sì, ma 41 minuti e non 16 minuti...
  • Dare priorità alla gestione dei log con il proprio script che può essere lanciato con DOSSystemCommand.
  • ModEvasive si connette anche a syslog quando l'indirizzo IP è bloccato.
  • È possibile controllare il file di registro utilizzando:
    sudo tailf /var/log/messages

 

DOSSystemCommand

      • Esegui un comando con DOSSystemCommand, ad esempio, uno script Iptables:
        DOSSystemCommand "sudo iptables -A INPUT -s% s -j DROP"
      •  Perché il ban con Iptables e mod-evasive funzioni, www-data deve avere il diritto di modificare Iptables, e questo può essere molto pericoloso! Si consiglia di utilizzare Fail2ban.
      • Scrivi i tuoi log per mod_evasive invece di usare il comando log integrato in mod_evasive:
        DOSSystemCommand "/bin/echo %s >> /var/log/apache2/mod_evasive/dos_evasive.log && /bin/date >> /var/log/apache2/mod_evasive/dos_evasive.log"
      • Per consentire la scrittura nella cartella mod_evasive/, è necessario modificare il proprietario e il gruppo della cartella apache2 e mod_evasive / in www-data con chown.

 

Testare Mod_evasive

Per testare il modulo, possiamo modificare la configurazione con valori bassi per vedere cosa sta succedendo. Normalmente, la cartella di registro /var/log/apache2/mod_evasive/doc_evasive.log dovrebbe riempirsi di indirizzi IP nella lista nera.

Autore: Antonio Liggieri
Esperto di computer e in sicurezza informatica, webmaster, webdesigner, webdeveloper e webmarketer. Sono il fondatore di WORCOM. Amo l'informatica, le arti marziali e il bodybuilding.
Ho scritto anche: