Che cos’è l’SSH? La secure shell spiegata in modo semplice

La sicurezza gioca un ruolo sempre più importante su Internet: ecco perché la procedura di sicurezza SSH è saldamente ancorata nello stack di protocollo TCP/IP. Il protocollo SSH consente agli utenti di stabilire una connessione sicura tra due computer.

Il protocollo di rete è stato utilizzato dal 1995 e da allora è stato rivisto più volte. In questo articolo chiariamo i termini più importanti del protocollo SSH e come funziona la crittografia.

Fatto

La shell è la parte del sistema operativo attraverso la quale gli utenti possono accedere al computer. Di solito è intesa come la riga di comando basata sul testo (o promt dei comandi, terminale o console), ma anche l’interfaccia grafica utente cade sotto il concetto di shell. Si chiama quindi Secure Shell la procedura per stabilire una connessione, perché il protocollo stabilisce una connessione sicura alla shell di un altro computer.

A cosa serve l’SSH?

L’SSH consente a due computer di stabilire una connessione sicura e diretta all’interno di una rete potenzialmente non sicura, come Internet. Ciò è necessario per garantire che terzi non possano accedere al flusso di dati e che i dati sensibili non finiscano nelle mani sbagliate. Anche prima di Secure Shell c’era la possibilità di stabilire connessioni dirette tra due computer, ma le applicazioni corrispondenti, come Telnet, Remot Shell o rlogin erano del tutto insicure. SSH cripta la connessione tra due computer consentendo a un computer di essere servito da un secondo computer.

L’SSH non solo fornisce una connessione cifrata, ma garantisce anche che tra i computer designati vengano stabilite solo connessioni (in modo che non sia possibile alcun attacco man-in-the-middle) e che i dati corrispondenti non possano essere manipolati durante il tragitto verso il destinatario. L’accesso al computer remoto in origine avveniva sempre tramite la riga di comando. Viene utilizzato per inviare comandi al dispositivo remoto. Ora è anche possibile utilizzare Virtual Network Computing (VNC) per eseguire il mirroring di un’interfaccia grafica utente (non sempre disponibile sui server) sul proprio computer e quindi controllare l’altro computer.

L’SSH ha molte applicazioni diverse:

  • Gestione di server a cui non è possibile accedere localmente
  • Trasferimento sicuro dei file
  • Creazione sicura di backup
  • Connessione tra due computer tramite crittografia end-to-end
  • Manutenzione a distanza di altri computer

Lo sviluppo dell’SSH ha influenzato anche altri protocolli. Ad esempio, il poco sicuro protocollo FTP, che consente di caricare e scaricare file da un server, è stato ulteriormente sviluppato nell’SSH File Transfer Protocol (SFTP).

Un vantaggio dell’SSH è che il protocollo funziona su tutti i sistemi operativi comuni. Essendo originariamente un’applicazione Unix, è anche implementata di default su tutte le distribuzioni Linux e su macOS. Ma SSH può essere utilizzato anche su Windows se si installa un programma appropriato.

SSH vs OpenSSH

Secure Shell è stata originariamente creata nel 1995 come progetto open source. Nello stesso anno, lo sviluppatore Tatu Ylönen ha fondato una società per sviluppare ulteriormente il protocollo. Così il progetto inizialmente libero si è sempre più trasformato in un software proprietario. La comunità della rete non si è limitata ad accettarlo e ha sviluppato un fork aperto basato sul protocollo SSH-1: OpenSSH. Tuttavia, poiché SSH Communication Security continua a lavorare anche su Secure Shell, esistono ora due protocolli concorrenti. Da un lato c’è il protocollo proprietario SSH-2 (un ulteriore sviluppo, perché sono state scoperte lacune di sicurezza nell’SSH-1) e dall’altro c’è OpenSSH.

OpenSSH e l’SSH commerciale sono approssimativamente equivalenti sia in termini di funzionalità che di portata. La differenza è principalmente nei costi, ma anche nel supporto. Se si opta per il prodotto SSH Communication Security, si ha a disposizione un supporto 24/7. Ciò può essere particolarmente utile per le grandi aziende che hanno diversi manager IT. OpenSSH, d’altra parte, garantisce grazie alla community open source che il progetto venga costantemente sviluppato da molti partecipanti.

Come funziona l’SSH? Una spiegazione

Secure Shell utilizza molteplici tecniche di crittografia e autenticazione. In questo modo si garantisce che i flussi di dati non possano essere né letti né manipolati. D’altra parte, solo i partecipanti autorizzati possono mettersi in contatto tra loro.

Autenticazione

In un primo passo il server SSH e il client si autenticano a vicenda. Il server invia un certificato al client per verificare che sia effettivamente il server giusto. Solo al primo contatto c’è il rischio che un terzo si ponga tra i due partecipanti e intercetti la connessione. Poiché però il certificato stesso è criptato, non può essere imitato. Una volta che il client sa qual è il certificato corretto, nessun altro può fingere di contattare il server corrispondente.

