ping.fm
Roman Kropachek Photo
Scritto da:

Ultimo aggiornamento il

Come Funziona l’Autenticazione con Chiave Pubblica SSH?

Come Funziona l'Autenticazione con Chiave Pubblica SSH?

Secure Shell (SSH) Public Key Authentication è uno strumento potente per gestire comunicazioni sicure tra dispositivi. Si avvale di una coppia di chiavi crittografiche per stabilire una connessione di rete in cui l’identità può essere confermata senza scambiare password. Il mio percorso con l’autenticazione con chiave pubblica SSH è iniziato quando cercavo un’alternativa più sicura ai login basati su password per accedere ai server. Attingendo dalle esperienze personali, vi guiderò attraverso il funzionamento di questo meccanismo di autenticazione e vi offrirò passaggi pratici per implementarlo voi stessi.

1

Scenari Comuni:

Accesso Remoto Sicuro Necessario 🛡

  • Accesso frequente a server remoti e bisogno di evitare i rischi associati all’uso delle password.
  • Cercare di automatizzare compiti che richiedono SSH senza intervento umano, come script o sistemi di integrazione continua.
  • Gestire più server e aver bisogno di semplificare i processi di login senza compromettere la sicurezza.

Implementazione Automatica e Operazioni 🤖

  • Implementazione di processi di distribuzione automatica dove i server devono autenticarsi con sistemi di controllo versione come Git.
  • Configurare chiavi SSH per abilitare connessioni sicure tra strumenti di automazione e server di produzione.
  • Facilitare operazioni di diagnosi e manutenzione remota con requisiti minimi di login manuale.

Incrementare la Propria Postura di Sicurezza Personale 🔐

  • Preferenza personale per misure di sicurezza incrementate quando si gestiscono dati sensibili tramite connessioni SSH.
  • Aumentare le difese contro attacchi di phishing o furto di password.
  • Ridurre i vettori di attacco eliminando la necessità di password vulnerabili agli attacchi di forza bruta.
2

Guida Passo dopo Passo. Come Funziona l’Autenticazione con Chiave SSH:

Metodo 1: Generare Coppie di Chiavi SSH 🛠

  • Creare una coppia di chiavi Secure Shell (SSH) utilizzando un comando come ssh-keygen.
  • Selezionare l’algoritmo di chiave desiderato, con RSA o ED25519 come scelte popolari.
  • Scegliere una frase segreta sicura, che aggiunge un ulteriore livello di sicurezza alla tua chiave.
  • Salvare le chiavi pubbliche e private generate nei luoghi designati.
  • Creare un backup sicuro della tua chiave privata poiché rappresenta la tua identità e non dovrebbe mai essere condivisa.

Nota: La chiave pubblica può essere condivisa ed è utilizzata sui server che desideri accedere, mentre la chiave privata rimane sulla macchina client, protetta dalla frase segreta.

Metodo 2: Copiare la Chiave Pubblica sul Server 🚀

  • Usare ssh-copy-id, uno script che installa la tua chiave pubblica nel file authorized_keys del server.
  • Eseguire ssh-copy-id user@hostname inserendo il tuo nome utente e l’host che desideri accedere.
  • Inserire la password quando richiesto per completare il processo di copia.
  • Verificare che la tua chiave pubblica sia stata aggiunta al file corretto controllando manualmente ~/.ssh/authorized_keys sul server.

Nota: Questo passaggio è fondamentale poiché stabilisce la relazione di fiducia tra la macchina client e il server per le connessioni future.

Metodo 3: Configurare il Server SSH 🔨

  • Modificare il file di configurazione del server SSH, in genere situato in /etc/ssh/sshd_config.
  • Assicurarsi che l’opzione PubkeyAuthentication yes sia impostata per abilitare l’autenticazione con chiave pubblica.
  • Per una sicurezza aggiuntiva, si può impostare PasswordAuthentication no per negare i login con password se si desidera solo un accesso basato su chiave.
  • Riavviare il servizio SSH per applicare le modifiche, di solito tramite comandi come sudo service ssh restart o sudo systemctl restart ssh.

Nota: Questa configurazione del server garantisce che solo i client con le corrispondenti chiavi pubbliche approvate possano connettersi.

Metodo 4: Configurazione Client SSH 📝

  • Sulla tua macchina client, configurare il file ~/.ssh/config per connessioni comode.
  • Impostare voci Host con dettagli come HostName, User, e specificare il percorso della tua chiave privata usando IdentityFile.
  • Questa configurazione permette di usare comandi rapidi quando si accede a vari host, come digitare ssh myserver invece del completo comando di login.

Nota: La configurazione client può semplificare molto il tuo flusso di lavoro quando si connette regolarmente a più server.

