L’idea di poter creare un canale virtuale cifrato tra due computer remoti attraverso internet permette di scambiare dati in modo sicuro e apre le porte a numerose applicazioni.
Immaginiamo di dover accedere alla nostra rete privata di casa senza l’uso di VPN da una postazione esterna alla LAN.
Chiameremo server il pc di casa che accetta la connessione dall’esterno sulla porta 22 e client il pc remoto dal quale vogliamo connetterci. Per creare il nostro tunnell SSH non dobbiamo far altro che lanciare il seguente comando dal client:
ssh -N -D 9999 user@server.mydomain.com |
Verrà creato un socket tra client e server, l’opzione -N impedisce che vengano eseguiti comandi remoti mentre l’opzione -D 9999 specifica che vogliamo creare un socket sulla porta 9999 del client. A questo punto abbiamo un canale collegato direttamente al nostro server accessibile dal nostro browser. Per poter navigare come se fossimo sul server è necessario configurare firefox in modo che utilizzi il socket. Abbiamo due opzioni, una consiste nel modificare le preferenze direttamente nel browser, la seconda consiste nell’installare l’estensione Foxy Proxy. Quest’ultimo è comodo per facilitare il passaggio tra navigazione diretta e navigazione tramite socket. Nel primo caso andiamo nelle preferenze di Firefox, selezioniamo la tab Avanzate, poi la tab Rete e clicchiamo su Impostazioni di rete, selezioniamo quindi la voce “Configurazione manuale del proxy“. Scriviamo localhost nella casella Proxy HTTP e 9999 nella casella Porta.
In questo modo possiamo notare che l’IP con cui stiamo navigando non è più quello del client ma finalmente quello del server. Possiamo quindi accedere a tutta la nostra rete LAN come se fossimo davanti al server e con questa modalità possiamo accedere anche alla configurazione del router (per esempio accedendo direttamente all’indirizzo http://192.168.1.1) o a tutte le porte chiuse all’esterno.
Un’altra modalità di tunneling molto utile è quella che permette di aprire una connessione tra il client e il server su una determinata porta in modo da avere sulla macchina locale una porta connessa tramite tunnel direttamente a un’altra porta remota. Questa pratica è utile nel caso in cui il client si trovi all’interno di una rete aziendale con restrizioni e vogliamo connetterci a servizi bloccati per esempio (Windows Messenger, Skype, ICQ, ecc.). Il comando è simile al precedente:
ssh -L 9999:servizio.com:80 user@mysshremote.server.com |
Spiaghiamo brevemente le opzioni del comando.
- -L 9999 indica che vogliamo aprire il bind sulla porta locale 9999 del client.
- servizio.com:80 è l’indirizzo del servizio al quale vogliamo accedere.
- user@mysshremote.server.com è il nostro server remoto al quale abbiamo accesso ssh tramite l’utente user.
Ecco un esempio che ci illustra come aprire il servizio Windows Messenger sulla nostra porta locale 2000:
ssh -L 2000:messenger.hotmail.com:1863 user@mysshremote.server.com |