Dopo l’autenticazione del server, il client deve anche identificarsi al server come utente autorizzato. Questo, o il suo valore hash criptato, viene memorizzato sul server. Tuttavia, questo significa anche che gli utenti devono inserire la password ogni volta che si collegano a un server diverso durante la stessa sessione. Questo è il motivo per cui esiste un’opzione alternativa per l’autenticazione lato client: l’uso della coppia di chiavi Public Key e Private Key (chiave pubblica e chiave privata).

La Private Key viene creata individualmente per il proprio computer e protetta con una passphrase che dovrebbe essere più lunga di una tipica password. La chiave privata viene memorizzata esclusivamente sul proprio computer e rimane sempre segreta. Se si desidera stabilire una connessione SSH, occorre prima inserire la passphrase e aprire l’accesso alla Private Key.

Sul server (così come sul client stesso) ci sono anche chiavi pubbliche. Il server crea un problema di crittografia con la sua chiave pubblica e lo invia al client. Il client a propria volta decripta il problema con la propria chiave privata, invia la soluzione e informa il server che è consentito stabilire una connessione legittima.

Durante una sessione è necessario inserire la passphrase solo una volta per connettersi a qualsiasi numero di server. Al termine della sessione gli utenti si scollegano dal proprio computer locale per garantire che nessun terzo che abbia accesso al computer locale possa connettersi al server.

Crittografia

Dopo la reciproca autenticazione i due partecipanti alla comunicazione stabiliscono una connessione criptata. A questo scopo, viene generata una chiave per la sessione, che scade al termine della stessa. Questo non deve essere confuso con le coppie Public e Private Key, che vengono utilizzate solo per lo scambio di chiavi. La chiave utilizzata per la crittografia simmetrica è vvalida solo per questa unica sessione. Sia il client che il server hanno la stessa chiave, quindi qualsiasi messaggio scambiato può essere criptato e decriptato. Client e server creano la chiave contemporaneamente ma in modo indipendente. Con il cosiddetto algoritmo di scambio di chiavi, entrambe le parti utilizzano determinate informazioni pubbliche e segrete per creare la chiave.

Un’altra forma di crittografia avviene in SSH tramite hashing. Un hash è una forma di firma dei dati trasmessi. Un algoritmo genera un hash univoco dai dati. Se i dati vengono manipolati, anche il valore hash cambia automaticamente. In questo modo il destinatario può vedere se i dati sono stati modificati da terzi durante il tragitto. I valori di hash sono progettati in modo tale da non poter essere semplicemente simulati. Idealmente non è mai possibile generare due trasmissioni diverse con lo stesso hash, il che significa prevenire le collisioni.

Porte SSH

Le porte TCP sono endpoint che aprono i server e i client per consentire la comunicazione. Le parti in comunicazione ricevono e inviano i pacchetti di dati attraverso di esso. TCP ha uno spazio di indirizzo di 16 bit e quindi sono disponibili 65535 porte. Tuttavia la Internet Assigned Numbers Authority (IAA) ha assegnato alcune porte (esattamente 1024) per alcune applicazioni: è disponibile anche la porta SSH. Per impostazione predefinita, tutte le connessioni SSH funzionano sulla porta 22.

N.B.

Poiché la porta utilizzata per le connessioni SSH è nota e si sa che trasmette dati sensibili, essa è il bersaglio preferito dai criminali informatici. Alcuni utenti ritengono quindi utile riposizionare la porta SSH. Tuttavia si tratterebbe solo di una protezione a breve termine, perché con uno scanner di porte è possibile trovare tutte le porte utilizzate da un calcolatore.

SSH permette anche il port forwarding: la porta SSH di un client o server viene utilizzata da un altro utente all’interno di una rete locale per stabilire una connessione sicura su Internet. A questo scopo, i partecipanti creano un tunnel: i dati vengono ricevuti tramite la porta 22 e quindi inoltrati al client nella rete locale.

Client SSH

Il client SSH è solitamente il proprio PC con il quale si desidera stabilire una connessione al server. Per fare questo, è possibile o necessario (a seconda del sistema operativo) installare un software separato che stabilisce una connessione SSH. Questi programmi sono di solito chiamati anche client SSH. Dalla SSH Communication Security stessa proviene l’SSH a pagamento Tectia SSH, che contiene inoltre un software server. Inoltre ci sono numerose alternative gratuite, come il software open source PuTTy per Windows e Linux o lsh, che funziona su tutti i sistemi operativi basati su Unix.

Consiglio

Alcuni programmi forniscono agli utenti un’interfaccia grafica che semplifica la configurazione e la distribuzione di SSH. In linea di principio, Secure Shell può essere eseguito anche dalla riga di comando – su macOS e altri sistemi operativi simili a Unix, anche senza ulteriori installazioni.

Server SSH

Il server SSH è la controparte del client. Anche in questo caso il termine viene usato per indicare il software. Gran parte dei software per i client funziona anche sui server. C’è anche un software progettato esclusivamente per i server SSH. È di uso comune avviare SSH sui server già dall’avvio, garantendo in questo modo la possibilità di accedere al server dall’esterno tramite SSH in qualsiasi momento.

Non è necessario tra l’altro che il server SSH sia in realtà un server in senso stretto, situato in un centro dati remoto. Gli utenti possono anche installare un server SSH sul proprio PC di casa, ad esempio per beneficiare dei vantaggi del port forwarding.


Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.