Fail2Ban creare jail personalizzato (esempio con portale in PHP)

Obiettivo: realizzare una jail personalizzata per Fail2Ban su Ubuntu, per banner gli IP che tentano più di 3 accessi errati su un nostro portale in PHP

Fail2Ban funziona sotto linux e permette di banner mediante il firewall elenchi di indirizzi IP, basandosi sui log dei programmi a cui si vuole applicare.

Vediamo anzitutto come installarlo (per una guida dettagliata rimando alla guida ufficiale, oppure a questa guida qua).

Dal terminale digitiamo:

Ricordo che il connettore && concatena due comandi successivi (per esempio A && B), per cui se il comando A ha successo, allora viene eseguito il comando B.

Una volta installato modifichiamo il file jail.conf digitando sempre sul terminale:

Da qui possiamo fare una prima configurazione modificando i seguenti parametri (non si trovano in questo ordine):

Questo significa che verranno ignorati gli IP interni della macchina, che il tempo di ban sarà di 600 secondi (10 minuti), per ogni 3 errori riscontrati nell’arco di 600 secondi.

Per esempio se volessimo abilitare il controllo degli accessi sul SSH allora cerchiamo la jail relativa e impostiamo true ad enabled.

Adesso creiamo il nostro meccanismo di ban personalizzato.

Per farlo, e testarlo, creiamo anzitutto un file apposito in PHP sotto apache. Da terminale digitiamo:

A questo punto scriviamo nel file PHP il codice necessario per registrare un errore in un file log.

Faccio notare che questo genererà una pagina con un pulsante che ad ogni pressione registrerà un “LoginError” nel file in /var/log/paginatest.log.

Quello che è importante, di tutto lo script, è il modo in cui viene scritto il file di log degli errori con error_log.

Fatto questo creiamo il file log vuoto e diamo i permessi a www-data per poterlo modificare dal PHP. Senza questa modifica il file non risulterà modificabile dal PHP.

Adesso creiamo il nostro filtro personalizzato dentro per Fail2Ban. Dal terminale digitiamo:

Dentro il file paginatest.conf, aperto con nano, inseriamo le seguenti righe di codice:

Salviamo il file. Faccio notare che si userà il riconoscimento di stringa sulle righe contenenti “LoginError” il $msg del file PHP che abbiamo creato in precedenza.

Di nuovo dal terminale digitiamo:

A questo punto ci spostiamo in fondo al file, dove si trovano le altre jail ed inseriamo il seguente codice:

In questo modo impostiamo il ban su tutte le connessioni HTTP e HTTPS alla data pagina, leggendo il file log che abbiamo creato, con un massimo numero di tentativi uguale a 3.

Facciamo ripartire Fail2Ban:

Immaginiamo di testare adesso il nostro programma da un altro computer della rete, per esempio un computer all’indirizzo IP 192.168.0.19

Dopo 3 tentativi di errore dovremmo poter verificare qualcosa di simile:

Faccio notare che per visualizzare tutti gli IP bannati è sufficiente interrogare iptables:

Se andiamo a verificare il file di log vedremo che i nostri “errori”, ovvero le pressioni sul suddetto tasto, in questo caso, hanno generato le seguenti righe:

Per sbannare un indirizzo IP ricordiamoci di utilizzare il seguente commando:

In questo caso rimuoviamo dalla blacklist l’indirizzo 192.168.0.19

Rispondi

This site uses Akismet to reduce spam. Learn how your comment data is processed.