Ricerca nel sito web

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.