SSHGuard è un demone open source che protegge gli host dagli attacchi di forza bruta. Lo fa attraverso il monitoraggio e l'aggregazione dei log di sistema, il rilevamento degli attacchi e il blocco degli aggressori utilizzando uno dei backend del 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 inclusi Syslog, Syslog-ng e file di registro non elaborati.
SSHGuard è abbastanza simile a Fail2ban solo per il fatto 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 di pacchetti e quindi installa SSHGuard dai repository predefiniti utilizzando il gestore di 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 Yum/RHEL
Per le distribuzioni basate su RHEL come CentOS, inizia installando il repository EPEL come fornito nel comando seguente.
$ sudo yum install epel-release
O
$ sudo dnf install epel-release
Con EPEL in atto, vai avanti e installa SSHGuard usando il gestore di 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
Fase 2:configurazione SSHGuard su Linux
SSHGuard monitora attivamente i file di registro /var/log/auth.log, /var/log/secure systemd e syslog-ng per 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 a 120 secondi. Successivamente, il tempo di esclusione aumenta di un fattore 1,5 ad ogni successivo tentativo di accesso fallito.
Il momento 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 percorso seguente.
$ sudo vim /etc/sshguard.conf
Ecco un esempio del file di configurazione visualizzato da Ubuntu/Debian.
Concentrandosi sulle opzioni principali:
- Il BACKEND la direttiva punta al percorso completo dell'eseguibile di back-end. In questo esempio, vediamo che IPtables è impostato come backend del firewall predefinito.
- La SOGLIA la direttiva blocca gli attaccanti quando il loro punteggio di attacco supera il valore specificato.
- Il BLOCK_TIME opzione è il numero di secondi in cui un utente malintenzionato viene bloccato dopo ogni successivo tentativo di accesso non riuscito. Per impostazione predefinita, questo è impostato su 120 dopo il primo tentativo. Questo aumenta ad ogni successivo tentativo di accesso fallito.
- Il TEMPO_RILEVAMENTO l'opzione si riferisce al tempo in secondi durante il quale l'attaccante viene registrato o ricordato dal sistema prima che il suo punteggio venga azzerato.
- Il file_BIANCO_LISTA l'opzione punta al percorso completo del file della whitelist che contiene host che non dovrebbero essere inseriti nella blacklist.
Fase 3:configura SSHGuard per bloccare gli attacchi di forza bruta SSH
Per scongiurare attacchi di forza bruta, è necessario configurare i seguenti firewall affinché funzionino con sshguard.
Blocca gli attacchi SSH usando UFW
Se hai UFW installato e abilitato sul tuo sistema Ubuntu/Debian, modifica il file /etc/ufw/before.rules.
$ sudo vim etc/ufw/before.rules
$ sudo vim etc/ufw/before.rules
Aggiungi le seguenti righe subito dopo la sezione "consenti tutto in 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 registro non riuscito, il tempo di blocco aumenta a 240 secondi, quindi a 480 secondi, quindi a 960 secondi e così via.
Blocca gli attacchi SSH utilizzando Firewalld
Se stai eseguendo firewalld, assicurati che sia impostato e abilitato. Quindi esegui il comando seguente per abilitare sshguard sulla 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 verifica la regola come segue:
$ sudo firewall-cmd —-info-ipset=sshguard4
Blocca gli attacchi SSH utilizzando Iptables
Se stai ancora utilizzando Iptables, prima crea una nuova regola di catena per sshguard in Iptables per iniziare a bloccare gli ospiti indesiderati.
# iptables -N sshguard
Quindi, aggiorna la catena INPUT per indirizzare il traffico a sshguard e bloccare tutto il traffico proveniente da parti nefaste.
# iptables -A INPUT -j sshguard
Per bloccare porte specifiche come SSH, POP e IMAP dai malintenzionati, esegui il comando:
# iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard
E infine, salva la regola per rendere effettive le modifiche.
# iptables-save > /etc/iptables/iptables.rules
Fase 4:come inserire nella whitelist gli host bloccati da SSH
Per inserire nella whitelist un host bloccato, è sufficiente specificarne il nome host o l'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 per applicare le modifiche.
In questa guida, abbiamo dimostrato come bloccare gli attacchi SSH Bruteforce utilizzando SSHGuard su sistemi Linux.
Fare riferimento alla nostra homepage per ulteriori guide.