GNU/Linux >> Linux Esercitazione >  >> Linux

Come proteggere SSH con Fail2Ban

Proteggere il tuo server dagli attacchi di forza bruta è un must. La domanda è:come esattamente? Fortunatamente per te, Fail2Ban è proprio dietro l'angolo per proteggere il tuo server, ma la configurazione predefinita di Fail2Ban necessita di alcune modifiche per una sicurezza ottimale. Non preoccuparti però, questo tutorial ti copre.

In questo tutorial imparerai come configurare Fail2Ban e scongiurare attacchi di forza bruta proteggendo il tuo server SSH.

Pronto? Continua a leggere per ottimizzare la sicurezza per il tuo server SSH!

Prerequisiti

Questo tutorial comprende istruzioni dettagliate. Se desideri continuare, assicurati di avere in atto quanto segue:

  • Un server Ubuntu e Debian – Questo tutorial utilizza un server che esegue Ubuntu 18.04 LTS per configurare Fail2Ban e un server Debian 10 per testare le configurazioni di divieto di Fail2Ban.
  • Accesso root o privilegi sudo sul server per eseguire comandi come superutente.
  • Fail2Ban installato su un server Ubuntu o Debian.

Configurazione di un firewall di base

Fail2Ban protegge il tuo server monitorando i log e vietando gli indirizzi IP che effettuano troppi tentativi di accesso entro un determinato periodo di tempo. Ma prima, imposterai un firewall di base in cui puoi aggiungere regole per bloccare atti dannosi sul tuo server.

1. Innanzitutto, esegui service comando seguente per interrompere Fail2Ban (fail2ban stop ) dalla corsa. Interrompi Fail2Ban quando apporti modifiche ai file di configurazione in modo da poter testare le modifiche e assicurarti che funzionino come previsto.

sudo service fail2ban stop

2. Esegui apt install comando per installare Sendmail e IPTables-persistent . Sendmail è un programma che Fail2Ban utilizza per avvisarti quando banna un indirizzo IP. Mentre IPTables-persistent è un programma che salva le impostazioni di configurazione modificate in /etc/sysconfig/iptables file.

L'installazione di questi programmi mantiene intatte le impostazioni del firewall anche se accade qualcosa di imprevisto, come un'interruzione di corrente.

sudo apt install sendmail iptables-persistent -y

Ora esegui ogni iptables comando seguente per configurare il firewall. Questi comandi non genereranno alcun output ma aggiungeranno quattro regole al firewall. Queste regole consentono o bloccano le connessioni al tuo server.

## First Rule - Accepts all traffic generated by the server (lo interface) 
sudo iptables -A INPUT -i lo -j ACCEPT
## Second Rule - Accepts all traffic that are part 
## of an established o related connection
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
## Third Rule - Allows SSH traffic on port 22
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
## Fourth Rule - Arops all other traffic
sudo iptables -A INPUT -j DROP

4. Esegui iptables comando di seguito per visualizzare un riepilogo di ciò che hai impostato nel tuo firewall.

sudo iptables -S

Di seguito, sono evidenziate le regole che hai aggiunto al tuo firewall.

5. Quindi, esegui i seguenti comandi per salvare le tue regole in /etc/sysconfig/iptables-config file e avviare il servizio Fail2Ban. iptables-config file contiene tutte le regole del firewall permanenti.

Fail2Ban aggiungerà automaticamente alcune regole al tuo firewall per proteggere il tuo server.

sudo dpkg-reconfigure iptables-persistent
sudo service fail2ban start

6. Infine, riesegui iptables comando di seguito per visualizzare le regole del firewall.

sudo iptables -S

A mostrate sotto, evidenziate in rosso sono le nuove regole che Fail2Ban ha aggiunto al tuo firewall.

Regolazione della configurazione di Fail2Ban locale

