Tunnel SSH: definizione, aree di applicazione e configurazione

Per accedere a siti web non raggiungibili dalla rete, è possibile utilizzare un tunnel SSH: invece di accedere al sito web direttamente dalla propria rete, con il tunneling SSH si passa attraverso un server SSH.

Server virtuali (VPS) di IONOS

Hosting VPS conveniente e potente per gestire le tue applicazioni personalizzate, con consulente personale e supporto 24/7.

100% storage SSD
Pronto in 55 sec.
Certificato SSL

Cos’è esattamente un tunnel SSH?

Si può immaginare un tunnel SSH proprio come un vero tunnel, come una connessione tra due punti. Il primo di questi punti, il punto di partenza per così dire, è un computer che normalmente si trova in una rete non protetta. La destinazione del tunnel è un server o un indirizzo di rete a cui non si può o non si vuole accedere dalla propria rete. Un tunnel SSH funziona come una connessione tra diversi server e collega le porte TCP di due computer tra loro. In linea di principio, qualsiasi porta TCP può essere inoltrata con il tunneling SSH. Pertanto, questo processo è noto anche come port forwarding o inoltro della porta.

Potete utilizzare qualsiasi server come server SSH. Per esempio, si può usare anche un server SSH sul Raspberry Pi.

Consiglio

Non avete ancora trovato un server adatto? Su IONOS trovate il server cloud giusto per ogni occasione.

Ma cosa “trasporta” esattamente un tunnel SSH? Attraverso di esso, alcuni protocolli TCP possono essere utilizzati in modo sicuro. Questo include, ad esempio, HTTP. Anche SMTP, un importante protocollo per l’invio di e-mail, utilizza il tunneling SSH. Quindi SSH garantisce la sicurezza dei dati trasmessi nel tunnel.

A cosa servono i tunnel SSH?

Esistono vari scenari applicativi per l’inoltro delle porte tramite Secure Shell. Nella maggior parte dei casi, il tunnel SSH viene utilizzato per stabilire una connessione crittografata tra un computer locale, il localhost e un computer remoto. Attraverso questa rete virtuale, è possibile eliminare alcune restrizioni di accesso ai siti web. In questo modo si ha l’impressione di essere nella rete a cui si accede solo con un tunnel SSH. Sebbene questo tipo di applicazione abbia delle somiglianze con una rete privata virtuale (VPN), le due non vanno confuse.

Se trasportate dati da servizi che utilizzano un protocollo non crittografato, potete utilizzare il tunneling SSH per crittografare comunque il traffico di dati. A questo scopo si utilizza il cosiddetto SSH File Transfer Protocol, abbreviato in SFTP. Un tunnel SSH offre anche una maggiore sicurezza quando si naviga su reti estranee, ad esempio negli hotel. Per una sicurezza particolarmente elevata, potete fare affidamento su chiavi SSH per la connessione di rete, che utilizzano una crittografia a chiave pubblica.

Anche il port forwarding è una tecnica che le/gli hacker amano utilizzare. Con il tunneling SSH è possibile creare backdoor nelle reti interne che consentono agli aggressori di accedere ai dati interni facilmente.

Consiglio

Desiderate utilizzare i vantaggi di SSH anche per il vostro sito web? Il pacchetto web hosting di IONOS include un certificato SSL e non vi fa mancare proprio nulla! Se volete semplicemente aggiornare il vostro sito web, IONOS vi offre la possibilità di farlo con un certificato SSL. Per una maggiore sicurezza per il vostro sito web, ad esempio attraverso l’autenticazione a due fattori, utilizzate lo strumento Domain Guard di IONOS.

Utilizzare un tunnel SSH su Linux

Esistono diversi metodi per impostare un tunnel SSH.

Inoltro della porta locale

Probabilmente il metodo più utilizzato è il cosiddetto port forwarding locale. Qui potete accedere alle risorse della rete locale dal vostro computer inoltrando una porta del computer locale a una porta del server SSH. Questa viene a sua volta inoltrata a una porta del computer di destinazione.

Per impostare il port forwarding locale, utilizzate il seguente comando da terminale nei sistemi operativi basati su Unix, come Linux o macOS:

ssh -L porta_locale: indirizzo_remoto: porta_remota username@server.com

Per prima cosa è necessario determinare la porta che si desidera inoltrare (porta_locale). A tale scopo è disponibile qualsiasi numero di porta superiore a 1024. Solo la root ha accesso alle porte con numeri di porta più piccoli, in quanto sono porte privilegiate. Successivamente, dovete inserire l’indirizzo IP del server di destinazione (indirizzo_remoto) e i dati di accesso (porta_remota).

