Come proteggere il tuo server Linux con fail2ban

Contenuti

Una finestra terminale stilizzata in esecuzione su un laptop Linux in stile Ubuntu.

Insieme a fail2ban, il tuo computer Linux blocca automaticamente gli indirizzi IP che hanno troppi errori di connessione. È una sicurezza che si autoregola! Ti mostreremo come usarlo.

Sicurezza Sicurezza Sicurezza

Duchessa di Windsor, Wallis Simpson, una volta detto: “Non si può mai essere troppo ricchi o troppo magri”. L'abbiamo aggiornato per il nostro mondo moderno e interconnesso: non puoi mai essere troppo attento o troppo sicuro.

Se il tuo computer accetta richieste di connessione in entrata, Che cosa Copertura sicura (SSH) connessioni, funge da server web o di posta elettronica, devi proteggerlo da attacchi di forza bruta e indovini di password.

Per farlo, dovrai monitorare le richieste di connessione che non inseriscono un account. Se non riescono ad autenticarsi ripetutamente in un breve periodo di tempo, dovrebbe essere loro proibito di fare ulteriori tentativi.

L'unico modo in cui questo può essere ottenuto praticamente è automatizzare l'intera procedura. Con un po' di semplice configurazione, fail2ban gestirà il tenere sotto controllo, vietare e ignorare il divieto per te.

fail2ban si integra con Firewall Linux iptables. Imponi il divieto di indirizzi IP sospetti aggiungendo regole al firewall. Per tenere in ordine questa spiegazione, stiamo usando iptables con un set di regole vuoto.

Certo, se sei preoccupato per la sicurezza, probabilmente hai un firewall configurato con un set di regole ben popolato. fail2ban soltanto aggiungi e rimuovi le tue regole—Le normali funzioni del firewall rimarranno intatte.

Possiamo vedere il nostro set di regole vuoto usando questo comando:

sudo iptables -L

IMPARENTATO: La guida per principianti a iptables, Firewall Linux

Installa fail2ban

installazione fail2ban è semplice in tutte le distribuzioni che usiamo per ricercare questo post. In Ubuntu 20.04, il comando è il seguente:

sudo apt-get installare fail2ban

In Fedora 32, scriba:

sudo dnf installare fail2ban

A Manjaro 20.0.1, noi usiamo pacman:

sudo pacman -Sy fail2ban

Configurazione di fail2ban

il fail2ban L'installazione contiene un file di configurazione predefinito denominato Jail.conf. Questo file viene sovrascritto quando fail2ban è aggiornato, quindi perderemo le modifiche se personalizziamo questo file.

Anziché, Copieremo il file Jail.conf in uno denominato Jail.local. Mettendo le nostre modifiche alla configurazione in jail.local, persistono negli aggiornamenti. Entrambi i file vengono letti automaticamente da fail2ban.

Ecco come viene copiato il file:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ora apri il file nel tuo editor preferito. Utilizzeremo gedit:

sudo gedit /etc/fail2ban/jail.local

Cercheremo due sezioni nell'archivio: [DEFAULT] e [sshd]. Nonostante questo, fai attenzione a trovare le sezioni effettive. Questi tag appaiono anche nella parte superiore in una sezione che li descrive., ma non è quello che vogliamo.

/etc / fail2ban / jail.local aperto in una finestra gedit.

Troverai il [DEFAULT] sezione da qualche parte intorno alla linea 40. È una lunga sezione con molti commenti e spiegazioni.

/etc / fail2ban / jail.local aperto in una finestra di gedit e fatto scorrere fino alla riga 89.

Scorri verso il basso fino alla riga 90 e troverai le seguenti quattro impostazioni che devi conoscere:

  • ignorare: Una whitelist di indirizzi IP che non saranno mai bannati. Hanno una carta permanente per uscire di prigione gratuitamente. il indirizzo IP localhost (127.0.0.1) è elencato per impostazione predefinita, insieme al suo identico IPv6 (::1). Se ci sono altri indirizzi IP che sai non dovrebbero mai essere bannati, aggiungili a questa lista e lascia uno spazio tra ognuno.
  • bantime: La durata per la quale un indirizzo IP è vietato (il “m” significa minuti). Se si immette un valore senza un “m” oh “h” (per ore), saranno trattati come secondi. Un valore di -1 bannare permanentemente un indirizzo IP. Stai molto attento a non rimanere bloccato in modo permanente.
  • tempo di ricerca: La quantità di tempo entro la quale troppi tentativi di connessione falliti comporteranno il ban di un indirizzo IP.
  • maxretry: Il valore di “troppi tentativi falliti”.

Se viene effettuata una connessione dallo stesso indirizzo IP maxretry tentativi di connessione falliti all'interno del findtime l'andamento del tempo, sono vietati per tutta la durata del bantime. Le uniche eccezioni sono gli indirizzi IP nel ignoreip pronto.

fail2ban mette gli indirizzi IP in prigione per un periodo di tempo specificato. fail2ban ammette molte prigioni diverse, e ciascuno di essi rappresenta che la configurazione si applica a un solo tipo di connessione. Ciò consente di avere impostazioni diverse per vari tipi di connessione. Oppure puoi avere fail2ban monitorare solo un insieme scelto di tipi di connessione.

