Il protocollo Secure Shell (SSH) imposta connessioni crittografate remote tra computer. Abilita anche il tunneling.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Cos'è l'autenticazione?
Controllo degli accessi
Sicurezza della forza lavoro che opera da remoto
Sicurezza Zero Trust
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
Il protocollo Secure Shell (SSH) è un metodo che consente di inviare comandi in modo sicuro a un computer su una rete non protetta. SSH utilizza la crittografia per autenticare e crittografare le connessioni tra dispositivi. SSH consente anche il tunneling, o port forwarding, ovvero quando i pacchetti di dati sono in grado di transitare in reti su cui altrimenti non sarebbero in grado di transitare. SSH viene spesso utilizzato per controllare i server da remoto, per la gestione dell'infrastruttura e per il trasferimento di file.
Durante le trasferte, il proprietario di un negozio potrebbe impartire ai propri dipendenti istruzioni da remoto per garantire che il negozio venga gestito senza intoppi mentre è via. Allo stesso modo, SSH consente agli amministratori di gestire server e dispositivi da remoto. I vecchi protocolli di gestione remota come Telnet trasportavano i comandi degli amministratori in una forma che poteva essere vista da chiunque. (Immagina se i dipendenti mettessero il proprietario del negozio in vivavoce durante una chiamata; tutti i clienti nel negozio potrebbero ascoltare istruzioni private). A differenza di Telnet, SSH è sicuro: proprio per questo motivo si chiama "Secure Shell".
Connessioni crittografate remote: SSH imposta una connessione tra il dispositivo di un utente e una macchina remota, spesso un server. Utilizza la crittografia per codificare i dati che transitano nella connessione. Una parte che intercetta potrebbe trovare solo qualcosa di simile a dati statici, casuali che non significano nulla a meno che non vengano decrittografati. (SSH utilizza metodi di crittografia che rendono la decrittografia estremamente complessa per gli estranei).
The ability to tunnel: In networking, tunneling is a method for moving packets across a network using a protocol or path they would not ordinarily be able to use. Tunneling works by wrapping data packets* with additional information — called headers — to change their destination. SSH tunnels use a technique called port forwarding to send packets from one machine to another. SSH port forwarding is explained in more detail below.
*Tutti i dati che transitano in una rete vengono suddivisi in blocchi più piccoli; tali blocchi sono chiamati "pacchetti".
SSH runs on top of the TCP/IP protocol suite — which much of the Internet relies upon. TCP/IP transports and delivers data packets. The use of TCP is one way that SSH is different from other tunneling protocols, some of which use the faster but less-reliable UDP instead.
Queste chiavi "asimmetriche", così chiamate perché hanno valori diversi, consentono anche ai due lati della connessione di negoziare chiavi simmetriche identiche e condivise per un'ulteriore crittografia sul canale. Una volta completata questa negoziazione, le due parti utilizzano le chiavi simmetriche per crittografare i dati che si scambiano.
In una connessione SSH, entrambe le parti hanno una coppia di chiavi pubbliche/private e ciascuna parte autentica l'altra utilizzando queste chiavi. Ciò differenzia SSH da HTTPS, che nella maggior parte delle implementazioni verifica solo l'identità del server Web in una connessione client-server. (Tra le altre differenze, HTTPS di solito non consente al client di accedere alla riga di comando del server e il firewall a volte blocca SSH ma quasi mai blocca HTTPS).
Mentre la crittografia a chiave pubblica autentica i dispositivi connessi in SSH, un computer adeguatamente protetto richiederà comunque l'autenticazione della persona che utilizza SSH. Spesso questo avviene tramite l'immissione di un nome utente e una password.
Una volta completata l'autenticazione, la persona può eseguire i comandi sulla macchina remota come se lo stesse facendo sulla propria macchina locale.
Il port forwarding è come inoltrare un messaggio tra due persone. Roberto può inviare un messaggio ad Alice, che a sua volta lo trasmette a Davide. Allo stesso modo, il port forwarding invia un pacchetto diretto a un indirizzo IP e una porta su una macchina a un indirizzo IP e una porta su una macchina diversa.
Ad esempio, immagina che un amministratore voglia apportare una modifica a un server all'interno di una rete privata che gestisce e che voglia farlo da remoto. Tuttavia, per motivi di sicurezza, quel server riceve pacchetti solo da altri computer all'interno della rete privata. L'amministratore potrebbe invece connettersi a un secondo server all'interno della rete, aperto alla ricezione del traffico Internet, e quindi utilizzare il port forwarding SSH per connettersi al primo server. Dal punto di vista del primo server, i pacchetti di dati dell'amministratore provengono dall'interno della rete privata.
I sistemi operativi Linux e Mac sono dotati di SSH integrato. Nelle macchine Windows, invece, è possibile che sia necessario installare un'applicazione client SSH. Sui computer Mac e Linux, gli utenti possono aprire l'applicazione Terminale e immettere direttamente i comandi SSH.
Tecnicamente, SSH può trasmettere qualsiasi dato arbitrario su una rete e il tunneling SSH può essere impostato per una miriade di scopi. Tuttavia, i casi d'uso SSH più comuni sono:
La porta 22 è la porta predefinita per SSH. A volte, il firewall può bloccare l'accesso a determinate porte sui server dietro il firewall, ma lasciare la porta 22 aperta. SSH è quindi utile per accedere ai server sull'altro lato del firewall: i pacchetti diretti alla porta 22 non vengono bloccati e possono quindi essere inoltrati a qualsiasi altra porta.
Because SSH access typically comes with elevated privileges, such as the ability to install applications on a server or delete, alter, or extract data, SSH access can be harmful in the hands of an attacker — or even a well-intentioned insider. SSH has been used in a number of documented attacks in order to exfiltrate private data, open backdoor routes into a secure network, and gain root access on servers.
SSH can also pass through firewalls that leave port 22 unblocked (as many do), allowing attackers to slip inside of secure networks.
Attackers can also steal SSH keys in order to access private computers and servers. In fact, SSH key management is a major security problem for large organizations, as their many servers may use thousands or even millions of keys, and tracking and updating those keys manually is close to impossible. SSH keys do not expire unless they are explicitly revoked, so once an attacker gains a key, they may have persistent access for months or years.
One of the main differences between SSH and other tunneling protocols is the OSI layer at which they operate. GRE, IP-in-IP, and IPsec are all network layer protocols. As such, they are not aware of ports (a transport layer concept), instead operating between IP addresses. (SSH's exact OSI layer is not strictly defined, but most sources describe it as a layer 7/application layer protocol, like HTTP, FTP, and SMTP.)
Un'altra differenza è l'uso di TCP da parte di SSH. TCP, come descritto sopra, è un protocollo a livello di trasporto e uno dei principali utilizzati su Internet. Un altro protocollo a livello di trasporto ampiamente utilizzato è UDP (User Datagram Protocol). UDP è un protocollo di trasporto "best-effort": l'invio di pacchetti senza garantirne la distribuzione, il che lo rende più veloce ma a volte causa una perdita di pacchetti. Sebbene TCP sia più lento di UDP, garantisce la distribuzione di tutti i pacchetti secondo l'ordine previsto ed è quindi più affidabile.
IPSec utilizza esclusivamente UDP invece di TCP per consentire ai pacchetti IPSec di transitare nel firewall. Pertanto, i tunnel IPSec sono in genere più veloci dei tunnel SSH, ma possono perdere pacchetti in transito. GRE e IP-in-IP possono essere utilizzati con TCP o UDP.
Infine, SSH crittografa solo un'applicazione alla volta, non tutto il traffico da e verso un dispositivo. Ciò differenzia SSH da IPSec, che crittografa tutto il traffico di rete, indipendentemente dall'applicazione da cui proviene. Per questo motivo, SSH non viene utilizzato per configurare le VPN.
Though SSH comes with security risks, many organizations rely on it to remain productive. To mitigate those risks, Cloudflare offers SSH with Access for Infrastructure as part of its SASE platform. This service applies Zero Trust concepts to SSH, giving organizations granular control over how users can connect to their SSH servers. It limits what a user can do, reducing the impact of unauthorized SSH usage by an attacker or an insider.
SSH with Access for Infrastructure also eliminates the need to manage SSH keys (a huge challenge, as described above). Instead organizations can use short-lived SSH certificates issued by a Cloudflare-managed certificate authority (CA).
Cloudflare also allows organizations to monitor and log SSH access and usage, which is essential both for incident recovery and for regulatory compliance
Introduzione
Informazioni sulla gestione degli accessi
Informazioni su Zero Trust