Hai mai creato un server web, aperto il terminale e notato il numero di tentativi di accesso mentre eri offline? Gli aggressori usano un metodo chiamato "forza bruta". La forzatura bruta è un metodo per ottenere l'accesso a un server Web inserendo password casuali, utilizzando uno script, nella speranza di ottenere l'accesso.
Per evitare che ciò accada, utilizziamo uno strumento chiamato Fail2Ban.
Cos'è Fail2Ban?
Fail2Ban è un framework software di prevenzione delle intrusioni che protegge i server dei computer dagli attacchi di forza bruta. Scritto nel linguaggio di programmazione Python, è in grado di funzionare su sistemi POSIX che hanno un'interfaccia verso un sistema di controllo dei pacchetti o un firewall installato localmente, ad esempio iptables o TCP Wrapper. — Wikipedia
Installazione di Fail2Ban
In questa guida tratteremo l'installazione e la configurazione di Fail2Ban su un server Web Ubuntu 20.04.
Passaggio 1:aggiorna il sistema e installa Fail2Ban
Eseguiamo il nostro comando di aggiornamento.
$ sudo apt update && sudo apt upgrade -y
Ora installiamo Fail2Ban.
$ sudo apt install fail2ban
Una volta installato, Fail2Ban dovrebbe avviarsi automaticamente. Per ogni evenienza, controlliamo il suo stato usando il comando qui sotto per esserne certi.
$ sudo systemctl status fail2ban
La nostra installazione di Fail2Ban è installata e attiva. :)
Passaggio 2:configura Fail2Ban
Durante l'installazione di Fail2Ban, lo script crea due file di configurazione, /etc/fail2ban/fail.conf
e /etc/fail2ban/fail.d/defaults-debian.conf
. Qualsiasi modifica a questi file può essere sovrascritta durante gli aggiornamenti del pacchetto.
Fail2ban legge i file di configurazione in questo ordine. Il .local
il file sovrascrive le impostazioni di .cong
file.
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
Il modo più efficiente per configurare Fail2Ban sarà copiare il contenuto di jail.conf
a jail.local
quindi modifica il file locale.
Passaggio 2.1:crea il nostro file locale e configura il server
Ora copiamo il nostro jail.conf
file nel nostro jail.local
file.
$ sudo cp /etc/fail2ban/jail.{conf,local}
Dopo aver immesso questo comando, il terminale aprirà immediatamente una nuova riga.*
Configura il server Fail2Ban aprendo il jail.local
file con nano o il tuo editor di testo preferito.
$ sudo nano /etc/fail2ban/jail.local
Ora dovresti trovarti in jail.local
file e vedi i commenti che descrivono cosa fa ogni configurazione.
Passaggio 2.2:inserisci gli indirizzi IP nella whitelist
Gli indirizzi IP, gli intervalli e gli host che desideri escludere dall'esclusione devono essere aggiunti a ignoreip
direttiva.
Decommenta (rimuove il simbolo #) dalla riga ignoreip e aggiungi i tuoi indirizzi IP separati da uno spazio.
Passaggio 2.3:Impostazioni delle regole di ban
Poche righe sotto il commento di ignoreip, troverai bantime
, findtime
e maxretry
.
bantime
è il periodo di tempo in cui l'IP è stato bannato. Il tempo di esclusione predefinito è di 10 minuti. Molto probabilmente vorrai un bantime
più lungo . Puoi bannare un utente in modo permanente utilizzando un numero negativo. Se non usi un suffisso, (cioè 10 invece di 10d) il tempo sarà espresso in secondi. Puoi impostare questo tempo per la durata che preferisci, useremo 10 giorni.
bantime = 10d
findtime
è l'intervallo di tempo tra il numero di errori prima che l'IP venga bannato. È diverso da maxretry
in quanto questo non viene bannato in base al numero di tentativi di accesso, piuttosto che all'importo in successione.
finetime = 5m
maxretry
è il numero di accessi non riusciti prima che l'IP venga bannato. Anche in questo caso, puoi impostarlo a tuo piacimento.
maxretry = 5
Passaggio 2.4 — Notifiche e-mail
Fail2Ban può essere impostato per inviare avvisi e-mail quando un IP è stato bannato. Devi avere SMTP configurato sul tuo server web. Il primo passo è modificare il commento all'azione.
action = %(action_MW)s
Questo vieta l'IP e invia un avviso e-mail con un rapporto whois. Se vuoi includere i log nell'email aggiungi usa %(action_MWl)s
invece.
Dovrai anche modificare gli indirizzi e-mail di invio e ricezione affinché il sistema possa correggere l'avviso.
destemail = [email protected]
sender = [email protected]
Fase 2.5 — Prigioni
Una jail in Fail2Ban è una combinazione di un filtro e una o più azioni. Un filtro definisce un'espressione regolare che corrisponde a un modello corrispondente a un tentativo di accesso non riuscito oa un'altra attività sospetta. Le azioni definiscono i comandi che vengono eseguiti quando il filtro rileva un indirizzo IP abusivo. — Plesk
Fail2Ban viene fornito con una varietà di jail per diversi servizi. Inclusa la possibilità di crearne di personalizzati.
Un'installazione predefinita di Fail2Ban ha una jail ssh abilitata. Per abilitare una jail, dovrai aggiungere enabled = true
dopo il titolo di carcere. Utilizzando OpenWebMail come esempio:
[openwebmail]
enabled = true
port = http,https
logpath = /var/log/openwemail.log
Se vuoi impostare regole di ban per un servizio puoi farlo sotto il servizio.
[sshd]
enabled = true
maxretry = 5
findtime = 5m
bantime = 10d
ignoreip = 192.169.0.1/8 12.34.56.78
Puoi modificare i filtri in /etc/fail2ban/filter.d
directory.
Passaggio 3:riavvia Fail2Ban
Dopo ogni installazione e configurazione completa, è meglio riavviare il servizio affinché le modifiche abbiano effetto.
$ sudo systemctl restart fail2ban
Fase 4 — Riga di comando di Fail2ban
Utilizzando lo strumento fail2ban-client
puoi apportare modifiche con lo script Fail2Ban. Per usare la riga di comando, usa:
$ sudo fail2ban-client
[seguito dal tuo comando]
Per visualizzare le opzioni disponibili usa:
$ sudo fail2ban-client -h
Ecco alcuni comandi utili:
Indirizzo IP sbloccato:
$ sudo fail2ban-client set sshd unbanip 12.34.56.789
Ban un indirizzo IP:
$ sudo fail2ban-client set sddh banip 12.34.56.789