Come utilizzare il tunnel SSH inverso per consentire connessioni esterne al PC

Cum se utilizează tunelul SSH invers pentru a permite conexiuni externe la computer
⏱️ 4 min read

Se sei abbastanza fortunato che il tuo Internet Service Provider (ISP) ti dia un indirizzo IP dedicato, puoi configurare un home server e renderlo disponibile su Internet aggiungendo alcune regole di port forwarding al tuo router. Ma se il tuo ISP ti fa condividere quell’IP con i tuoi vicini, il port forwarding non aiuterà. Altri provider bloccano semplicemente le connessioni in entrata tramite le regole del firewall.

Puoi aggirare tutte queste restrizioni con l’aiuto di un server privato virtuale. Qualunque cosa funzionerà, anche se ha meno di 512 MB di RAM, poiché tutto ciò che deve fare è reindirizzare il traffico di rete. Questo è molto leggero su CPU e RAM. Il server riceverà le connessioni in entrata e le reindirizzerà al tuo computer attraverso quello che viene chiamato un “tunnel SSH inverso”. In questo modo puoi configurare qualsiasi tipo di server domestico, con costi mensili molto ridotti.

Immagina di creare un server NextCloud per caricare / sincronizzare i tuoi file. Ottieni la privacy di avere quei file sul tuo server di casa, quindi puoi acquistare un disco rigido da 6 TB per ottenere tutto lo spazio di cui hai bisogno. Devi solo pagare una bolletta elettrica mensile e meno di $ 5 / mese per un server privato virtuale. È molto più economico della fattura mensile per un server con 6 TB di spazio.

Nota: Funziona solo per reindirizzare il traffico di rete TCP. TCP viene utilizzato da cose come i server web (porta 80 / tcp). UDP viene utilizzato da alcuni (non tutti) server di gioco, ad esempio Counter Strike (porta 27015 / UDP). Il tunneling UDP è possibile, ma con alcuni “hack”, che potrebbero essere l’argomento di un futuro tutorial.

Windows 10 ora ha un client SSH integrato

Non è più necessario utilizzare PuTTY per avviare le connessioni SSH. In effetti, per questo tutorial utilizzerai effettivamente questo client integrato per configurare il tunnel. Leggi il tutorial sul client OpenSSH di Windows 10 se non lo conosci già.

Preparare il server privato virtuale alle connessioni tunnel

Crea un server privato virtuale con il tuo provider preferito, come DigitalOcean, Linode, Vultr o qualsiasi altra cosa tu preferisca. La cosa più importante è scegliere una posizione del server il più vicino possibile a te per ridurre al minimo la latenza di rete. Prova a configurare il server in modo tale da poter accedere direttamente all’account root, preferibilmente con una chiave SSH, poiché è più sicuro. Ciò è necessario se si desidera che il server ascolti le connessioni in arrivo su porte inferiori a 1024, le cosiddette porte privilegiate.

Apri il prompt dei comandi (o un terminale se sei su Linux) e accedi al server tramite SSH.

Modifica le impostazioni del server OpenSSH:

Se non ti sei loggato come root ma come utente normale, dovrai usare questo comando, altrimenti non potrai salvare il file:

Scorri verso il basso fino a trovare una variabile chiamata “GatewayPorts”. La linea potrebbe assomigliare a questa: #GatewayPorts no. Elimina il “#” precedente (per rimuovere il commento) e cambia la riga in GatewayPorts yes.

Se non riesci a trovare la riga, scorri verso il basso fino alla fine e aggiungi la riga tu stesso:

stampa Ctrl + X, quindi premere ye infine Invio per salvare il file.

Ricarica il demone SSH in modo che riprenda la nuova impostazione.

Esci dalla sessione SSH.

Come impostare un tunnel SSH inverso

I parametri del comando sono gli stessi sui sistemi operativi Linux, Windows e persino BSD. La sintassi generale è:

  • remote_port dice al server di reindirizzare le connessioni che arrivano su quella porta.
  • host dice al server a quale indirizzo IP deve essere reindirizzata la connessione. 127.0.0.1 verrà utilizzato qui per reindirizzare al tuo computer.
  • localport indica a quale porta devono essere reindirizzati i pacchetti di dati. Qui, dovresti inserire il numero di porta su cui la tua applicazione, installata sul tuo computer locale, ascolta.

Ad esempio, per inoltrare tutte le connessioni che arrivano sulla porta 80 (al server) e inviarle alla porta 8080 sul tuo computer locale, il comando sarebbe:

Ciò presuppone che tu abbia un server web, come Apache o Nginx, che ascolta sulla porta 8080 sulla tua macchina locale. Ma se Apache / Nginx è in ascolto sulla porta predefinita 80, non ci sono problemi a utilizzare la stessa porta due volte nel comando precedente (poiché si riferiscono alla porta 80 in un server diverso).

A questo punto, se qualcuno inserisce l’indirizzo IP del tuo server privato virtuale nella barra degli indirizzi di un browser, la sua connessione verrebbe reindirizzata e servita dal tuo computer locale.

ssh-reverse-testing-tunnel

Nella foto sopra, a semplice server web per Chrome è stato utilizzato che ascolta sulla porta 8887 per impostazione predefinita. Puoi provare tu stesso questa configurazione installando l’app e quindi utilizzando il comando, come in figura.

Vale la pena ricordare che per mantenere attivo il tunnel, la sessione SSH deve rimanere attiva. Per chiudere il tunnel, digita exit nella finestra del terminale / prompt dei comandi.

Conclusione

Come puoi vedere, non è difficile creare un tunnel SSH inverso, ma proteggere un sito web lo è. Quindi, se scegli di implementare un’idea come un server NextCloud locale, isolalo almeno in una macchina virtuale. In questo modo, se il tuo sito web viene compromesso, almeno il resto del tuo sistema operativo sarà illeso.

E, sai … fai sempre il backup di ciò che non vuoi rischiare di perdere!

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar di Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Potrebbero interessarti anche...

Subscribe
Notificami
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x