Ora che hai un firewall di base in esecuzione, è il momento di regolare il file di configurazione Fail2Ban locale per aggiungere un maggiore controllo sulla protezione del tuo server. Questo tutorial utilizza /etc/fail2ban/jail.conf file di configurazione in quanto contiene tutte le opzioni necessarie per configurare le impostazioni globali per l'applicazione Fail2Ban.

Forse vuoi creare regole personalizzate per il tuo server SSH. In tal caso, creerai un nuovo jail.local file (basato su jail.conf file) e inserire le regole specifiche di SSH in jail.local file. In questo modo puoi sovrascrivere le impostazioni in jail.conf file per il tuo server.

1. Esegui awk comando seguente per eseguire quanto segue:

  • Stampa il contenuto ('{ printf "# "; print; }' ) del /etc/fail2ban/jail.conf file.
  • Crea un file chiamato jail.local (basato su jail.conf file), che può essere utilizzato per sovrascrivere le impostazioni predefinite in jail.conf file.
  • Convoglia il contenuto del /etc/fail2ban/jail.conf file nel tee comando. In questo modo verrà scritto il jail.conf contenuto del file nel filesystem locale (/etc/fail2ban/jail.local ).
awk '{ printf "# "; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local

2. Dopo aver creato jail.local file, esegui il ls comando qui sotto. Il comando elenca il contenuto della directory Fail2Ban del tuo server (/etc/fail2ban ) per verificare che il tuo jail.local il file è generato correttamente.

ls /etc/fail2ban

Se vedi il nuovo jail.local file, come mostrato di seguito, il tuo file locale è stato generato correttamente.

3. Apri /etc/fail2ban/jail.local file nel tuo editor di testo preferito e vai a [ssh] sezione.

Decommenta [sshd] e abilitato opzioni eliminando il # simbolo davanti alle opzioni, come mostrato di seguito per abilitare SSH.

Da questo punto al resto del tutorial, rimuovi il # simbolo davanti alle sezioni o alle opzioni per abilitarle.

4. Scorri verso il basso e decommenta [DEFAULT] sezione mostrata di seguito. Questa sezione è dove si configurano le impostazioni predefinite per Fail2Ban. Qualsiasi impostazione in questa sezione verrà applicata a tutte le jail gestite da Fail2Ban.

5. Quindi, scorri verso il basso fino a bantime sezione e imposta un bantime per 60 minuti. Il bantime l'opzione imposta la quantità di tempo, in minuti, durante la quale un indirizzo IP viene bannato dopo un tentativo di accesso fallito.

L'impostazione predefinita dell'ora del ban è 600 secondi (10 minuti). Puoi modificare questa impostazione a tuo piacimento, ma è importante notare che più bassa è l'impostazione del tempo di attesa, maggiore sarà il carico del tuo server.

6. Vai a trova tempo e riprova massima opzioni. Mantieni il tempo di ricerca così com'è (10 milioni ) e abbassa il maxretry a 3 .

Il tempo di ricerca l'opzione imposta la quantità di tempo, in minuti, durante la quale un indirizzo IP può non riuscire ad accedere prima di essere bannato. Mentre il maxretry l'opzione imposta il numero di tentativi di accesso falliti prima che un indirizzo IP venga bannato.

Il tempo di ricerca predefinito l'impostazione è 10 minuti e maxretry è di 5 minuti. Di conseguenza, un indirizzo IP che non riesce ad accedere per 5 volte entro un periodo di 10 minuti verrà bannato.

7. Scorri verso il basso, decommenta e configura la destemail , mittente e mta opzioni:

  • destemail – Inserisci un indirizzo email a cui Fail2Ban invia le notifiche.
  • mittente – Imposta il campo "Da" nell'e-mail che Fail2Ban invia a destemail .
  • ma – Mantieni l'impostazione predefinita (invia email ) come è. Il mta l'opzione imposta l'agente di consegna della posta elettronica che Fail2Ban utilizza per inviare le notifiche.

8. Vai all'azione opzioni, come mostrato di seguito, e decommenta action_mwl opzione. In questo modo Fail2Ban ti invierà e-mail di logwatch. Puoi rivedere le e-mail di logwatch per indagare ulteriormente su eventuali potenziali problemi di sicurezza sul tuo server.

