Ricerca nel sito web

Come utilizzare Fail2ban per proteggere il tuo server Linux


Migliorare la sicurezza del tuo server dovrebbe essere una delle tue massime priorità quando si tratta di gestire un server Linux. Esaminando i log del tuo server, potresti spesso trovare diversi tentativi di accesso con forza bruta, inondazioni web, ricerca di exploit e molti altri.

Con un software di prevenzione delle intrusioni come fail2ban, puoi esaminare i log del tuo server e aggiungere regole iptables aggiuntive per bloccare indirizzi IP problematici.

Leggi anche: Come installare Fail2Ban per proteggere SSH su CentOS/RHEL 8

Questo tutorial ti mostrerà come installare fail2ban e impostare la configurazione di base per proteggere il tuo sistema Linux dagli attacchi di forza bruta.

Requisiti

Fail2ban è scritto in Python e l'unico requisito è avere Python installato:

  • Il ramo Fail2ban 0.9.x richiede Python >=2.6 o Python >=3.2
  • Il ramo Fail2ban 0.8.x richiede Python >=2.4
  • Accesso root al tuo sistema
  • Facoltativamente, iptables o showewall e sendmail

Come installare Fail2Ban nei sistemi Linux

L'installazione di fail2ban è relativamente semplice:

Installa Fail2Ban su CentOS/RHEL

Innanzitutto, aggiorna i tuoi pacchetti, abilita il repository Epel e installa fail2ban come mostrato.

yum update
yum install epel-release
yum install fail2ban

Installa Fail2Ban su Debian/Ubuntu

Innanzitutto, aggiorna i tuoi pacchetti e installa fail2ban come mostrato.

apt-get update && apt-get upgrade -y
apt-get install fail2ban

Facoltativamente, se desideri abilitare il supporto email (per le notifiche email), puoi installare sendmail.

yum install sendmail                   [On CentOS/RHEL]
apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

Per abilitare fail2ban e sendmail utilizza i seguenti comandi:

systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail

Come configurare Fail2ban nei sistemi Linux

Per impostazione predefinita, fail2ban utilizza i file .conf situati in /etc/fail2ban/ che vengono letti per primi. Tuttavia, questi possono essere sovrascritti dai file .local posizionati nella stessa directory.

Pertanto, il file .local non deve necessariamente includere tutte le impostazioni del file .conf, ma solo quelle che desideri sovrascrivere. Le modifiche dovrebbero essere apportate nei file .local, non in .conf. Ciò impedirà la sovrascrittura delle modifiche durante l'aggiornamento del pacchetto fail2ban.

Ai fini di questo tutorial, copieremo il file fail2ban.conf esistente in fail2ban.local.

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

Ora puoi apportare le modifiche nel file .local utilizzando il tuo editor di testo preferito. I valori che puoi modificare sono:

  • loglevel: questo è il livello di dettaglio da registrare. Le opzioni possibili sono:

    • CRITICO
    • ERRORE
    • AVVERTIMENTO
    • AVVISO
    • INFORMAZIONI
    • DEBUG
  • logtarget: registra le azioni in un file specifico. Il valore predefinito è /var/log/fail2ban.log. Puoi, tuttavia, modificarlo in:

    • STDOUT: emette tutti i dati
    • STDERR: visualizza eventuali errori
    • SYSLOG: registrazione basata su messaggi
    • File: output in un file
  • socket – directory in cui verrà inserito il file socket.
  • pidfile: posizione del pidfile.

Configura Fail2ban jail.local

Uno dei file più importanti in fail2ban è jail.conf che definisce le tue jail. Qui è dove definisci i servizi per i quali fail2ban deve essere abilitato.

Come accennato in precedenza, i file .conf possono essere modificati durante gli aggiornamenti, quindi dovresti creare un file jail.local in cui puoi applicare le tue modifiche.

Un altro modo per farlo è semplicemente copiare il file .conf con:

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

Nel caso in cui utilizzi CentOS o Fedora, dovrai modificare il backend in jail.local da “auto” in “systemd”.

Se stai usando Ubuntu/Debian, non è necessario apportare questa modifica, anche se anche loro usano systemd.

