Protocollo SSH: Che cos'è? Come funziona?

Protocollo SSH: Che cos'è? Come funziona?

Leggi 11 minuti

SSH è ampiamente utilizzato per gestire l'infrastruttura di rete, trasferire file e impartire comandi remoti. In questo articolo spiegheremo cos'è il protocollo SSH, come funziona e perché è importante.

Che cos'è SSH?

SSH significa Secure Shell, il che implica che fornisce una shell (un'interfaccia a riga di comando) sicura (crittografata e autenticata). SSH può anche fare altre cose, come inviare file, eseguire programmi o modificare le impostazioni di un altro computer.

Secure Shell è un insieme di regole che indicano ai computer come comunicare tra loro in modo sicuro. Si compone di tre componenti principali: il livello di trasporto, il livello di autenticazione dell'utente e il livello di connessione. La parte di trasporto assicura che i computer si fidino l'uno dell'altro e che nessuno possa spiarli o modificare i loro messaggi. La parte utente assicura che solo la persona giusta possa accedere all'altro computer. Il livello di connessione assicura che i computer possano fare diverse cose contemporaneamente, come digitare comandi, inviare file o aprire programmi.

Il protocollo SSH protegge da vari attacchi, quali intercettazioni, manomissioni, spoofing o attacchi man-in-the-middle. Secure Shell consente inoltre agli utenti di eseguire varie operazioni in remoto senza esporre le proprie password o i propri dati a hacker o malintenzionati.

Trasferisce qualsiasi tipo di dati attraverso il canale crittografato, a condizione che sia il client che il server supportino lo stesso protocollo. Ad esempio, SSH può trasferire file di testo, binari, audio, video o immagini utilizzando SCP o SFTP. È anche possibile inviare altri tipi di dati, come grafica, porte TCP/IP o socket utilizzando il port forwarding o il tunneling.

Una delle caratteristiche più utili di SSH è la capacità di creare tunnel o proxy. Questa funzione consente agli utenti di inoltrare o reindirizzare il traffico di rete da una porta o indirizzo a un'altra porta o indirizzo tramite Secure Shell. Ciò può essere utile per aggirare i firewall, accedere a risorse riservate, criptare protocolli non sicuri o nascondere l'attività di rete.

Qual è la storia del protocollo SSH?

Il protocollo di accesso sicuro è stato creato nel 1995 dall'informatico finlandese Tatu Ylönen. Voleva creare un modo migliore di connettersi ad altri computer rispetto ai vecchi metodi, che non erano sicuri e potevano essere violati facilmente. Ha rilasciato la prima versione di SSH (SSH-1) come software libero sotto una licenza open-source. In seguito, ha fondato una società per sviluppare e commercializzare prodotti SSH.

All'inizio SSH si chiamava Secure Remote Login (SRL), ma fu cambiato in Secure Shell (SSH) perché SRL era già utilizzato da un altro programma. Un altro fatto divertente è che SSH è stato ispirato da un film di James Bond intitolato GoldenEye, in cui un hacker utilizza uno strumento simile per introdursi in un sistema di controllo satellitare.

Nel 1996, un gruppo di sviluppatori guidati da Björn Grönvall iniziò a lavorare a un'implementazione gratuita di SSH chiamata OpenSSH, basata sul codice sorgente di una versione precedente di Secure Shell. OpenSSH fu rilasciato nel 1999 come parte del sistema operativo OpenBSD e divenne presto l'implementazione più popolare di SSH. OpenSSH ha aggiunto molte caratteristiche e miglioramenti a SSH, come il supporto per SSH-2 (una versione rivista del protocollo con sicurezza e funzionalità migliorate), l'inoltro X11, l'inoltro di agenti e il supporto IPv6.

Nel 2006, l'Internet Engineering Task Force (IETF) ha pubblicato una serie di RFC che hanno standardizzato il protocollo Secure Shell come standard Internet. Le RFC coprono il protocollo principale, il protocollo del livello di trasporto, il protocollo di autenticazione dell'utente, il protocollo di connessione e varie estensioni e algoritmi.

Come funziona SSH?

Illogin remoto criptato funziona con due computer: un client e un server. Il client è il computer che si usa per connettersi al server. Il server è il computer su cui si desidera effettuare le operazioni. Il client e il server utilizzano un programma speciale chiamato SSH per comunicare tra loro.

Il primo passo consiste nell'avviare la connessione dicendo al client a quale server ci si vuole connettere. Per farlo, digitate qualcosa di simile nel vostro terminale:

ssh nomeutente@indirizzo_ip

Ciò significa: utilizzare Secure Shell per connettersi al server con questo indirizzo IP (un numero che identifica un computer su Internet) utilizzando questo nome utente (un nome che identifica un utente sul computer).

Ilsecondo passo consiste nel verificare se ci si può fidare del server utilizzando la crittografia a chiave pubblica. Si tratta di un modo di usare la matematica per creare codici segreti che solo due persone possono capire. Il server ha due codici: una chiave pubblica e una chiave privata. La chiave pubblica è come una serratura aperta che chiunque può vedere. La chiave privata è come una chiave segreta che solo il server possiede. Il server invia la sua chiave pubblica al client, che verifica se corrisponde a una chiave fidata memorizzata sul vostro computer o fornita da qualcuno di cui vi fidate. Se la chiave è attendibile, si può continuare. In caso contrario, si può interrompere o accettare la chiave dopo averne verificato l'impronta digitale (un breve codice che la identifica).

Ilterzo passo consiste nel dimostrare la propria identità al server utilizzando l'autenticazione dell'utente. Si tratta di un modo per dimostrare che si è autorizzati ad accedere al server. Esistono diversi modi per farlo, come password, chiavi pubbliche o certificati. I più comuni sono le password e le chiavi pubbliche. L'autenticazione tramite password è facile ma non molto sicura. Consiste nel digitare la password nel client e inviarla al server tramite una connessione segreta. Il server verifica se corrisponde alla password memorizzata per il nome utente.

L'autenticazione a chiave pubblica è più sicura, ma richiede una maggiore configurazione. Implica l'utilizzo di un'altra coppia di codici: una chiave privata e una chiave pubblica. La chiave privata è come una chiave segreta che si conserva con il cliente e non si condivide con nessuno. La chiave pubblica è come una serratura aperta che si condivide con il server prima della connessione. È possibile creare queste chiavi utilizzando uno strumento come ssh-keygen e copiarle sul server utilizzando uno strumento come ssh-copy-id. Il server memorizza la chiave pubblica in un file chiamato authorized_keys nella cartella home (dove si tengono i file sul server). Quando si accede con l'autenticazione a chiave pubblica, il client crea un messaggio segreto con la chiave privata e lo invia al server, che lo verifica con la chiave pubblica.

Dopo l'autenticazione dell'utente, il client può richiedere uno o più servizi al server utilizzando diversi canali all'interno del tunnel crittografato. Il servizio più comune è l'accesso alla shell, che consente all'utente di eseguire comandi sul server remoto. Un altro servizio comune è il trasferimento di file, che consente all'utente di copiare file tra il sistema locale e quello remoto utilizzando protocolli come SCP (Secure Copy Protocol) o SFTP (SSH File Transfer Protocol). SCP è un protocollo tradizionale che utilizza Secure Shell per trasferire i file in modo sicuro, ma presenta alcune limitazioni e svantaggi. SFTP è un protocollo più moderno e flessibile che fornisce funzioni di accesso, trasferimento e gestione dei file tramite SSH.

Quali sono gli usi comuni del protocollo SSH?

Il protocollo Secure Socket Shell è comunemente utilizzato per vari scopi, quali:

  • Fornire un accesso sicuro a utenti e processi automatizzati a sistemi remoti.
  • Trasferimento sicuro di file tra sistemi locali e remoti.
  • Esecuzione di comandi in remoto su sistemi remoti
  • Gestione dell'infrastruttura di rete e di altri componenti di sistema mission-critical
  • Tunneling di altri protocolli o applicazioni
  • Proxy del traffico di rete

Conclusioni

Secure Shell è uno strumento potente e versatile che consente il login remoto sicuro, il trasferimento di file e l'esecuzione di comandi su reti non protette. Utilizza la crittografia a chiave pubblica e la crittografia simmetrica per fornire l'autenticazione del server, l'autenticazione dell'utente, la riservatezza e l'integrità. SSH consente inoltre di eseguire diverse operazioni sull'altro computer, come digitare comandi, inviare file o aprire programmi. Il protocollo di login sicuro è molto importante per qualsiasi utente o amministratore Linux / Windows che voglia lavorare con sistemi remoti in modo sicuro ed efficiente.