GNU/Linux >> Linux Esercitazione >  >> Linux

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

Cos'è Fail2Ban?

Se hai abilitato SSH, controlla la cronologia degli accessi del tuo server Linux. Sarai sorpreso di vedere un numero enorme di IP che tentano di accedere al tuo server tramite SSH.

Se non disponi di alcun meccanismo in atto per scoraggiare questi tentativi di accesso, il tuo sistema è suscettibile agli attacchi di forza bruta. Fondamentalmente, uno script/bot continuerà a tentare la connessione SSH al tuo sistema provando varie combinazioni di nome utente e password.

È qui che entra in gioco uno strumento come Fail2Ban. Fail2Ban è un software gratuito e open source che aiuta a proteggere il tuo server Linux da accessi dannosi. Fail2Ban bandirà l'IP (per un certo tempo) se c'è un certo numero di tentativi di accesso falliti.

Fail2Ban funziona immediatamente con le impostazioni di base ma è anche estremamente configurabile. Puoi modificarlo a tuo piacimento e creare filtri e regole secondo le tue necessità.

Sembra interessante? Perché non testare Fail2Ban? Leggi e segui il resto dell'articolo e prova tu stesso Fail2Ban.

Installazione di Fail2Ban su Linux

Puoi intuire la popolarità di Fail2Ban dal fatto che è disponibile nei repository ufficiali di tutte le principali distribuzioni Linux. Questo rende l'installazione di Fail2Ban un compito semplice.

Installa Fail2Ban su CentOS e Red Hat

Devi essere utente root o sudo per installare nuovo software sul tuo sistema.

Devi assicurarti che il tuo sistema sia aggiornato e che il repository EPEL sia installato.

sudo yum update && sudo yum install epel-release

Ora puoi installare Fail2Ban con il seguente comando:

sudo yum install fail2ban

Installa Fail2Ban su Ubuntu e Debian

Innanzitutto, assicurati che il tuo sistema sia aggiornato:

sudo apt update && sudo apt upgrade -y

Ora installa Fail2Ban con questo comando:

sudo apt install fail2ban

Informazioni sul file di configurazione Fail2Ban

Ci sono due file di configurazione principali in Fail2Ban:/etc/fail2ban/fail2ban.conf e /etc/fail2ban/jail.conf. Lascia che ti spieghi cosa fanno.

/etc/fail2ban/fail2ban.conf :Questo è il file di configurazione per le impostazioni operative del demone Fail2Ban. Impostazioni come loglevel, file di registro, socket e file pid sono definite qui.

/etc/fail2ban/jail.conf :È qui che avviene tutta la magia. Questo è il file in cui puoi configurare cose come l'ora di divieto predefinita, il numero di reti prima di vietare un IP, gli IP nella whitelist, le informazioni sull'invio della posta ecc. Fondamentalmente controlli il comportamento di Fail2Ban da questo file.

Ora, prima di andare a modificare questi file, Fail2Ban consiglia di fare una copia con il file .local per questi file conf. È perché i file di configurazione predefiniti possono essere sovrascritti negli aggiornamenti e perderai tutte le tue impostazioni.

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

Ora capiamo il file jail.conf. Se usi il comando less per leggere questo file di grandi dimensioni, potrebbe sembrare piuttosto confuso. Il file conf cerca di spiegare tutto con troppi commenti. Quindi, lascia che ti semplifichi questo per te.

Il file jail.conf è diviso in servizi. C'è una sezione [Predefinito] e si applica a tutti i servizi. E poi puoi vedere vari servizi con le rispettive impostazioni (se presenti). Tutti questi servizi sono tra parentesi. Vedrai sezioni come [sshd], [apache-auth], [squid] ecc.

Se rimuovo i commenti, la sezione predefinita è simile a questa:

