GNU/Linux >> Linux Esercitazione >  >> Linux

Come bloccare gli attacchi di forza bruta SSH usando SSHGUARD

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.


Linux
  1. Ssh:come connettersi a un PC tramite un altro PC utilizzando Ssh?

  2. Ssh:come velocizzare l'accesso Ssh troppo lento?

  3. Come eseguire Ssh su un server utilizzando un altro server??

  4. Come connettere l'host remoto usando il comando ssh

  5. Come posso forzare il distacco dello schermo da un'altra sessione SSH?

Come eseguire un backup Linux remoto utilizzando SSH

Procedura:cPHulk Brute Force Protection su cPanel e WHM

Come generare e utilizzare una chiave SSH utilizzando PuTTY

Come bloccare un indirizzo IP usando .htaccess?

Come crittografare i dispositivi a blocchi utilizzando LUKS su Linux

Come creare una macchina virtuale remota utilizzando il driver SSH generico della macchina mobile