Come proteggere e rafforzare il server OpenSSH
Quando si tratta di accedere a dispositivi remoti come server, router e switch, il protocollo SSH è altamente raccomandato data la sua capacità di crittografare il traffico e allontanare chiunque possa tentare di intercettare le tue connessioni.
Comunque sia, le impostazioni predefinite di SSH non sono infallibili e sono necessarie ulteriori modifiche per rendere il protocollo più sicuro. In questa guida esploriamo diversi modi che puoi utilizzare per proteggere e rafforzare l'installazione di OpenSSH sul server.
1. Configura l'autenticazione senza password SSH
Per impostazione predefinita, SSH richiede agli utenti di fornire le proprie password al momento dell'accesso. Ma il punto è questo: gli hacker possono indovinare le password o persino eseguire un attacco di forza bruta utilizzando speciali strumenti di hacking e ottenere l'accesso al tuo sistema. Per sicurezza, l’uso dell’autenticazione senza password SSH è fortemente incoraggiato.
Il primo passo è generare una coppia di chiavi SSH composta da una chiave pubblica e una chiave privata. La chiave privata risiede sul tuo sistema host mentre la chiave pubblica viene quindi copiata sul server remoto.
Una volta copiata correttamente la chiave pubblica, ora puoi accedere tramite SSH al server remoto senza dover fornire una password.
Il passaggio successivo è disabilitare l'autenticazione della password. Per raggiungere questo obiettivo, è necessario modificare il file di configurazione SSH.
sudo vim /etc/ssh/sshd_config
All'interno del file di configurazione, scorri e individua la seguente direttiva. Decommenta e modifica l'opzione 'yes'
in 'no'
PasswordAuthentication no
Quindi riavvia il demone SSH.
sudo systemctl restart sshd
A questo punto avrai accesso al server remoto solo utilizzando l'autenticazione con chiave SSH.
2. Disabilitare le richieste di connessione senza password SSH dell'utente
Un altro modo consigliato per rafforzare la sicurezza del tuo server è disabilitare gli accessi SSH da parte di utenti senza password. Sembra un po' strano, ma a volte gli amministratori di sistema possono creare account utente e dimenticare di assegnare le password, il che è una pessima idea.
Per rifiutare le richieste degli utenti senza password, ancora una volta, vai al file di configurazione su /etc/ssh/sshd_config
e assicurati di avere la direttiva seguente:
PermitEmptyPasswords no
Quindi riavviare il servizio SSH per rendere effettiva la modifica.
sudo systemctl restart sshd
3. Disabilita gli accessi root SSH
Non è un problema cosa può succedere se un hacker riesce a forzare la tua password di root. Consentire l’accesso root remoto è invariabilmente una cattiva idea che potrebbe mettere a repentaglio la sicurezza del tuo sistema.
Per questo motivo, è sempre consigliabile disabilitare l'accesso root remoto SSH e attenersi invece a un normale utente non root. Ancora una volta, vai al file di configurazione e modifica questa riga come mostrato.
PermitRootLogin no
Una volta terminato, riavviare il servizio SSH per rendere effettiva la modifica.
sudo systemctl restart sshd
D'ora in poi il login root remoto sarà disattivato.
4. Utilizza il protocollo SSH 2
SSH è disponibile in due versioni: protocollo 1 e protocollo 2 SSH. Il protocollo 2 SSH è stato introdotto nel 2006 ed è più sicuro del protocollo 1 grazie ai suoi potenti controlli crittografici, alla crittografia in blocco e ad algoritmi robusti.
Per impostazione predefinita, SSH utilizza il protocollo 1. Per modificarlo nel più sicuro Protocollo 2, aggiungi la riga seguente al file di configurazione:
Protocol 2
Come sempre, riavvia SSH affinché le modifiche diventino effettive.
sudo systemctl restart sshd
D'ora in poi, SSH utilizzerà il protocollo 2 per impostazione predefinita.
Per verificare se il protocollo 1 SSH è ancora supportato, esegui il comando:
ssh -1 user@remote-IP
Riceverai un errore che dice "Il protocollo SSH v.1 non è più supportato".
In questo caso il comando era:
ssh -1 [email
Inoltre, puoi semplicemente specificare il tag -2
solo per essere sicuro che Protocollo 2 sia il protocollo predefinito in uso.
ssh -2 [email
5. Impostare il valore di inattività del timeout della connessione SSH
Lasciare il PC incustodito per lunghi periodi di tempo con una connessione SSH inattiva può rappresentare un rischio per la sicurezza. Qualcuno può semplicemente passare e prendere il controllo della tua sessione SSH e fare quello che vuole. Per risolvere il problema, è quindi prudente impostare un limite di timeout di inattività che, una volta superato, la sessione SSH verrà chiusa.
Ancora una volta, apri il file di configurazione SSH e individua la direttiva "ClientAliveInterval". Assegna un valore ragionevole, ad esempio ho impostato il limite su 180 secondi.
ClientAliveInterval 180
Ciò implica che la sessione SSH verrà interrotta se non viene registrata alcuna attività dopo 3 minuti, che equivalgono a 180 secondi.
Quindi riavviare il demone SSH per rendere effettive le modifiche apportate.
sudo systemctl restart sshd
6. Limita l'accesso SSH a determinati utenti
Per un ulteriore livello di sicurezza, è possibile definire gli utenti che richiedono il protocollo SSH per accedere ed eseguire attività remote sul sistema. Ciò tiene lontani eventuali altri utenti che potrebbero tentare di accedere al tuo sistema senza la tua approvazione.
Come sempre, apri il file di configurazione e aggiungi la direttiva “AllowUsers” seguita dai nomi degli utenti che desideri concedere. Nell'esempio seguente, ho consentito agli utenti "tecmint" e "james" di avere accesso remoto al sistema tramite SSH. Qualsiasi altro utente che tenta di ottenere l'accesso remoto verrà bloccato.
AllowUsers tecmint james
Successivamente riavviare SSH affinché le modifiche persistano.
sudo systemctl restart sshd
7. Configurare un limite per i tentativi di password
Un altro modo per aggiungere un livello di sicurezza è limitare il numero di tentativi di accesso SSH in modo tale che, dopo un numero di tentativi falliti, la connessione si interrompa. Quindi, ancora una volta, vai al file di configurazione e individua la direttiva "MaxAuthTries" e definisci un valore per il numero massimo di tentativi.
In questo esempio, il limite è stato impostato su 3 tentativi, come mostrato.
MaxAuthTries 3
Infine, riavvia il servizio SSH come negli scenari precedenti.
Potresti trovare utili anche i seguenti articoli relativi a SSH:
- Come installare il server OpenSSH 8.0 dal sorgente in Linux
- Come installare Fail2Ban per proteggere SSH su CentOS/RHEL 8
- Come cambiare la porta SSH in Linux
- Come creare tunneling SSH o port forwarding in Linux
- 4 modi per velocizzare le connessioni SSH in Linux
- Come trovare tutti i tentativi di accesso SSH falliti in Linux
- Come disconnettere connessioni SSH inattive o inattive in Linux
Conclusione
Questa è stata una carrellata di alcune delle misure che puoi adottare per proteggere le tue connessioni remote SSH. È importante aggiungere che dovresti sempre assegnare password complesse agli utenti che hanno accesso remoto per contrastare gli attacchi di forza bruta. Ci auguriamo che tu abbia trovato questa guida approfondita. Il tuo feedback è molto gradito.