5 migliori pratiche per prevenire gli attacchi di accesso di forza bruta SSH


I server che eseguono SSH sono solitamente un bersaglio debole per gli attacchi di forza bruta. Gli hacker sono costantemente alla ricerca di strumenti software e bot innovativi per automatizzare gli attacchi di forza bruta che aumentano ulteriormente il rischio di intrusione.

In questa guida, esploriamo alcuni dei suggerimenti che puoi implementare per salvaguardare i tuoi server SSH dagli attacchi di forza bruta ai derivati Debian.

Disabilita l'autenticazione con password SSH e abilita l'autenticazione con chiave SSH

Il metodo di autenticazione predefinito per SSH è l'autenticazione tramite nome utente/password. Ma come abbiamo visto, l'autenticazione della password è soggetta ad attacchi di forza bruta. Per sicurezza, si consiglia di implementare l'autenticazione SSH basata su chiave in cui l'autenticazione è resa possibile da coppie di chiavi SSH pubbliche e private. La chiave privata rimane sul PC del cliente mentre la chiave pubblica viene copiata sul server.

Durante l'autenticazione della chiave SSH, il server verifica se il PC client possiede la chiave privata. Se il controllo ha esito positivo, viene creata una sessione di shell o viene eseguito correttamente il comando inviato al server remoto. Abbiamo una guida completa su come configurare l'autenticazione basata su chiave SSH.

Anche dopo aver configurato l'autenticazione basata su chiave, il tuo server è ancora soggetto ad attacchi di forza bruta per il semplice motivo che l'autenticazione tramite password è ancora attiva. Questo deve essere disabilitato.

Pertanto, modificare il file di configurazione SSH predefinito.

$ sudo vim /etc/ssh/sshd_config

Impostare il parametro PasswordAuthentication su no come mostrato.

PasswordAuthentication no

Quindi salva il file e ricarica SSH per applicare le modifiche.

$ sudo systemctl reload ssh

Implementare lo strumento di prevenzione delle intrusioni Fail2ban

Scritto in Python, Fail2ban è un framework di prevenzione delle intrusioni open source che scansiona i file di registro dei servizi per errori di autenticazione e vieta gli IP che falliscono ripetutamente i controlli di autenticazione delle password per un determinato periodo di tempo.

Fail2ban monitora costantemente i file di registro del server per tentativi di intrusione e altre attività nefaste, Dopo un numero predefinito di errori di autenticazione - nella maggior parte dei casi, 3 tentativi di accesso non riusciti - Fail2ban blocca automaticamente l'host remoto dall'accesso al server e l'host viene mantenuto in un ' Jail' per un periodo di tempo specifico.

In tal modo, Fail2ban riduce significativamente il tasso di tentativi di autenticazione con password errate. Consulta la nostra guida su come installare e configurare Fail2ban su Linux per proteggere il tuo server dagli attacchi Bruteforce.

Limita il numero massimo di tentativi di autenticazione SSH

Un altro modo semplice per proteggere il tuo server dagli attacchi di forza bruta consiste nel limitare il numero di tentativi di accesso SSH. Per impostazione predefinita, questo è impostato su 3, ma se per caso questo è impostato su un valore più alto, impostalo su 3 tentativi di connessione al massimo.

Ad esempio, per impostare il numero massimo di tentativi di connessione su 3, impostare il parametro MaxAuthTries su 3 come mostrato

MaxAuthTries = 3

Ancora una volta, salva le modifiche e ricarica il servizio SSH.

$ sudo systemctl reload ssh

Implementare i wrapper TCP per limitare l'accesso SSH dai client

I wrapper TCP sono una libreria che fornisce un elenco di controllo degli accessi (ACL) basato su host che limita l'accesso ai servizi TCP da parte dei client remoti in base ai loro indirizzi IP

Host remoti dall'accesso ai servizi sul sistema. I wrapper TCP utilizzano i file di configurazione /etc/hosts.allow e /etc/hosts.deny (in quest'ordine) per determinare se il client remoto può accedere a un servizio specifico o meno.

Di solito, questi file sono commentati e tutti gli host sono consentiti tramite il livello wrapper TCP. Le regole per consentire l'accesso a un determinato servizio sono inserite nel file /etc/hosts.allow e hanno la precedenza sulle regole nel file /etc/hosts.deny.

La procedura consigliata consiglia di bloccare tutte le connessioni in entrata. Pertanto, apri il file /etc/hosts.deny.

$ sudo vim /etc/hosts.deny

Aggiungi la riga seguente.

ALL: ALL

Salva le modifiche ed esci dal file.

Quindi accedi al file /etc/hosts.allow.

$ sudo vim /etc/hosts.allow

Configura gli host o i domini che possono connettersi al server tramite SSH come mostrato. In questo esempio, stiamo consentendo solo a due host remoti di connettersi al server (173.82.227.89 e 173.82.255.55) e negando il resto.

sshd: 173.82.227.89 173.82.255.55
sshd: ALL: DENY

Salva le modifiche ed esci dal file di configurazione.

Per testarlo, prova a connetterti al server da un host che non è tra quelli a cui hai consentito l'accesso. Dovresti ricevere un errore di autorizzazione come mostrato.

$ ssh [email protected]

kex_exchange_identification: read: Connection reset by peer
Connection reset by 173.82.235.7 port 22
lost connection

Implementare l'autenticazione a due fattori SSH

L'autenticazione a due fattori fornisce un livello di sicurezza aggiuntivo all'autenticazione della password, rendendo così il tuo server più sicuro dagli attacchi di forza bruta. Una soluzione di autenticazione a due fattori ampiamente utilizzata è l'app Google Authenticator e abbiamo una guida ben documentata su come impostare l'autenticazione a due fattori.

Questo è un riepilogo di 5 best practice che puoi implementare per prevenire gli attacchi di accesso SSH Brute Force e garantire la sicurezza del tuo server. Puoi anche leggere Come proteggere e rafforzare OpenSSH Server.