Cos'è il protocollo Secure Shell (SSH)?
- Glossario IAM
- Cos'è il protocollo Secure Shell (SSH)?
Il protocollo Secure Shell (SSH) è un protocollo di rete crittografico utilizzato per connettersi e gestire in modo sicuro i dispositivi da remoto tramite una rete. Consente agli utenti di accedere e controllare una macchina remota come se fossero fisicamente presenti, mantenendo un elevato livello di sicurezza. SSH crittografa i dati trasferiti tra due macchine, garantendo che le credenziali e altre informazioni sensibili siano protette da accessi non autorizzati.
SSH vs SSL: qual è la differenza?
Sebbene sia SSH che Secure Sockets Layer (SSL) siano protocolli progettati per proteggere i dati durante la trasmissione, vengono utilizzati in contesti diversi.
SSH viene utilizzato principalmente per accedere e gestire in modo sicuro i sistemi remoti su una rete. Crittografa le comunicazioni tra un client (in genere il computer di un utente) e un server remoto, consentendo l'accesso sicuro alla riga di comando, il trasferimento di file e altre attività amministrative.
SSL, ora più correttamente denominato Transport Layer Security (TLS), è progettato per proteggere la comunicazione tra un server web e un browser web, tipicamente tramite HTTPS. SSL/TLS garantisce l'integrità e la riservatezza dei dati crittografando dati come credenziali di accesso, dettagli della carta di credito e altri dati sensibili trasmessi durante le attività online.
Come funziona il protocollo SSH
Il protocollo SSH si basa su un modello client-server, dove il dispositivo dell'utente (il client) si connette in modo sicuro a una macchina remota (il server). Questo consente agli utenti di accedere e gestire i sistemi remoti su una rete, anche se si tratta di una rete non attendibile come il WiFi pubblico.
Ecco una descrizione dettagliata del processo di connessione SSH:
- Richiesta di connessione: il client SSH avvia una richiesta di connessione al server SSH.
- Scambio di chiavi: per stabilire un canale di connessione sicuro, il client e il server eseguono un algoritmo di scambio di chiavi. Questo processo scambia in modo sicuro le chiavi crittografiche, consentendo a entrambe le parti di concordare un segreto condiviso utilizzato per crittografare la sessione. Anche se qualcuno intercetta i dati, non sarà in grado di leggerli senza le chiavi corrette.
- Autenticazione del server: il client verifica l'identità del server confrontando la chiave pubblica del server con le chiavi note. Questo passaggio impedisce gli attacchi Man-in-the-Middle (MITM) assicurando che il client non si connetta a un server dannoso o contraffatto.
- Autenticazione client: una volta autenticato il server, il client deve autenticarsi utilizzando una password o una coppia di chiavi SSH.
- Sessione crittografata stabilita: dopo l'autenticazione viene stabilita una sessione sicura. Tutte le comunicazioni durante questa sessione sono crittografate, in modo da garantire la riservatezza, l'integrità dei dati e l'autenticazione sicura.
Che cos'è il tunneling SSH?
Il tunneling SSH, noto anche come port forwarding SSH, è un metodo per inoltrare in modo sicuro il traffico di rete tra una macchina locale e una macchina remota tramite una connessione crittografata. In questo modo si crea un “tunnel” sicuro che protegge i dati dall’intercettazione o dalla manomissione durante la trasmissione. Il tunneling SSH viene spesso utilizzato per accedere in modo sicuro a servizi interni o altrimenti inaccessibili, aggirare i firewall o aggiungere la crittografia ai protocolli non sicuri.
Esistono tre tipi principali di port forwarding SSH:
- Inoltro delle porte locale: inoltra una porta del computer locale a una porta di un computer remoto tramite SSH. In questo modo un utente può accedere a un servizio remoto come se fosse in esecuzione in locale.
- Inoltro delle porte remoto: inoltra una porta su una macchina remota a una porta sulla macchina locale. Ciò consente a un utente remoto di accedere a un servizio in esecuzione sul computer locale.
- Inoltro dinamico delle porte: crea un proxy SOCKS (Socket Secure) locale in grado di inoltrare dinamicamente il traffico a destinazioni diverse in base alle richieste del client. Consente l'instradamento flessibile a livello di applicazione del traffico di rete attraverso il tunnel SSH.
Casi d'uso comuni per il protocollo SSH
Il protocollo SSH ha una vasta gamma di applicazioni nella protezione delle comunicazioni remote, nei trasferimenti di file e nella gestione degli accessi. Di seguito sono riportati alcuni dei casi d'uso più comuni e importanti.
Trasferimenti di file sicuri
Uno dei casi d'uso più comuni di SSH è il trasferimento sicuro di file tra sistemi locali e remoti. SSH fornisce un canale crittografato che protegge i dati in transito, rendendolo ideale per la gestione dei server, il backup dei dati sensibili e la condivisione di documenti.
SSH aiuta a proteggere i trasferimenti di file tramite il Secure File Transfer Protocol (SFTP) e il Secure Copy Protocol (SCP). SFTP opera su una connessione SSH e garantisce che tutti i dati siano crittografati durante il processo di trasferimento, anziché essere inviati in chiaro come nel File Transfer Protocol (FTP). SCP è un protocollo più semplice di SFTP e si concentra sul copiare i file da un sistema all'altro come un modo più efficiente per trasferire i file in modo sicuro e rapido. SSH svolge un ruolo importante nei trasferimenti di file sicuri, fornendo crittografia e integrità dei dati tramite SFTP e SCP.
Gestione dell'accesso remoto
SSH consente un accesso remoto sicuro e crittografato. Ciò è utile per gli amministratori di sistema e i professionisti IT che devono gestire sistemi remoti senza essere fisicamente presenti in una posizione server. SSH consente agli utenti di connettersi in remoto a una macchina e autenticarsi per eseguire attività amministrative senza il rischio di accessi non autorizzati. Con SSH gli utenti possono gestire in sicurezza server e sistemi da qualsiasi luogo, trasferire file in modo sicuro e persino accedere ai servizi interni tramite tunneling.
Bypass del firewall
Il tunneling SSH è un modo efficace per aggirare le restrizioni del firewall e instradare in modo sicuro il traffico di rete attraverso un server remoto. Il tunneling SSH può ignorare il traffico in entrata e in uscita che i firewall sono in genere configurati per limitare per motivi di sicurezza. È utile quando un utente deve accedere a servizi che potrebbero essere bloccati da un firewall, come database interni o applicazioni web.
Accesso alla rete privata
Il tunneling SSH consente l'accesso sicuro a servizi interni e reti private, soprattutto quando tali reti si trovano dietro firewall o reti private virtuali (VPN) che bloccano l'accesso diretto. A differenza di una VPN, il tunneling SSH consente agli utenti di instradare specifici tipi di traffico attraverso un tunnel per accedere in remoto a risorse di rete private che altrimenti sarebbero inaccessibili. Supponiamo che un utente lavori in remoto e abbia bisogno di accedere a un database su un server privato all'interno della rete di un'azienda. In quel caso, non possono connettersi direttamente a causa dei firewall che bloccano l'accesso esterno. Per raggiungere in modo sicuro il database, l'utente può configurare un tunnel SSH con inoltro di porte locali, consentendo di instradare il traffico attraverso un server fidato e accedere al database privato senza compromettere la sicurezza.
Accesso ai servizi cloud
Le piattaforme cloud spesso ospitano applicazioni e infrastrutture su macchine virtuali remote. SSH è il protocollo standard per interagire in modo sicuro con questi ambienti. SSH consente agli utenti di interagire con i server cloud, installare software e risolvere i problemi da remoto.
Rischi per la sicurezza SSH
Sebbene SSH offra una forte sicurezza per l'accesso remoto e il trasferimento dei dati, non è esente da potenziali rischi. I problemi di sicurezza più comuni includono controlli di accesso configurati in modo errato, software senza patch e gestione delle chiavi non sicura.
Controlli di accesso non configurati correttamente
La sicurezza SSH dipende fortemente dalla corretta configurazione. Se i controlli di accesso sono configurati in modo errato, possono aprire la porta a violazioni della sicurezza o attacchi di forza bruta. Per proteggere l'accesso SSH, gli utenti possono disabilitare l'autenticazione con password e utilizzare invece coppie di chiavi SSH per ridurre il rischio di accessi non autorizzati e potenziali attacchi informatici.
Software SSH non aggiornato
Uno degli aspetti più importanti per mantenere la sicurezza SSH è garantire che sia il server SSH che il software client siano aggiornati frequentemente. Se il software SSH non viene aggiornato regolarmente, i sistemi possono essere esposti a vulnerabilità di sicurezza che i criminali informatici possono sfruttare per ottenere accessi non autorizzati e compromettere i dati. Rimanendo proattivi e aggiornando il software SSH, gli utenti possono ridurre le possibilità di successo di un attacco informatico che danneggia l'infrastruttura SSH.
Gestione delle chiavi non sicura
L'autenticazione basata su chiavi SSH è un vantaggio importante in termini di sicurezza, ma comporta i suoi rischi se le chiavi non vengono gestite correttamente. La compromissione delle chiavi private può portare ad un accesso non autorizzato o a un'escalation dei privilegi. Per mitigare questi rischi, le chiavi private devono essere archiviate in modo sicuro, protette con passphrase complesse e ruotate periodicamente. Gli utenti devono anche evitare di condividere le chiavi private e controllare attentamente la distribuzione delle chiavi.