Potresti averlo indovinato da [DEFAULT] nome della sezione, ma le impostazioni che abbiamo visto sono quelle predefinite. Ora, Vediamo la configurazione della jail SSH.

IMPARENTATO: Come modificare graficamente i file di testo in Linux con gedit

Crea una prigione

Le carceri ti consentono di spostare i tipi di connessione dentro e fuori fail2ban's sorveglianza. Se le impostazioni predefinite non corrispondono a ciò che vuoi applicare al jail, può determinare valori specifici per bantime, findtime, e maxretry.

Scorri verso il basso fino alla riga 280 e vedrai il [sshd] sezione.

/etc / fail2ban / jail.local aperto in una finestra di gedit e fatto scorrere fino alla riga 280.

Qui è dove puoi determinare i valori per la gabbia di connessione SSH. Per includere questa prigione nel monitoraggio e nel divieto, dobbiamo scrivere la riga successiva:

abilitato = vero

Scriviamo anche questa riga:

maxretry = 3

L'impostazione predefinita era cinque, ma vogliamo essere più cauti con le connessioni SSH. Lo abbassiamo a tre, e poi salviamo e chiudiamo il file.

Aggiungiamo questa prigione a fail2ban's monitorare e ignorare una delle impostazioni predefinite. Un jail può utilizzare una combinazione di impostazioni specifiche del jail e predefinite.

Abilitazione di fail2ban

Fino ad ora, abbiamo installato fail2ban e l'ho configurato. Ora, dobbiamo abilitarlo per l'esecuzione come servizio di avvio automatico. Dopo, dobbiamo testarlo per assicurarci che funzioni come previsto.

Permettere fail2ban come servizio, noi usiamo il systemctl comando:

sudo systemctl abilita fail2ban

Lo usiamo anche per avviare il servizio:

sudo systemctl start fail2ban

Possiamo controllare lo stato del servizio usando systemctl, Cosa c'è di più:

sudo systemctl status fail2ban.service

Sembra tutto a posto, abbiamo il semaforo verde, quindi va tutto bene.

Vediamo se fail2ban sei d'accordo:

stato sudo fail2ban-client

Questo riflette ciò che configuriamo. Abbiamo abilitato una sola jail, chiamata [sshd]. Se includiamo il nome della jail con il nostro comando precedente, possiamo dare un'occhiata più approfondita:

sudo fail2ban-client status sshd

Questo elenca il numero di errori e indirizzi IP vietati. Certo, tutte le statistiche sono zero in questo momento.

Testare la nostra prigione

Su un altro computer, faremo una richiesta di connessione SSH alla nostra macchina di prova e scriveremo erroneamente la password di proposito. Ottiene tre tentativi per ottenere la password corretta ad ogni tentativo di connessione.

il maxretry Il valore verrà attivato dopo tre tentativi di connessione non andati a buon fine, non tre tentativi di password falliti. Perché, dobbiamo digitare una password sbagliata tre volte per fallire il tentativo di connessione.

Quindi faremo un altro tentativo di connessione e inseriremo la password in modo errato altre tre volte. Dovrebbe essere attivato il primo tentativo di password errata della terza richiesta di connessione fail2ban.

Dopo la prima password errata alla terza richiesta di connessione, non riceviamo una risposta dalla macchina remota. Non otteniamo alcuna spiegazione; abbiamo solo una spalla fredda.

Devi premere Ctrl + C per tornare al prompt dei comandi. Se proviamo un'altra volta, avremo una risposta diversa:

ssh [email protected]

In precedenza, Il messaggio di errore era “permesso negato”. Questa volta, la connessione è completamente rifiutata. Siamo una persona ingrata. Ci hanno bannato.

Vediamo i dettagli del [sshd] di nuovo in prigione:

sudo fail2ban-client status sshd

Si sono verificati tre errori e un indirizzo IP (192.168.4.25) era vietato.

Come abbiamo già detto in precedenza, fail2ban imporre i divieti aggiungendo regole al set di regole del firewall. Diamo un'altra occhiata al set di regole (prima che fosse vuoto):

sudo iptables -L

È stata aggiunta una regola alla politica INPUT, che invia il traffico SSH a f2b-sshd catena. La regola nel f2b-sshd La catena rifiuta le connessioni SSH da 192.168.4.25. Non modifichiamo le impostazioni predefinite per bantime, affinché, Su 10 minuti, quell'indirizzo IP verrà sovrascritto e sarai in grado di effettuare nuove richieste di connessione.

Se imposti un'estensione di ban più lunga (tipo diverse ore), ma si desidera consentire a un indirizzo IP di effettuare un'altra richiesta di connessione prima, può rilasciarlo prima.

Scriviamo quanto segue per farlo:

sudo fail2ban-client set sshd unbanip 192.168.5.25

Sul nostro computer remoto, se facciamo un'altra richiesta di connessione SSH e scriviamo la password corretta, saremo in grado di connetterci:

ssh [email protected]

Semplice ed efficiente

Il più semplice di solito è meglio e fail2ban è una soluzione elegante a un ostacolo complicato. Richiede pochissima configurazione e impone un sovraccarico operativo little, né per te né per il tuo computer.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.