Metodo 5: Testare la Connessione SSH 🔗

  • Iniziare una connessione SSH al server usando ssh user@hostname per testare la tua configurazione.
  • Se la configurazione della chiave pubblica è corretta, ti verrà chiesto di inserire la frase segreta della tua chiave privata (se ne hai impostata una) o verrai connesso direttamente.
  • Un login riuscito senza richiedere una password conferma la corretta configurazione dell’autenticazione con chiave pubblica.

Nota: In caso di fallimenti della connessione, assicurarsi che le configurazioni client e server siano corrette e che il server abbia installata la tua chiave pubblica.

Conclusione: Seguendo questi passaggi si consente un’impostazione SSH sicura che ti permetterà di accedere a sistemi remoti senza la necessità di password, migliorando sia la comodità che la sicurezza.

3

Precauzioni e Suggerimenti:

Miglioramenti della Sicurezza 🛡

  • Mantenere sempre la tua chiave privata al sicuro e mai condividerla. Se compromessa, revocare la chiave immediatamente.
  • Usare una frase segreta forte per la chiave privata per aggiungere un ulteriore livello di sicurezza. Usare un gestore di password per memorizzare e generare frasi segrete complesse.
  • Considerare l’impostazione di una data di scadenza per le chiavi e ruotarle periodicamente per mantenere l’igiene della sicurezza.
  • Limitare l’accesso SSH per IP utilizzando le direttive AllowUsers e AllowGroups nel file sshd_config.
  • Implementare l’autenticazione a due fattori (2FA) per i login SSH per garantire ulteriormente l’accesso.
4

Comprendere la Crittografia

L’autenticazione con chiave pubblica SSH si basa sulla crittografia, in particolare su quella asimmetrica o a chiave pubblica. Questo prevede una coppia di chiavi: una chiave pubblica che può essere condivisa ampiamente e una chiave privata che deve essere mantenuta segreta. Comprendere come funzionano questi principi crittografici può aiutare a costruire una solida base per la sicurezza delle comunicazioni tramite SSH.

Per una conoscenza approfondita della crittografia e di SSH, l’Internet Engineering Task Force (IETF) fornisce una documentazione dettagliata sul protocollo SSH, inclusa la sua architettura di sicurezza.

Altre risorse autorevoli come OpenSSH, la suite software di SSH, offrono strumenti e funzionalità per facilitare configurazioni avanzate e personalizzazioni del proprio setup di comunicazione sicura.

Conclusione:

L’adozione dell’autenticazione con chiave pubblica SSH ha rivoluzionato il modo in cui gestisco l’accesso ai server remoti e la sicurezza dei dati. L’integrazione fluida nel mio flusso di lavoro ha rafforzato il mio ambiente digitale, e la tranquillità sapendo che le mie connessioni sono criptate e protette non può essere sopravvalutata. Spero che condividere queste intuizioni dia forza ad altri di fare il passaggio all’autenticazione basata su chiavi e di sperimentare i benefici risultanti nelle proprie pratiche di sicurezza della rete.

FAQ

L'autenticazione tramite chiave SSH utilizza una coppia di chiavi crittografiche per verificare l'identità di un utente, sostituendo il tradizionale metodo basato su password. È considerato più sicuro del login basato su password.

Le chiavi sono generate utilizzando un programma come ssh-keygen, che crea una coppia costituita da una chiave privata (tenuta segreta) e una chiave pubblica (condivisa con i server).

La chiave pubblica deve essere posizionata nel file authorized_keys sul server a cui si desidera accedere, all'interno della directory .ssh dell'utente.

Il client utilizza la chiave privata per creare una firma digitale. Il server controlla questa firma utilizzando la corrispondente chiave pubblica per autenticare l'utente.

Sì, è fondamentale mantenere la chiave privata SSH al sicuro. Dovrebbe essere criptata con una passphrase e i permessi dovrebbero essere impostati per lettura/scrittura solo per il proprietario.

No, le chiavi SSH non hanno una data di scadenza, ma possono essere revocate o sostituite manualmente se compromesse o per aggiornamenti periodici della sicurezza.

L'agente SSH è un programma che detiene le chiavi private utilizzate per l'autenticazione SSH, permettendo all'utente di connettersi a server senza inserire continuamente le passphrase.

Gli utenti possono copiare manualmente la chiave pubblica su ogni server, o utilizzare strumenti come ssh-copy-id per la distribuzione automatica della chiave.

Il client controlla la chiave host del server rispetto agli host conosciuti per assicurarsi di connettersi al server corretto e legittimo per prevenire attacchi man-in-the-middle.

A causa della complessità e lunghezza delle chiavi SSH, esse sono molto resistenti agli attacchi brute force, rendendole molto più sicure delle password. Per ulteriori dettagli su SSH e le chiavi, puoi esplorare le pagine principali di SSH.COM o del progetto OpenSSH.