Ricerca nel sito web

Come installare Fail2ban su Rocky Linux e AlmaLinux


Scritto in Python, Fail2ban è un sistema di prevenzione delle intrusioni (IPS) gratuito e open source che protegge il server contro gli attacchi di forza bruta.

Dopo un numero specificato di tentativi di password errate, all'indirizzo IP del client viene vietato l'accesso al sistema per un periodo specificato o fino a quando l'amministratore di sistema non lo sblocca. In questo modo, il sistema è protetto da ripetuti attacchi di forza bruta da parte di un singolo host.

Fail2ban è altamente configurabile e può essere impostato per proteggere una miriade di servizi come SSH, vsftpd, Apache e Webmin.

In questa guida ci concentreremo su come installare e configurare Fail2ban su Rocky Linux e AlmaLinux.

Passaggio 1: assicurarsi che Firewalld sia in esecuzione

Per impostazione predefinita, Rocky viene fornito con Firewalld in esecuzione. Tuttavia, se nel tuo sistema non è così, avvia Firewalld eseguendo:

sudo systemctl start firewalld

Quindi abilitalo all'avvio all'avvio:

sudo systemctl enable firewalld

Quindi verificare lo stato di Firewalld

sudo systemctl status firewalld

Inoltre, puoi confermare tutte le regole Firewalld attualmente applicate utilizzando il comando:

sudo firewall-cmd --list-all

Passaggio 2: installa EPEL su Rocky Linux

Come requisito per l'installazione di fail2ban e di altri pacchetti richiesti, è necessario installare il repository EPEL che fornisce pacchetti aggiuntivi di alta qualità per le distribuzioni basate su RHEL.

sudo dnf install epel-release

Passaggio 3: installa Fail2ban su Rocky Linux

Con EPEL installato, procedi e installa fail2ban e il pacchetto fail2ban-firewalld.

sudo dnf install fail2ban fail2ban-firewalld

Questo installa il server fail2ban e il componente firewalld insieme ad altre dipendenze.

Una volta completata l'installazione di fail2ban, avviare il servizio fail2ban.

sudo systemctl start fail2ban

E abilitalo all'avvio all'avvio.

sudo systemctl enable fail2ban

Puoi verificare lo stato del servizio fail2ban eseguendo il comando:

sudo systemctl status fail2ban

L'output è una conferma che Fail2ban funziona come ci aspetteremmo.

Passaggio 4: configurazione di Fail2ban in Rocky Linux

Andando avanti, dobbiamo configurare fail2ban affinché funzioni come previsto. Idealmente, dovremmo modificare il file di configurazione principale – /etc/fail2ban/jail.conf. Tuttavia, questo è scoraggiato. Come soluzione alternativa, copieremo il contenuto del file di configurazione jail.conf nel file jail.local.

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

Ora apri il file jail.local utilizzando il tuo editor preferito.

sudo vim /etc/fail2ban/jail.local

Nella sezione [DEFAULT], assicurati di avere le seguenti impostazioni così come appaiono.

bantime = 1h
findtime = 1h
maxretry = 5

Definiamo gli attributi:

  • La direttiva bantime specifica la durata del tempo in cui un client verrà bannato in seguito a tentativi di autenticazione falliti.
  • La direttiva findtime è la durata o il periodo entro il quale fail2ban prenderà in considerazione quando prende in considerazione ripetuti tentativi di password errate.
  • Il parametro maxretry è il numero massimo di tentativi di password errati prima che al client remoto venga bloccato l'accesso al server. Qui, il client verrà bloccato dopo 5 errori di autenticazione.

Per impostazione predefinita, fail2ban funziona con iptables. Tuttavia, questo è stato deprecato a favore del firewalld. Dobbiamo configurare fail2ban in modo che funzioni insieme a firewalld invece che a iptables.

Quindi, esegui con il comando:

sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local

Per applicare le modifiche, riavvia fail2ban:

sudo systemctl restart fail2ban

Passaggio 5: proteggere il servizio SSH con Fail2ban

Per impostazione predefinita, fail2ban non blocca alcun host remoto finché non abiliti la configurazione jail per un servizio che desideri proteggere. La configurazione del jail è specificata nel percorso /etc/fail2ban/jail.d e sovrascriverà la configurazione specificata nel file jail.local.

In questo esempio, creeremo un file di configurazione jail per proteggere il servizio SSH. Pertanto, crea il file jail SSH.

sudo vim /etc/fail2ban/jail.d/sshd.local

Successivamente, incolla le seguenti righe:

[sshd]
enabled = true

Override the default global configuration
for specific jail sshd
bantime = 1d
maxretry = 3

Nella configurazione precedente, a un host remoto verrà vietato l'accesso al sistema per 1 giorno dopo 3 tentativi di accesso SSH falliti. Salva le modifiche e riavvia il servizio fail2ban.

sudo systemctl restart fail2ban

Successivamente, verifica lo stato di configurazione del jail utilizzando l'utilità della riga di comando fail2ban-client.

sudo fail2ban-client status

Dall'output, possiamo vedere che abbiamo 1 jail configurata per un servizio chiamato "sshd".

Inoltre, puoi confermare il valore maxretry del jail sshd utilizzando l'opzione get.

sudo fail2ban-client get sshd maxretry

3

Il valore stampato 3 dovrebbe corrispondere a quello specificato nel file sshd.local.

Passaggio 6: test della configurazione Fail2ban

Dopo aver configurato fail2ban e creato un file di configurazione jail per il servizio SSH, eseguiremo un test e simuleremo 3 accessi non riusciti specificando una password errata per ciascuna richiesta di password.

Quindi vai su un sistema Linux remoto e prova ad accedere utilizzando la password sbagliata. Dopo 3 tentativi falliti, la connessione verrà interrotta e ogni successivo tentativo di riconnessione verrà bloccato fino alla scadenza della durata del ban.

Per raccogliere informazioni sui sistemi client bloccati, controlla lo stato del jail.

sudo fail2ban-client status sshd

Per sbloccare o rimuovere il client dalla jail, esegui il comando:

sudo fail2ban-client unban 192.168.2.102

Ancora una volta, controlla lo stato del jail per assicurarti che il client non sia incluso nell'elenco degli IP vietati.

sudo fail2ban-client status sshd

Come abbiamo visto, Fail2ban è uno strumento molto utile per tenere lontani gli intrusi che cercano di violare il tuo sistema Linux. Funziona insieme a Firewalld per vietare i sistemi client per una durata specifica dopo un numero specifico di tentativi di accesso non riusciti. In tal modo, fornisce un ulteriore livello di protezione per il tuo server Linux.