Protocollo SSH

Questa pagina riguarda il protocollo SSH. Per l’azienda che c’è dietro, vedi Sicurezza delle comunicazioni SSH. Per usare il comando ssh di Linux, vedi Uso del comando ssh. Per i client SSH, i server e le informazioni tecniche, vedi SSH (Secure Shell) home page.

Il protocollo SSH (chiamato anche Secure Shell) è un metodo per il login remoto sicuro da un computer ad un altro. Fornisce diverse opzioni alternative per una forte autenticazione, e protegge la sicurezza e l’integrità delle comunicazioni con una forte crittografia. È un’alternativa sicura ai protocolli di login non protetti (come telnet, rlogin) e ai metodi di trasferimento file insicuri (come FTP).

Usi tipici del protocollo SSH

Il protocollo è usato nelle reti aziendali per:

  • fornire un accesso sicuro agli utenti e ai processi automatizzati

  • trasferimenti di file interattivi e automatizzati

  • emettere comandi remoti

  • gestire le infrastrutture di rete e altri componenti di sistema mission-critical.

Come funziona il protocollo SSH

Il protocollo funziona nel modello client-server, il che significa che la connessione è stabilita dal client SSH che si collega al server SSH. Il client SSH guida il processo di configurazione della connessione e usa la crittografia a chiave pubblica per verificare l’identità del server SSH. Dopo la fase di configurazione il protocollo SSH usa una forte crittografia simmetrica e algoritmi di hashing per garantire la privacy e l’integrità dei dati che vengono scambiati tra il client e il server.

La figura qui sotto presenta un flusso di configurazione semplificato di una connessione shell sicura.

Autenticazione forte con chiavi SSH

Ci sono diverse opzioni che possono essere utilizzate per l’autenticazione dell’utente. Le più comuni sono le password e l’autenticazione a chiave pubblica.

Il metodo di autenticazione a chiave pubblica è usato principalmente per l’automazione e talvolta dagli amministratori di sistema per il single sign-on. Si è rivelato essere molto più utilizzato di quanto ci si aspettasse. L’idea è di avere una coppia di chiavi crittografiche – chiave pubblica e chiave privata – e configurare la chiave pubblica su un server per autorizzare l’accesso e garantire a chiunque abbia una copia della chiave privata l’accesso al server. Le chiavi usate per l’autenticazione sono chiamate chiavi SSH. L’autenticazione a chiave pubblica è usata anche con le smartcard, come le carte CAC e PIV usate dal governo degli Stati Uniti.

L’uso principale dell’autenticazione basata sulla chiave è quello di permettere un’automazione sicura. I trasferimenti automatizzati di file di shell sicuri sono usati per integrare senza soluzione di continuità le applicazioni e anche per la gestione automatizzata della configurazione dei sistemi &.

Abbiamo scoperto che le grandi organizzazioni hanno molte più chiavi SSH di quanto immaginino, e la gestione delle chiavi SSH è diventata molto importante. Le chiavi SSH garantiscono l’accesso come i nomi utente e le password. In alcuni casi abbiamo trovato diversi milioni di chiavi SSH che autorizzano l’accesso ai server di produzione negli ambienti dei clienti, con il 90% delle chiavi che in realtà sono inutilizzate e rappresentano un accesso che è stato fornito ma mai terminato. Garantire politiche, processi e audit adeguati anche per l’uso di SSH è fondamentale per una corretta gestione delle identità e degli accessi. I progetti tradizionali di gestione delle identità hanno trascurato fino al 90% di tutte le credenziali ignorando le chiavi SSH. Noi forniamo servizi e strumenti per implementare la gestione delle chiavi SSH.

SSH fornisce una forte crittografia e protezione dell’integrità

Una volta che una connessione è stata stabilita tra il client SSH e il server, i dati che vengono trasmessi sono criptati secondo i parametri negoziati nella configurazione. Durante la negoziazione il client e il server si accordano sull’algoritmo di crittografia simmetrica da utilizzare e generano la chiave di crittografia che verrà utilizzata. Il traffico tra le parti comunicanti è protetto con algoritmi di crittografia forte standard del settore (come AES (Advanced Encryption Standard), e il protocollo SSH include anche un meccanismo che garantisce l’integrità dei dati trasmessi utilizzando algoritmi di hash standard (come SHA-2 (Standard Hashing Algorithm).

Standard IETF SSH e documentazione tecnica dettagliata

Il protocollo di base

Quando il protocollo SSH divenne popolare, Tatu Ylonen lo portò alla IETF per la standardizzazione. Ora è uno standard internet descritto nei seguenti documenti:

RFC 4251 – L’architettura del protocollo Secure Shell (SSH)RFC 4253 – Il protocollo Secure Shell (SSH) Transport Layer ProtocolRFC 4252 – Il protocollo di autenticazione Secure Shell (SSH)RFC 4254 – Il protocollo di connessione Secure Shell (SSH)

Protocollo di trasferimento file SFTP

L’SFTP (SSH File Transfer Protocol) è probabilmente il protocollo di trasferimento file sicuro più usato oggi. Viene eseguito su SSH, ed è attualmente documentato in draft-ietf-secsh-filexfer-02

Formato di file a chiave pubblica

Il formato di file a chiave pubblica non è uno standard formale (è un documento informativo), ma molte implementazioni supportano questo formato.RFC 4716 – The Secure Shell (SSH) Public Key File Format

Come citare SSH

Per citare SSH in un articolo di ricerca, usa quanto segue:

Tatu Ylonen: SSH - Secure Login Connections over the Internet.Proceedings of the 6th USENIX Security Symposium, pp. 37-42,USENIX, 1996.