Come proteggere SSH con Fail2Ban: una guida per principianti
Immergiti nella nostra guida per principianti sulla protezione di SSH con Fail2Ban per salvaguardare il tuo server da accessi non autorizzati e attacchi di forza bruta.
Inizieremo con una metafora. Immagina una fortezza; mentre le sue alte mura e i robusti cancelli sono costruiti per tenere lontani i visitatori indesiderati, ci sarà sempre chi tenterà di scalare le mura o forzare i cancelli.
Allo stesso modo, la nostra fortezza digitale, in particolare i server, deve far fronte a minacce persistenti. Una di queste porte è Secure Shell (SSH), un protocollo che consente l'accesso remoto sicuro. Quindi, proprio come i cancelli richiedono guardie e sistemi di monitoraggio, SSH richiede misure di protezione contro potenziali intrusi.
Entra in Fail2Ban, una sentinella vigile per i tuoi server. È uno degli scudi più efficaci contro i tentativi di accesso non autorizzati, in particolare la forza bruta.
Cos'è Fail2Ban?
Fail2Ban è uno strumento software open source che protegge da attività dannose automatizzate come attacchi ai server di forza bruta.
Una delle sue cose più preziose è che agisce in modo proattivo. In altre parole, invece di aspettare un attacco, Fail2Ban offre un approccio identificando e bloccando potenziali minacce in tempo reale.
La bellezza di Fail2Ban risiede nella sua semplicità e adattabilità. Sebbene venga spesso utilizzato per proteggere SSH, la sua funzionalità non è limitata a questo protocollo. Fail2Ban può essere configurato per monitorare i file di registro di qualsiasi servizio, fornendo una soluzione versatile per servizi come FTP, SMTP, server web e altro.
Inoltre, consuma poche risorse, quindi non grava sulle prestazioni del server, una considerazione fondamentale per i server che gestiscono volumi elevati di transazioni o interazioni.
Come funziona Fail2Ban
Innanzitutto, spieghiamo brevemente cos’è esattamente la forza bruta. È un tipo di attacco informatico in cui un utente malintenzionato tenta di ottenere l'accesso non autorizzato a un sistema o servizio provando sistematicamente tutte le possibili combinazioni di password o chiavi di crittografia finché non viene trovata quella corretta.
A questo proposito, Fail2Ban monitora i log del server per individuare modelli specifici indicativi di tali attacchi, ad esempio ripetuti tentativi di accesso falliti in un breve lasso di tempo.
Sulla base di regole predefinite o personalizzate, chiamate “filtri”, Fail2Ban identifica modelli che suggeriscono un attacco e attiva automaticamente alcune azioni predefinite. Il più comune è vietare temporaneamente l’indirizzo IP dell’aggressore, applicare le regole del firewall e prevenire ulteriori tentativi dannosi.
Una caratteristica fondamentale di Fail2Ban è il concetto di “jail”: politiche di monitoraggio specifiche per i servizi server che combinano un filtro con azioni. Puoi avere jail diverse per servizi diversi (ad esempio, una per SSH, un'altra per FTP, ecc.).
Ogni jail specifica quale file di registro monitorare, quali modelli cercare e quali azioni intraprendere quando vengono rilevati tali modelli.
Dopo essere stato bannato per un determinato periodo, l'indirizzo IP viene automaticamente sbloccato, consentendo agli utenti legittimi che potrebbero essere stati temporaneamente bloccati perché, ad esempio, hanno dimenticato la password, di riprovare.
Installazione di Fail2Ban
Ora installiamo Fail2Ban, che è abbastanza semplice, come puoi vedere. Utilizza il comando appropriato per la distribuzione Linux che stai utilizzando.
Debian/Ubuntu
sudo apt install fail2ban
Non sono necessarie ulteriori azioni poiché il servizio viene attivato automaticamente dopo l'installazione.
RHEL/Rocky Linux/Alma Linux/Fedora
Poiché Fail2Ban risiede nel repository EPEL, devi prima aggiungerlo al tuo sistema se non lo hai già fatto:
sudo dnf install epel-release
Quindi installa Fail2Ban e abilita l'avvio del servizio all'avvio:
sudo dnf install fail2ban
sudo systemctl enable fail2ban
openSUSE
sudo zypper in fail2ban
Configurazione di Fail2Ban per SSH
Una volta installato, il file di configurazione principale è “/etc/fail2ban/jail.conf. "Tuttavia, le migliori pratiche non consigliano di modificarlo direttamente. Lo copieremo invece creandone uno nuovo con l'estensione “.local. " Perché? È semplice: questo evita problemi di fusione durante l'aggiornamento. Quindi, facciamolo.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Quando il servizio Fail2Ban viene riavviato, viene letto prima il file "jail.conf", poi "jail.local", con le impostazioni successive che sovrascrivono quelle precedenti.
Ora passiamo alla parte divertente: configurare Fail2Ban. Apri il file "jail.local" con il tuo editor di testo del terminale preferito.
sudo nano /etc/fail2ban/jail.local
Scorri verso il basso fino a trovare la parte "[sshd]", che assomiglia a quella qui sotto.
Sostituisci il contenuto esistente della parte “[sshd]” con questo:
[sshd]
enabled = true
port = ssh
backend = systemd
maxretry = 3
findtime = 300
bantime = 3600
ignoreip = 127.0.0.1
La versione finale dovrebbe assomigliare a quella mostrata di seguito. Hai bisogno di sapere cosa significano queste opzioni? Non temere: li abbiamo spiegati ciascuno in dettaglio più in basso.
- abilitato: determina se il jail è attivo o meno.
- porta: specifica le porte che desideri monitorare. Accetta qualsiasi numero di porta o nome di servizio, ad esempio "ssh", "22", "2200", ecc.
- backend: specifica il backend utilizzato per ottenere la modifica del file. Poiché tutti i moderni sistemi Linux si affidano al servizio di logging di systemd, lo specifichiamo come nostro backend.
- maxretry: il numero di tentativi falliti da un IP prima che venga bannato.
- findtime: l'intervallo di tempo (in secondi) durante il quale gli accessi non riusciti con "maxretry" porteranno a un ban. Abbiamo specificato 300 secondi, cioè 5 minuti.
- bantime – La durata (in secondi) per cui un IP dovrebbe rimanere bannato. Nel nostro caso abbiamo impostato 3600 secondi, il che significa che nell'ora successiva eventuali richieste successive (non solo alla porta SSH) provenienti da questo indirizzo IP verranno bloccate.
- ignoreip: consente di inserire nella whitelist gli indirizzi IP che devono essere ignorati. Ciò garantisce che determinati indirizzi IP, anche se superano il numero di tentativi falliti specificati in "maxretry", non verranno bloccati.
Questo è tutto. Salvare il file ed uscire, quindi riavviare il servizio Fail2Ban.
sudo systemctl restart fail2ban
Quindi, assicurati che tutto sia a posto con il servizio.
sudo systemctl status fail2ban
Test e monitoraggio
Prova ad accedere più volte tramite SSH da un altro computer al server su cui hai appena installato e configurato Fail2Ban. Dopo il terzo tentativo fallito, il tuo accesso dovrebbe essere bloccato.
Probabilmente ti starai già chiedendo come monitorare ciò che accade all'interno. La buona notizia è che Fail2Ban dispone di eccellenti strumenti integrati per questo scopo. Per visualizzare gli indirizzi IP attualmente bloccati, esegui il comando seguente:
sudo fail2ban-client status sshd
Se andiamo ancora oltre e rivediamo le regole di iptables, scopriremo che Fail2Ban ha creato una catena (“f2b-sshd “) in cui ha inserito gli indirizzi IP in questione. Verranno automaticamente rimossi da lì dopo il periodo di timeout indicato nell'opzione “bantime”.
sudo iptables -L -n
Per sbloccare manualmente tutti gli indirizzi IP in tutte le jail, esegui quanto segue:
sudo fail2ban-client unban --all
Solo per un indirizzo separato, il comando dovrebbe essere:
sudo fail2ban-client unban <ip-address>
Naturalmente, il comando fail2ban-client
ha molte altre opzioni, offrendoti grandi possibilità e flessibilità. Se sei curioso di vederli nel dettaglio, guarda qui.
Importante da tenere a mente
Sebbene Fail2Ban sia un software eccellente, non è altrettanto vantaggioso quando il tuo server SSH è configurato solo per l'autenticazione con chiave pubblica, poiché è impossibile accedere con una password. Maggiori informazioni qui.
Inoltre, ricorda che non sostituisce la sicurezza che una VPN ti darebbe per accedere al tuo server. Pertanto, a meno che non sia assolutamente necessario, evita di esporre i tuoi servizi su Internet.
Conclusione
La protezione del tuo server dovrebbe sempre essere una priorità assoluta. Poiché SSH è un punto di ingresso comune per molti aggressori, richiede particolare attenzione.
Attraverso questa guida, abbiamo seguito i semplici passaggi di installazione e configurazione di Fail2Ban per monitorare e proteggere SSH da ripetuti tentativi di accesso dannosi.
Configurando questo strumento, aggiungi un livello essenziale di sicurezza che può prevenire potenziali intrusioni. Quindi, stai al sicuro, rimani aggiornato e sii sempre proattivo nella strategia di difesa del tuo server.
Grazie per il tuo tempo! Infine, ti consigliamo di controllare la pagina GitHub di Fail2Ban per ulteriore aiuto o informazioni preziose.