Salva le modifiche ed esci dall'editor di testo.

9. Ora esegui i comandi seguenti per riavviare il tuo fail2ban servizio.

sudo service fail2ban stop
sudo service fail2ban start

10. Infine, esegui il comando seguente per controllare il tuo fail2ban servizio status . sudo service fail2ban status Se il servizio Fail2Ban funziona, otterrai un output come quello qui sotto.

sudo service fail2ban status

Se il servizio Fail2Ban funziona, otterrai un output come quello qui sotto.

Test delle configurazioni di divieto

Hai appena configurato Fail2Ban, quindi ora è il momento di verificare se le configurazioni di divieto funzionano davvero. Tenta più accessi SSH falliti al tuo server Fail2Ban da un server secondario e verifica se quel server secondario viene bannato.

1. Accedi al tuo server secondario (Debian) ed esegui il comando seguente in SSH nel tuo server Fail2Ban.

Questa demo utilizza un server Debian 10 con un IP da 134.122.20.103 a ssh al fail2ban server che ha un IP di 69.28.83.134 .

ssh [email protected]

2. Immettere una password casuale quando richiesto e premere Invio.

Al primo tentativo, il server Fail2Ban interromperà il tentativo di accesso SSH e stamperà il Autorizzazione negata messaggio, come mostrato di seguito. Ripeti il ​​tentativo di accesso SSH circa due o tre volte di più e il server Fail2Ban alla fine smetterà di rispondere al tuo tentativo di accesso SSH.

A questo punto, non riceverai un Autorizzazione negata messaggio più ma uno schermo vuoto. Ottenere una schermata vuota indica che il tuo secondo server (Debian) è stato bandito dal server Fail2Ban.

Ma forse hai già un elenco di indirizzi IP da bloccare dal tuo server Fail2Ban. In tal caso, apri jail.local file e vai a [DEFAULT] sezione. Decommenta ignoraip opzione e impostare gli indirizzi IP da bloccare, come mostrato di seguito.

L'indirizzo può essere costituito da più voci IPv4 o IPv6 separate oppure separato da virgole.

3. Sul tuo server Fail2Ban (Ubuntu), esegui nuovamente il iptables comando di seguito per visualizzare le regole del firewall.

sudo iptables -S

Si noti di seguito che esiste una nuova regola che rifiuta i tentativi di accesso SSH da 134.122.20.103 Indirizzo IP.

Riceverai anche un'e-mail da Fail2Ban, dopo un ban riuscito, con un file di registro allegato se hai sendmail impostato sul tuo server Fail2Ban. La notifica e-mail indica che Fail2Ban ha fermato con successo un attacco di forza bruta e ha salvato il tuo server da potenziali danni.

Conclusione

Durante questo tutorial, hai imparato come configurare Fail2Ban su un server Ubuntu. A questo punto, dovresti essere ben equipaggiato con le conoscenze per proteggere il tuo server SSH dagli attacchi di forza bruta.

Ora, perché non aumentare di un livello questa nuova conoscenza? Forse iniziare con il blocco degli IP su tutte le porte con Fail2Ban su un host docker?


Linux
  1. Come utilizzare Fail2ban per proteggere SSH su CentOS 7

  2. Proteggi il tuo server Linux con Fail2Ban [Guida per principianti]

  3. Come installare il server SSH su Ubuntu/Debian con OpenSSH

  4. Come proteggere Apache e SSH con Fail2Ban su CentOS 8

  5. Come proteggere il servizio SSH con Port Knocking

Come gestire in remoto un server Linux con SSH

Come gestire in remoto il server Ubuntu con SSH

Come configurare un server FTP sicuro su Debian 10 con Pure-FTPd

Come configurare un server FTP sicuro con Pure-FTPd su Ubuntu

Come eseguire l'SSH sul server tramite Linux

Come bloccare il tuo server CentOS con IPtables