Spiegazione delle chiavi SSH: Generazione, autenticazione, informazioni sulla coppia di chiavi e altro ancora
Le chiavi SSH non solo migliorano la sicurezza, ma consentono anche l'automazione dei processi connessi, il single sign-on (SSO) e la gestione delle identità e degli accessi su scala che le aziende di oggi richiedono.
Indice
Cos'è una chiave SSH?
aggiornato il: 01.22.2024
Una chiave SSH è una credenziale di accesso sicura utilizzata nel protocollo Secure Shell (SSH). Le coppie di chiavi SSH utilizzano la tecnologia dell'infrastruttura a chiave pubblica (PKI), il gold standard per l'autenticazione e la crittografia delle identità digitali, per fornire un metodo di autenticazione sicuro e scalabile.
Poiché il protocollo SSH è ampiamente utilizzato per la comunicazione nei servizi cloud, negli ambienti di rete, negli strumenti di trasferimento dei file, negli strumenti di gestione della configurazione e in altri servizi dipendenti dal computer, la maggior parte delle organizzazioni utilizza questo tipo di autenticazione basata sulle chiavi per verificare le identità e proteggere tali servizi da un uso non intenzionale o da attacchi dannosi.
Coppia di chiavi - chiave pubblica e privata
Una chiave SSH si basa sull'uso di due chiavi correlate ma asimmetriche, una chiave pubblica e una privata, che insieme creano una coppia di chiavi che viene utilizzata come credenziale di accesso sicuro. La chiave privata è segreta, nota solo all'utente, e deve essere crittografata e conservata in modo sicuro. La chiave pubblica può essere condivisa liberamente con qualsiasi server SSH a cui l'utente desideri connettersi. Queste chiavi sono normalmente gestite dal team IT di un'organizzazione o, meglio ancora, con l'aiuto di un'autorità di certificazione (CA) di fiducia per garantire che siano conservate in modo sicuro.
Per creare l'identità digitale, vengono generate la chiave pubblica e quella privata, che vengono associate l'una all'altra utilizzando un algoritmo di crittografia a chiave pubblica. Gli algoritmi matematici più comuni utilizzati per la generazione delle chiavi sono Rivest-Shamir-Adleman (RSA) e Elliptic Curve Digital Signature Algorithm (ECDSA), che è un'applicazione a curva ellittica del DSA.
Questi algoritmi utilizzano diversi metodi di calcolo per generare combinazioni numeriche casuali di lunghezza variabile, in modo da non poter essere sfruttati con un attacco di forza bruta. La dimensione della chiave o lunghezza dei bit contribuisce a determinare la forza della protezione. Le chiavi RSA a 2048 bit o le chiavi ECDSA a 521 bit offrono una forza crittografica sufficiente per impedire agli hacker di decifrare l'algoritmo.
Come funzionano le chiavi SSH?
La coppia di chiavi SSH viene utilizzata per autenticare l'identità di un utente o di un processo che vuole accedere a un sistema remoto utilizzando il protocollo SSH. La chiave pubblica viene utilizzata sia dall'utente che dal server remoto per crittografare i messaggi. Dal lato del server remoto, viene salvata in un file di chiave pubblica. Dal lato dell'utente, è memorizzata nel software di gestione delle chiavi SSH o in un file sul proprio computer. La chiave privata rimane solo sul sistema utilizzato per accedere al server remoto e viene utilizzata per decifrare i messaggi.
Quando un utente o un processo richiede una connessione al server remoto utilizzando il client SSH, viene avviata una sequenza di sfida-risposta per completare l'autenticazione. Il server SSH riconosce la richiesta di connessione e invia una richiesta di sfida crittografata utilizzando le informazioni della chiave pubblica condivisa. Il client SSH decifra il messaggio di sfida e risponde al server. L'utente o il processo deve rispondere correttamente alla sfida per ottenere l'accesso. Questa sequenza di sfida-risposta avviene automaticamente tra il client SSH e il server senza alcuna azione manuale da parte dell'utente.
Autenticazione con chiave pubblica SSH e password
Ad alto livello, le chiavi SSH funzionano come le password, controllando l'accesso. Ma la somiglianza finisce qui. Le identità digitali devono essere forti per non essere rubate, comode per garantire un accesso rapido e senza interruzioni e a prova di futuro per consentire alle aziende di anticipare le possibili minacce.
Le password offrivano una misura di sicurezza, ma non sono più efficaci come un tempo. Questo perché i malintenzionati sono diventati sempre più abili nel rubare le password in transito su Internet, nel prelevarle da archivi e nell'ottenerle con attacchi di forza bruta.
A questi rischi e problemi di sicurezza si aggiunge il fattore umano: le persone riutilizzano, condividono e dimenticano continuamente le password. Il costo per le aziende è elevato, non solo per la perdita di dati, le interruzioni e la compromissione delle informazioni, ma anche perché le password richiedono tempo per essere inserite, risorse di supporto significative e devono essere reimpostate frequentemente.
Grazie alla forza crittografica e ai metodi di autenticazione della PKI, le chiavi SSH non sono soggette ad attacchi dannosi e le credenziali valide non vengono esposte se un server è stato compromesso. La crittografia della PKI viene continuamente migliorata, rendendo le identità a prova di futuro contro le minacce nuove e in evoluzione.
L'autenticazione tramite chiave SSH è anche più comoda dell'autenticazione tramite password. Le chiavi collegano utenti e processi a un server avviando l'autenticazione e concedendo l'accesso automaticamente, in modo che gli utenti non debbano ricordare o inserire la password per ogni singolo sistema.
Detto questo, è sempre consigliabile proteggere con una password le chiavi private SSH o memorizzarle su un token hardware per una maggiore sicurezza.
Dove trovare le chiavi SSH
Prima di poter utilizzare le chiavi SSH, è necessario verificare che il proprio account utente ne disponga e, in caso contrario, è necessario crearle. Ci sono diversi modi per farlo, ad esempio utilizzando Yubikeys o altre soluzioni di sicurezza hardware, che spesso sono la soluzione più sicura. Tuttavia, per una configurazione più semplice, è possibile utilizzare la directory .ssh.
Se si sceglie di utilizzare la directory .ssh, è possibile trovare la coppia di chiavi SSH seguendo i seguenti passaggi:
- Andate nella vostra directory personale e cercate la directory SSH. Per Linux e MacOS, la posizione predefinita è la directory ~/.ssh. In Windows, il percorso predefinito è C:\Users\<username>\sh.
- Cercate due file con un nome simile a id_dsa o id_rsa. Uno avrà l'estensione .pub e l'altro no (ad esempio, id_rsa.pub e id_rsa). Il file .pub è la chiave pubblica e l'altro è la chiave privata. La chiave pubblica potrebbe non essere sempre presente, poiché non è richiesta sul client per funzionare.
Se non trovate questi file nella directory, o se non avete affatto una directory, dovrete creare le chiavi SSH.
Come generare una coppia di chiavi SSH
Per generare la coppia di chiavi pubbliche/private SSH, si può procedere manualmente o utilizzare un sistema automatico di gestione dei certificati.
La generazione e la memorizzazione manuale di nuove chiavi SSH può essere effettuata sui sistemi operativi più comuni. Sui sistemi Windows, possono essere generate utilizzando lo strumento a riga di comando ssh-keygen o un client SSH, come PuTTy. Sui sistemi MacOs e Linux, vengono generate utilizzando una finestra di terminale.
Per generare una chiave SSH, eseguire i seguenti passaggi da riga di comando:
- Inserire il comando key gen $ ssh-keygen -t rsa
- Inserire il file in cui salvare le chiavi. In genere, le chiavi vengono salvate nella directory home o ~/.ssh/ (ad esempio, /home/foldername/.ssh/id_rsa o /c/Users/username/.ssh/id_rsa). Una volta scelto il nome del file preferito, premere Invio.
- Inserire una passphrase o lasciare vuoto per non avere una passphrase. Nota: La passphrase fornisce un ulteriore livello di protezione della coppia di chiavi, ma l'utente deve digitare la passphrase ogni volta che la coppia di chiavi viene utilizzata.
Una volta generata la coppia di chiavi, il passo successivo consiste nel mettere la chiave pubblica sul server remoto. Un amministratore di sistema può copiare la chiave pubblica SSH nel file authorized_keys del server remoto usando il comando ssh-copy-id (ad esempio, $ ssh-copy-id username@indirizzo IP). In alternativa, è possibile incollare le chiavi utilizzando il comando secure shell (ad esempio, $ cat ~/.ssh/id_rsa.pub | ssh username@indirizzo IP “mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys”).
Questi passaggi consentono di utilizzare il file della chiave privata per l'autenticazione SSH.
Configurazione di SSH
È possibile configurare SSH modificando il file di configurazione del sistema sul server. In genere il nome del file è /etc/ssh/sshdc_config.
Una volta che si accede al file /etc/ssh/ssh_config, è possibile utilizzarlo per controllare quali utenti e quali gruppi hanno accesso SSH al server.
Allo stesso modo, la configurazione del client locale può essere effettuata in un file .ssh/config. Attraverso questo file, l'utente può aggiungere una configurazione specifica per ogni host, tra cui, ma non solo, l'impostazione della chiave privata da utilizzare per ogni server, il nome utente e l'impostazione dei tunnel SSH.
Gestione delle chiavi SSH
Una corretta gestione delle chiavi SSH è essenziale per le organizzazioni, poiché queste chiavi garantiscono l'accesso a sistemi e dati aziendali mission-critical. Tuttavia, la loro gestione manuale può richiedere molto tempo ed essere soggetta a errori. La situazione è ulteriormente complicata dal fatto che le organizzazioni hanno in genere migliaia, se non milioni, di chiavi memorizzate nel loro ambiente. La sicurezza che esse offrono può essere facilmente compromessa se non vengono adottate e gestite attivamente le politiche di configurazione, provisioning e terminazione.
Ad esempio, quando le chiavi rilasciate non sono più necessarie, come nel caso in cui i dipendenti lasciano l'organizzazione, il personale IT può dimenticare di terminarle. L'individuazione di queste chiavi orfane è quasi impossibile, il che crea il rischio che esistano su sistemi non strettamente controllati. Se queste chiavi orfane non sono protette, possono essere rubate da un malintenzionato, che può utilizzare le credenziali ancora attive per accedere ai sistemi e ai dati aziendali critici.
Per fornire, configurare e terminare le chiavi sono disponibili soluzioni dedicate alla gestione delle chiavi SSH che utilizzano il programma di aiuto ssh-agent. L'utilizzo di queste soluzioni è decisamente migliore rispetto alla gestione manuale, ma questo approccio richiede che il personale IT impegnato utilizzi un altro strumento di gestione oltre alle soluzioni di sicurezza e amministrative esistenti. I team IT dovrebbero invece utilizzare una soluzione di gestione dei certificati centralizzata che gestisca automaticamente tutti i certificati basati su PKI. L'utilizzo di un approccio unico alla gestione dei certificati consente al personale IT di completare tutte le attività di gestione delle chiavi in un unico cruscotto.