SSH è l’acronimo di Secure Socket Shell, definizione usata per indicare un protocollo che fornisce agli amministratori di rete un modo sicuro per accedere a un computer remoto. In dettaglio la shell, in quanto interprete dei comandi, è la parte di un sistema operativo che permette agli utenti di impartire comandi e avviare altri programmi.
La Secure Socket è lo strato di sicurezza garantito dal particolare protocollo di trasmissione. L’SSH, che oggi è in uso nella versione 2, fa anche riferimento alla suite di utility che implementano il protocollo e che comprende tre utility: slogin, SSH e SCP. Si tratta di versioni sicure delle precedenti utility UNIX non protette (rlogin, RSH e RCP) utilizzate nella versione 1.
L’SSH è ampiamente utilizzato dagli amministratori di rete per la gestione remota di sistemi e applicazioni, consentendo loro di accedere a un altro computer su una rete, eseguire comandi e spostare file da un computer a un altro. Se necessario, il protocollo utilizza la crittografia a chiave pubblica per autenticare il computer remoto e consentire al computer remoto di autenticare l’utente.
SSH: ecco come funziona
Ma come funziona l’SSH? In sintesi, in una rete informatica è il protocollo che permette di stabilire una sessione remota crittografata con un altro host, utilizzando un’interfaccia a riga di comando.
L’autentificazione fornita, tripartita su tre livelli, è forte, potenziando la sicurezza delle comunicazioni tra due computer su una rete non sicura come il Web. La tripartizione include tre livelli indipendenti: TLP (Transport Layer Protocol), UAP (User Authentication Protocol) e CLP (Connection Layer Protocol). È questo che contribuisce a garantire un’estrema flessibilità del protocollo: l’indipendenza logica dei livelli permette di modificare la configurazione della connessione senza dover modificare i livelli superiori o inferiori del protocollo (ad esempio si può modificare il protocollo di compressione delle informazioni senza dover cambiare il protocollo di cifratura o di autenticazione del sistema).
È importante specificare che i livelli sopra citati non hanno alcuna relazione con i livelli dello standard ISO/OSI essendo interni al protocollo SSH che, a sua volta, può essere posizionato immediatamente sopra al livello di trasporto ISO/OSI. Di fatto, i livelli interni al protocollo coprono gli ultimi tre livelli della pila ISO/OSI, applicando un’organizzazione diversa da quella prevista dallo standard per le reti.
Il principio è un modello client/server
L’SSH utilizza un modello client-server per collegare un’applicazione client shell sicura. Definita una chiave segreta conosciuta esclusivamente dal client e dal server è possibile utilizzare un protocollo di crittografia simmetrica per cifrare la comunicazione tra client e server. Un server SSH, per impostazione predefinita, è connesso alla porta TCP standard 22. Oltre a Microsoft Windows, questo software è incluso di default nella maggior parte dei sistemi operativi.
A cosa serve un SSH tunnel
L’SSH supporta anche il tunneling, l’inoltro di porte TCP arbitrarie e le connessioni X11. Il trasferimento dei file può essere eseguito utilizzando i protocolli di trasferimento sicuro dei file o di copia protetta (SCP – Secure Copy Protocol).
Quali sono gli algoritmi utilizzabili
La lista degli algoritmi simmetrici utilizzabili dal protocollo SSH comprende:
- 3des-cbc
- blowfish-cbc
- twofish256-cbc
- twofish-cbc
- twofish192-cbc
- twofish128-cbc
- aes256-cbc
- aes192-cbc
- aes128-cbc
- serpent256-cbc
- serpent192-cbc
- serpent128-cbc
- arcfour
- idea-cbc
- cast128-cbc
Gli algoritmi più utilizzati sono l’AES e il 3DES (presenti su tutte le tipologie di computer).
Le origini e la storia dell’SSH
La prima versione è stata realizzata nel 1995. A progettarla Tatu Ylönen, un ricercatore dell’Helsinki University of Technology che ha fondato l’SSH Communications Security. Nel tempo a questa prima versione, chiamata SSH – 1, sono stati trovati diversi difetti tant’è che oggi è diventata obsoleta. L’attuale serie di protocolli Secure Shell è la 2 ed è stata adottata come standard nel 2006.
La versione 2, che non è compatibile con la 1, utilizza uno scambio di chiavi Diffie-Hellman e un controllo dell’integrità più forte che utilizza i codici di autenticazione dei messaggi per migliorare la sicurezza. I client e i server SSH possono utilizzare un numero di metodi di crittografia, il più ampiamente usato come AES e Blowfish.
Come e perché SSH-2 è ancora così sicuro
Al momento, non ci sono vulnerabilità note nell’SSH-2, anche se le informazioni trapelate da Edward Snowden nel 2013 suggeriscono che la National Security Agency, malgrado il livello di crittografia, potrebbe essere in grado di decifrare il traffico SSH. Shellshock, un buco di sicurezza nel processore dei comandi Bash, può essere eseguito su SSH ma è una vulnerabilità in Bash, non in SSH. In realtà, la più grande minaccia per quest’ultimo è una cattiva gestione delle chiavi. Senza la corretta generazione centralizzata, la rotazione e la rimozione delle chiavi SSH, le organizzazioni possono perdere il controllo su chi ha accesso a quali risorse e quando, in particolare quando SSH viene utilizzato nei processi automatizzati applicazione-applicazione.