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.