[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5
backend = auto
usedns = warn
logencoding = auto
enabled = false
mode = normal
filter = %(name)s[mode=%(mode)s]
destemail = [email protected]
sender = [email protected]
mta = sendmail
protocol = tcp
chain =
port = 0:65535
fail2ban_agent = Fail2Ban/%(fail2ban_version)s
banaction = iptables-multiport
banaction_allports = iptables-allports
action_abuseipdb = abuseipdb
action = %(action_)s

Lascia che ti spieghi il significato di alcuni di questi parametri.

  • bantime:imposta la durata del divieto. L'impostazione predefinita è 10 minuti.
  • findtime:la finestra in cui verrà eseguita l'azione su un IP. L'impostazione predefinita è 10 minuti. Supponiamo che un determinato IP abbia tentato un accesso errato alle 10:30. Se lo stesso IP raggiunge il numero massimo di tentativi prima delle 10:40, verrà bannato. In caso contrario, il successivo tentativo fallito dopo le 10:40 verrà conteggiato come primo tentativo fallito.
  • maxretry:il numero di tentativi falliti prima che venga eseguita un'azione
  • usedns:l'impostazione "avviso" tenta di utilizzare il DNS inverso per cercare il nome host e bandirlo utilizzando il nome host. Impostandolo su no vieterai gli IP, non il nome host.
  • destemail:l'indirizzo email a cui verranno inviati gli avvisi (deve essere configurato)
  • mittente:il nome del mittente nell'e-mail di notifica
  • mta:Mail Transfer Agent utilizzato per l'e-mail di notifica
  • banaction:questo parametro utilizza il file /etc/fail2ban/action.d/iptables-multiport.conf per impostare l'azione dopo il numero massimo di tentativi falliti
  • Protocollo:il tipo di traffico che verrà interrotto dopo il divieto

Se vuoi apportare modifiche per qualsiasi jail (o per tutte le jail), come il numero massimo di tentativi, il tempo di ban, il tempo di ricerca ecc., dovresti modificare il file jail.local.

Come utilizzare Fail2Ban per proteggere il server Linux

Lascia che ti mostri alcuni dei modi in cui puoi utilizzare Fail2Ban per rafforzare la sicurezza di Linux.

Nota che devi essere utente root o avere accesso sudo per eseguire i comandi fail2ban.

Abilita Fail2Ban sul tuo server e controlla tutte le jail in esecuzione

Puoi usare i comandi systemd per avviare e abilitare Fail2Ban sul tuo server Linux:

systemctl start fail2ban
systemctl enable fail2ban

Una volta abilitato Fail2Ban, puoi vedere lo stato e le jail attive con il comando fail2ban-client:

fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

Nel caso te lo stessi chiedendo, sshd jail è abilitato per impostazione predefinita.

Vedi registro Fail2Ban

Il registro di Fail2Ban si trova in /var/log/fail2ban.log. I file di registro sono nel seguente formato:

2019-03-25 07:09:08,004 fail2ban.filter [25630]: INFO [sshd] Found 139.59.69.76 – 2019-03-25 07:09:07
2019-03-25 07:09:36,756 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,757 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,774 fail2ban.actions [25630]: NOTICE [sshd] Ban 159.89.205.213
2019-03-25 07:09:36,956 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,957 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,981 fail2ban.actions [25630]: NOTICE [sshd] Ban 182.70.253.202
2019-03-25 07:09:37,247 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,248 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,589 fail2ban.actions [25630]: NOTICE [sshd] Ban 112.64.214.90

Puoi vedere che identifica gli IP e li banna quando superano la soglia del numero massimo di tentativi.

Vedi IP bannati da Fail2Ban

Un modo è controllare lo stato di una certa prigione. Puoi utilizzare il client Fail2Ban per questo scopo.

fail2ban-client status <jail_name>

Ad esempio, se devi vedere tutti gli accessi ssh errati banditi da Fail2Ban, puoi usarlo nel modo seguente. L'output mostrerebbe il totale dei tentativi falliti e il totale degli IP vietati.

[email protected]:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 14
| |- Total failed: 715
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 7
|- Total banned: 17
`- Banned IP list: 177.47.115.67 118.130.133.110 68.183.62.73 202.65.154.110 106.12.102.114 61.184.247.3 218.92.1.150

Il sistema che sta tentando di accedere tramite SSH dall'accesso non riuscito dovrebbe ricevere un errore come questo

ssh: connect to host 93.233.73.133 port 22: Connection refused

Come vietare permanentemente un IP con Fail2Ban

Ormai sai che il ban messo su una IP da Fail2Ban è temporaneo. Per impostazione predefinita è per 10 minuti e l'utente malintenzionato può riprovare ad accedere dopo 10 minuti.

Ciò rappresenta un rischio per la sicurezza perché gli aggressori potrebbero utilizzare uno script che tenta di accedere dopo un intervallo di 10 minuti.

Quindi, come si inserisce un divieto permanente utilizzando Fail2Ban? Non c'è una risposta chiara per questo.

A partire dalla versione 0.11 di Fail2Ban, il tempo di ban verrà calcolato automaticamente e gli IP persistenti vedranno il loro tempo di ban aumentato in modo esponenziale.

Ma se controlli la tua versione di Fail2Ban, probabilmente stai utilizzando la versione 0.10.

fail2ban-server --version 
Fail2Ban v0.10.2
Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.
Licensed under the GNU General Public License v2 (GPL).

Nelle versioni precedenti, potresti usare un bantime negativo (bantime =-1) e sarebbe stato equivalente a un divieto permanente, ma se provi questo metodo, probabilmente vedrai un errore come 'Avvio fail2ban:ERROR NOK:(' l'immagine del disco del database non è corretta',)'.

Una soluzione non così pulita sarebbe aumentare il bantime a qualcosa come 1 giorno, 1 settimana, 1 mese o 1 anno. Questo potrebbe aggirare il problema fino a quando la nuova versione non sarà disponibile sul tuo sistema.

Come sbloccare gli IP bloccati da Fail2Ban

Per prima cosa controlla se l'IP è bloccato o meno. Poiché Fail2Ban funziona su iptables, puoi esaminare iptable per visualizzare gli IP bannati dal tuo server:

iptables -n -L

Potrebbe essere necessario utilizzare il comando grep se ci sono troppi IP bannati.

Se trovi l'indirizzo IP specificato nell'output, viene bannato:

Quindi, il passo successivo è trovare quale "prigione" sta vietando il suddetto IP. Dovrai usare il comando Grep con i registri fail2ban qui.

Come puoi vedere nell'output di seguito, l'IP è stato bannato da sshd jail.

[email protected]:~# grep -E ‘Ban.*61.184.247.3’ /var/log/fail2ban.log
2019-03-14 13:09:25,029 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3
2019-03-14 13:52:56,745 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3

Ora che conosci il nome della jail che blocca l'IP, puoi sbloccare l'IP utilizzando fail2ban-client:

fail2ban-client set <jail_name> unbanip <ip_address>

Come inserire nella whitelist l'IP in Fail2Ban

Non sarà una buona cosa se ti banni, giusto? Per ignorare che un indirizzo IP venga bannato dalla sessione corrente di Fail2Ban, puoi inserire l'IP nella whitelist usando un comando come questo:

fail2ban-client set <JAIL_NAME> addignoreip <IP_Address>

Puoi trovare facilmente il tuo indirizzo IP in Linux. Nel mio caso, lo era

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
`- 203.93.83.113

Se desideri inserire permanentemente l'IP nella whitelist, devi modificare il file di configurazione della jail. Vai alla suddetta sezione jail e aggiungi la riga ignoreip in questo modo:

ignoreip = 127.0.0.1/8 <IP_TO_BE_WHITELISTED>

Se vuoi inserire nella whitelist un IP da tutte le jail sul tuo sistema, sarebbe un'idea migliore modificare il file /etc/fail2ban/jail.local e aggiungere una riga nella sezione DEFAULT come quella che abbiamo visto sopra.

Dovrai riavviare Fail2Ban per rendere effettiva questa modifica.

Come vedere la whitelist IP di una jail

Puoi vedere tutti gli IP autorizzati da una jail usando questo comando:

fail2ban-client get <JAIL_NAME> ignoreip

Dovrebbe mostrare tutti gli IP ignorati da Fail2Ban per quella jail:

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
|- 127.0.0.0/8
|- ::1
`- 203.93.83.113

Come rimuovere un IP dalla whitelist Fail2Ban

Se stai rimuovendo l'IP dalla whitelist di una determinata jail, puoi utilizzare questo comando:

fail2ban-client set <JAIL_NAME> delignoreip <IP_Address>

Se desideri rimuovere definitivamente l'IP, devi modificare il file /etc/fail2ban/jail.local.

Cos'altro?

Puoi fare molte più cose con Fail2Ban. Questa guida ti fornisce le basi per iniziare con Fail2Ban. Non ho toccato argomenti come azioni, notifiche e-mail, filtri ecc.

Una volta che sei a conoscenza delle basi di Fail2Ban, puoi iniziare a esplorare di più su di esso. Per il momento, giocaci e aggiungi un ulteriore livello di sicurezza a SSH sul tuo server Linux.


Linux
  1. Visualizza le connessioni di rete del tuo server Linux con netstat

  2. Sicurezza Linux:proteggi i tuoi sistemi con fail2ban

  3. 6 Strumenti open source indispensabili per proteggere il tuo server Linux

  4. Come proteggere il tuo server Ubuntu con CSF Firewall

  5. 10 suggerimenti per proteggere il tuo server Web Apache su UNIX / Linux

Proteggi la tua privacy online con queste distribuzioni Linux

Proteggi la tua rete Linux con firewall-cmd

ReaR:esegui il backup e il ripristino del tuo server Linux in tutta sicurezza

Come proteggere i server Linux con SE Linux

10 suggerimenti utili per il rafforzamento SSH per proteggere il tuo server Linux

Come proteggere SSH con Fail2Ban