Ricerca nel sito web

Come bloccare gli attacchi di forza bruta SSH utilizzando SSHGUARD


SSHGuard è un demone open source che protegge gli host dagli attacchi di forza bruta. Ciò avviene attraverso il monitoraggio e l'aggregazione dei registri di sistema, il rilevamento degli attacchi e il blocco degli aggressori utilizzando uno dei backend firewall Linux: iptables, FirewallD, pf e ipfw.

Inizialmente progettato per fornire un ulteriore livello di protezione per il servizio OpenSSH, SSHGuard protegge anche un'ampia gamma di servizi come Vsftpd e Postfix. Riconosce diversi formati di registro tra cui Syslog, Syslog-ng e file di registro non elaborati.

SSHGuard è abbastanza simile a Fail2ban solo che è scritto in C (Fail2ban è scritto in Python), è più leggero e fornisce meno funzionalità.

In questa guida, dimostreremo come installare e configurare SSHGuard per bloccare gli attacchi di forza bruta SSH nel tuo server Linux.

Passaggio 1: installa SSHGuard su Linux

Iniziamo con l'installazione di SSHGuard su Linux.

Installa SSHGuard su Debian/Ubuntu

Innanzitutto, aggiorna gli elenchi dei pacchetti e quindi installa SSHGuard dai repository predefiniti utilizzando il gestore pacchetti apt.

sudo apt update
sudo apt install sshguard

Una volta installato, il servizio SSHGuard si avvia automaticamente e puoi verificarlo utilizzando il comando:

sudo systemctl status sshguard

Installa SSHGuard sui sistemi RHEL

Per le distribuzioni basate su RHEL come CentOS, Rocky e AlmaLinux, inizia installando il repository EPEL come fornito nel comando seguente.

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
sudo dnf install epel-release

Con EPEL installato, vai avanti e installa SSHGuard utilizzando il gestore pacchetti dnf.

sudo dnf install sshguard 

Una volta installato, avvia e imposta SSHGuard per l'avvio all'avvio o al riavvio del sistema.

sudo systemctl start sshguard
sudo systemctl enable sshguard

Assicurati di verificare che SSHGuard funzioni come previsto.

sudo systemctl status sshguard

Passaggio 2: configurazione SSHGuard su Linux

SSHGuard monitora attivamente /var/log/auth.log, /var/log/secure systemd journal e syslog-ng file di registro per i tentativi di accesso non riusciti.

Per ogni tentativo di accesso non riuscito, l'host remoto viene bannato per un periodo di tempo limitato che, per impostazione predefinita, è impostato su 120 secondi. Successivamente, il tempo di ban aumenta di un fattore pari a 1,5 per ogni successivo tentativo di accesso fallito.

Il tempo in cui gli host incriminati vengono bannati, oltre ad altri parametri, è specificato nel file sshguard.conf. Puoi accedere al file di configurazione usando l'editor vim come mostrato.

sudo vim /etc/sshguard/sshguard.conf

Nelle distribuzioni basate su RHEL, il file di configurazione si trova nel seguente percorso.

sudo vim /etc/sshguard.conf

Ecco un esempio del file di configurazione visualizzato da Ubuntu/Debian.

Concentriamoci sull'opzione principale.

  • La direttiva BACKEND indica il percorso completo dell'eseguibile del backend. In questo esempio, vediamo che IPtables è impostato come backend firewall predefinito.
  • La direttiva THREShold blocca gli aggressori quando il loro punteggio di attacco supera il valore specificato.
  • L'opzione BLOCK_TIME è il numero di secondi durante i quali un utente malintenzionato viene bloccato dopo ogni successivo tentativo di accesso non riuscito. Per impostazione predefinita, questo è impostato su 120 dopo il primo tentativo. Ciò aumenta con ogni successivo tentativo di accesso non riuscito.
  • L'opzione DETECTION_TIME si riferisce al tempo in secondi durante il quale l'aggressore viene registrato o ricordato dal sistema prima che il suo punteggio venga azzerato.
  • L'opzione WHITELIST_file punta al percorso completo del file della lista bianca che contiene host che non dovrebbero essere inseriti nella lista nera./li>

Passaggio 3: configura SSHGuard per bloccare gli attacchi di forza bruta SSH

Per scongiurare attacchi di forza bruta, è necessario configurare i seguenti firewall in modo che funzionino con sshguard.

Blocca gli attacchi SSH utilizzando UFW

Se hai installato e abilitato UFW sul tuo sistema Ubuntu/Debian, modifica il file /etc/ufw/before.rules.

sudo vim etc/ufw/before.rules

Aggiungi le seguenti righe subito dopo la sezione allow all on loopback.

allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

Salva il file e riavvia UFW.

sudo systemctl restart ufw

Ora prova ad accedere al server da un sistema diverso con le credenziali errate e nota che verrai bloccato per 120 secondi dopo il primo tentativo di accesso fallito.

Puoi verificarlo controllando il file di registro auth.log.

sudo tail -f  /var/log/auth.log

Dopo il successivo tentativo di accesso non riuscito, il tempo di blocco aumenta a 240 secondi, poi a 480 secondi, poi a 960 secondi e così via.

Blocca gli attacchi SSH utilizzando Firewalld

Se stai utilizzando firewalld, assicurati che sia configurato e abilitato. Quindi esegui il seguente comando per abilitare sshguard nella tua zona preferita.

sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

Per applicare le modifiche, ricarica Firewalld e sshguard.

sudo firewall-cmd --reload
sudo systemctl restart sshguard

Quindi verificare la regola come segue:

sudo firewall-cmd —-info-ipset=sshguard4

Blocca gli attacchi SSH utilizzando Iptables

Se stai ancora utilizzando Iptables, crea prima una nuova regola di catena per sshguard in Iptables per iniziare a bloccare i cattivi.

iptables -N sshguard

Successivamente, aggiorna la catena INPUT per indirizzare il traffico su sshguard e bloccare tutto il traffico proveniente da soggetti malintenzionati.

iptables -A INPUT -j sshguard

Per bloccare porte specifiche come SSH, POP e IMAP dagli autori di abusi, esegui il comando:

iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

Infine, salva la regola affinché le modifiche diventino effettive.

iptables-save > /etc/iptables/iptables.rules

Passaggio 4: come autorizzare gli host bloccati SSH

Per inserire nella whitelist un host bloccato, specifica semplicemente il suo nome host o indirizzo IP nel file della whitelist che si trova in:

/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

Successivamente, assicurati di riavviare il demone sshguard e il backend del firewall affinché le modifiche vengano applicate.

In questa guida, abbiamo dimostrato come bloccare gli attacchi Bruteforce SSH utilizzando il demone SSHGuard nei server Linux. Il tuo feedback è benvenuto.