Il tutto diventa più chiaro con un esempio: desiderate connettervi a un server in ufficio, che si trova all’indirizzo 123.234.1.111 nella rete aziendale. Potete anche accedere al server SSH del vostro ufficio con ssh.test.com. Il vostro nome utente è “testuser”. Il comando per impostare il tunnel SSH per la porta 1234 è il seguente:

ssh -L 8888: 123.234.1.111: 1234 Testuser@ssh.test.com

Dopo aver eseguito questo comando, potete accedere al server dell’ufficio tramite la porta 8888. Se supporta anche l’accesso al web, potete accedervi anche tramite

localhost

. Il traffico di dati inviato alla porta 8888 del computer viene ora instradato attraverso il tunnel SSH alla porta 1234 del computer di destinazione.

Inoltro remoto delle porte

La controparte del port forwarding locale è il cosiddetto port forwarding remoto. Qui instradate una porta del server SSH a una porta del computer client. In questo modo è possibile stabilire una connessione con il computer di destinazione, ad esempio il computer locale. Questa forma di port forwarding viene utilizzata soprattutto per consentire a persone esterne di accedere a servizi interni. Il comando per impostare un tunnel SSH remoto nel terminale è il seguente:

ssh -R porta_remota: indirizzo_destinazione: porta_destinazione user@indirizzo_server_ssh

Ad esempio, se desiderate ascoltare la porta con il numero 8080 e inviare i dati alla porta 3000 del computer locale, il comando si presenta come segue:

ssh -R 8080: 127.0.0.1:3000 user@remote.host

Nell’esempio precedente, l’indirizzo del server SSH è remote.host. L’accesso esterno ai dati che state instradando tramite tunnel può ora essere effettuato in un browser richiamando questo stesso indirizzo seguito dalla porta specificata in precedenza:

remote.host:8080

Se riscontrate problemi nell’impostazione del port forwarding remoto, è possibile che dobbiate modificare la configurazione del server SSH. Per impostazione predefinita, il port forwarding remoto è disabilitato. Potete modificare questa impostazione attivando la configurazione GatewayPorts nel file di configurazione del server SSH. A tal fine, aprite il file e impostate la direttiva GatewayPorts su “yes”.

Inoltro dinamico delle porte

Un terzo modo per utilizzare i tunnel SSH è il port forwarding dinamico. Ciò consente di utilizzare un socket sul computer locale che agisce come una sorta di proxy SOCKS. Tutte le applicazioni che utilizzano il proxy SOCKS si collegano al server SSH in questo modo e instradano tutto il traffico attraverso il tunnel. Un uso comune di questo tipo di port forwarding è il tunneling del traffico di un browser web.

Per impostare il port forwarding dinamico, utilizzate un comando da terminale secondo il seguente schema:

ssh -D [indirizzo_ip_locale:]porta_locale user@indirizzo_server_ssh

Se non specificate un indirizzo IP locale, viene selezionato automaticamente l’indirizzo IP 127.0.0.1, cioè il localhost. Ad esempio, se desiderate impostare un tunnel SOCKS per la porta 9090, il comando per un server con l’indirizzo remote.host è il seguente:

ssh -D 9090 -N -f user@remote.host

Dopo aver impostato il proxy SOCKS, dovete configurare di conseguenza le applicazioni che devono utilizzare il proxy.

Utilizzare un tunnel SSH su Windows

I tunnel SSH possono essere impostati anche su Windows. Poiché il terminale è meno importante su questo sistema operativo, esistono strumenti pratici con una propria interfaccia grafica, ad esempio PuTTY. In questo modo l’impostazione di un tunnel SSH è un gioco da ragazzi.

Dopo aver scaricato e installato PuTTY, apritelo. Nel menu di avvio, inserite l’indirizzo IP del server SSH a cui desiderate connettervi alla voce “Hostname”. Quindi navigate fino a “Connection/SSH/Tunnels”. Qui potete specificare la porta di origine e di destinazione nei campi “Source Port” e “Destination”. Potete quindi stabilire la connessione tramite il pulsante “Open” e accedere alla porta inoltrata nel browser come di consueto tramite 127.0.0.1:numero_porta.

Tunnel SSH inverso

Per accedere ai computer con indirizzi IP privati, è necessario un tunnel SSH inverso. Il computer interno, che non può essere raggiunto dall’esterno, deve stabilire un tunnel SSH inverso verso un computer esterno. A differenza dei tunnel SSH già presentati, questo tunnel deve consentire anche le connessioni da computer esterni al computer interno.

Il seguente comando viene utilizzato per impostare un tunnel SSH inverso:

ssh -Nf -R 2222:localhost:22 user@computer.esterno

Il computer esterno può essere collegato al computer interno tramite questo comando:

ssh localhost -p 2222