Il file jail abiliterà SSH per impostazione predefinita per Debian e Ubuntu, ma non su CentOS. Se desideri abilitarlo, modifica semplicemente la seguente riga in /etc/fail2ban/jail.local:

[sshd]
enabled = true
Tempi di ban e tentativi

È possibile configurare la circostanza dopo la quale un indirizzo IP viene bloccato. fail2ban utilizza bantime, findtime e maxretry a questo scopo.

  • bantime – questo è il numero di secondi durante i quali un indirizzo IP rimarrà bannato (10 min predefinito).
  • findtime: l'intervallo di tempo tra i tentativi di accesso, prima che l'host venga bannato. (10 minuti predefiniti). In altre parole, se fail2ban è impostato per bloccare un indirizzo IP dopo 3 tentativi di accesso falliti, questi 3 tentativi devono essere effettuati entro il periodo di findtime (10< minuti).
  • maxretry: numero di tentativi da effettuare prima che venga applicato un divieto. (predefinito 3).
Indirizzo IP nella lista bianca

Naturalmente, vorrai inserire nella whitelist determinati indirizzi IP. Per configurare tali indirizzi IP apri /etc/fail2ban/jail.local con il tuo editor di testo preferito e decommenta la seguente riga:

ignoreip = 127.0.0.1/8  ::1

Quindi, puoi inserire gli indirizzi IP che desideri vengano ignorati. Gli indirizzi IP devono essere separati da spazi o virgole.

Avvisi e-mail

Se desideri ricevere avvisi via email in occasione dell'evento, dovrai configurare le seguenti impostazioni in /etc/fail2ban/jail.local:

  • destemail – indirizzo e-mail, dove riceverai la notifica.
  • Nome mittente: il mittente che vedrai quando riceverai il messaggio.
  • mittente – indirizzo email da cui fail2ban invierà le email.

L'mta predefinito (mail transfer agent) è impostato su sendmail.

Per ricevere le notifiche via email, dovrai anche modificare l'impostazione “azione” da:

Action = %(action_)s

Ad uno di questi:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s – bannerà l'host e invierà un'e-mail con una segnalazione whois.
  • %(action_mwl)s – bannerà l'host, fornirà informazioni whois e tutte le informazioni rilevanti dal file di registro.

Configurazione aggiuntiva della jail Fail2ban

Finora abbiamo esaminato le opzioni di configurazione di base. Se desideri configurare una jail dovrai abilitarla nel file jail.local. La sintassi è piuttosto semplice:

[jail_to_enable]
. . .
enabled = true

Dove dovresti sostituire jail_to_enable con il jail vero e proprio, ad esempio "sshd ". Nel file jail.local, i seguenti valori saranno predefiniti per il servizio ssh:

[sshd]

port = ssh
logpath = %(sshd_log)s

È possibile abilitare il filtro che aiuterà a identificare se una riga nel registro non è riuscita. Il valore del filtro è in realtà un riferimento a un file con il nome del servizio seguito da .conf. Ad esempio: /etc/fail2ban/filter.d/sshd.conf.

La sintassi è:

filter = service

Per esempio:

filter = sshd

Puoi rivedere i filtri esistenti nella seguente directory: /etc/fail2ban/filter.d/.

Utilizza fail2ban-client

Fail2ban viene fornito con un client che può essere utilizzato per rivedere e modificare la configurazione corrente. Poiché fornisce molte opzioni, puoi consultare il suo manuale con:

man fail2ban-client 

Qui vedrai alcuni dei comandi di base che puoi utilizzare. Per rivedere lo stato attuale di fail2ban o per jail specifici, puoi utilizzare:

fail2ban-client status

Il risultato sarà simile a questo:

Per jail individuali, puoi eseguire:

fail2ban-client status sshd

Nello screenshot qui sotto, vedrai che ho fallito di proposito più accessi in modo che fail2ban possa bloccare l'indirizzo IP da cui stavo tentando di connettermi:

Conclusione

Fail2ban è un eccellente sistema di prevenzione delle intrusioni ben documentato, che fornisce ulteriore sicurezza al tuo sistema Linux. Richiede un po' di tempo per abituarsi alla sua configurazione e alla sua sintassi, ma una volta che avrai familiarizzato con esso, ti sentirai libero di cambiare ed estendere le sue regole.