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.