Installare e Configurare Fail2Ban per proteggere FreePBX su di un server unix come Debian o Ubuntu
Fail2ban è disponibile nei repository predefiniti, quindi può essere facilmente installato tramite yum, dpkg, apt. Per questa guida userò il comando apt di Ubuntu:
sudo apt update
sudo apt install fail2ban
Possiamo trovare i file di configurazione di Fail2ban nella directory /etc/fail2ban. Il file principale da modificare è jail.conf.
jail.conf potrebbe essere sovrascritto dagli aggiornamenti del pacchetto, quindi consiglio di creare una copia di questo file che chiameremo jail.local, questo andrà a sovrascrivere quello originale. In questo modo non dovremo avere problemi anche in seguito ad aggiornamenti del pacchetto Fail2ban.
Installare e Configurare Fail2Ban per proteggere FreePBX
La sezione principale di jail.conf (jail.local, la nostra copia) si chiama [DEFAULT]. Successivamente troviamo le varie sezioni dei singoli servizi, come per esempio [sshd].
Creiamo il nostro file jail.local da terminale:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
fail2ban è configurato per impostazione predefinita per vietare solo i tentativi di accesso SSH non riusciti. Verificare la configurazione corrente con il seguente comando:
sudo fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
Impostare Ufw
Cominciamo configurando fail2ban
per usare ufw
invece di iptables
.
Modifichiamo il file jail.local a riguardo:
sudo nano /etc/fail2ban/jail.local
Cerca e sostituisci il valore:
banaction = iptables-multiport
con
banaction = ufw
Installare e Configurare Fail2Ban per proteggere FreePBX
Abilitare i Jail per FreePBX
fail2ban
viene fornito con molti jail pronti per l’uso. Si trovano nella directory /etc/fail2ban/jail.d/. Ma non sempre fanno al caso nostro ed ovviamente possono essere personalizzati o creati di nuovi.
Quindi noi andremo a crearne uno nuovo e lo chiameremo asterisk-full
sudo nano /etc/fail2ban/jail.d/asterisk-full
Ed incolliamo il seguente codice:
[asterisk-full]
enabled = true
port = all
filter = asterisk-full
logpath = /var/log/asterisk/full
maxretry = 3
findtime = 1200
Nella prima riga, tra parentesi quadre, troveremo il nome del jail.
La seconda riga, booleana, potremo abilitare il jail (true) o disabilitarlo (modificando in false il valore).
La terza riga indica su quali porte verrà bannato l’ip che risponderà al jail
Nella quarta riga si indica quale filtro deve usare questa jail
Invece logpath indica quale fil di log deve essere valutato
Il maxretry indica quante volte un determinato IP deve essere trovato prima di venir bannato entro il tempo impostato in findtime (in secondi)
A questo punto possiamo ricaricare le impostazioni di fail2ban con il seguente comando:
sudo fail2ban-client reload
Verifichiamo che il nostro jail sia attivo:
sudo fail2ban-client status
Dovremmo vedere nel responso il nostro jail chiamato asterisk-full:
Status
|- Number of jail: 2
`- Jail list: asterisk-full, sshd
Installare e Configurare Fail2Ban per proteggere FreePBX
Creare il Filtro
È facile estendere fail2ban
con filtri personalizzati. Creiamo un filtro per impedire richieste di accoppiamento interni compatibili con i log di Asterisk. Sarà chiamato asterisk-full
e lo creeremo in /etc/fail2ban/filter.d/
.
sudo nano /etc/fail2ban/filter.d/asterisk-full.conf
Ed incolliamo nel file creato quanto sotto:
[Definition]
failregex = .*NOTICE.* .*: Request '.*' from '.*' failed for '<HOST>:.*' .*- Failed to authenticate
.*NOTICE.* .*: Request '.*' from '.*' failed for '<HOST>:.*' .*- No matching endpoint found
ignoreregex =
Installare e Configurare Fail2Ban per proteggere FreePBX
Dopo aver salvato il file è possibile verificare che l’espressione definita sia corretta e trovi in effetti riscontro nel file log di asterisk, tramite il comando fail2ban-regex:
sudo fail2ban-regex /var/log/asterisk/full /etc/fail2ban/filter.d/asterisk-full.conf
A seconda della grandezza del file log di asterisk, questo comando potrebbe richiedere anche decine di minuti di tempo per dare un riscontro simile a questo:
Running tests
=============
Use failregex filter file : asterisk-full, basedir: /etc/fail2ban
Use log file : /var/log/asterisk/full
Use encoding : UTF-8
Results
=======
Failregex: 80 total
|- #) [# of hits] regular expression
| 1) [40] .*NOTICE.* .*: Request '.*' from '.*' failed for '<HOST>:.*' .*- Failed to authenticate
| 2) [40] .*NOTICE.* .*: Request '.*' from '.*' failed for '<HOST>:.*' .*- No matching endpoint found
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [80] Year(?P<_sep>[-/.])Month(?P=_sep)Day 24hour:Minute:Second(?:,Microseconds)?
`-
Lines: 80 lines, 0 ignored, 80 matched, 0 missed [processed in 0.06 sec]
Installare e Configurare Fail2Ban per proteggere FreePBX
Come possiamo vedere ha trovato 80 corrispondenze, di cui 40 con la prima espressione regolare ed il restante con la seconda. Quindi possiamo andare a concludere la configurazione ricaricando le impostazioni di fail2ban con il solito comando:
sudo fail2ban-client reload
Ricontrolliamo che la nostra jail sia attiva con:
sudo fail2ban-client status
Status
|- Number of jail: 2
`- Jail list: asterisk-full, sshd
Da questo momento la nostra jail è attiva e funzionante! Possiamo verificarne lo stato di funzionamento con il comando:
sudo fail2ban-client status asterisk-full
nonchè vedere gli IP bannati tramite ufw con
ufw status
Aggiungere o Rimuovere un IP Bannato
Semmai volessimo aggiungere un IP al fail2ban appena creato, per bannarlo su tutte le porte e fare in modo che non dia più fastidio nei log che ci piacciono controllare, possiamo usare il seguente comando:
sudo fail2ban-client set asterisk-full banip 1.2.3.4
Al contrario, per eliminare un IP dal ban:
sudo fail2ban-client set asterisk-full unbanip 1.2.3.4
Questo è quanto! ^_^
Installare e Configurare Fail2Ban per proteggere FreePBX