Creare un tunnel ssh dinamico con openssh (Linux, MacOSX, *BSD, UNIX-based OSes) e relativo use-case per Firefox

Un po’ di tempo fa vi avevo spiegato come creare un tunnel ssh usando PuTTY, il client ssh per eccellenza su Windows.
Ora, visto che ci siamo evoluti e siamo passati ad un sistema operativo che si basa su UNIX (come ad esempio Linux, MacOSX, Solaris, *BSD, o comunque una qualsiasi piattaforma che supporti openssh), vi spiegherò come creare un tunnel ssh usando questi sistemi operativi.

Anche qui dobbiamo prima verificare due requisiti fondamentali:

  • di avere installato sulla macchina client (quella che deve usufruire del tunnel) openssh
  • di avere a disposizione una macchina server che metta a disposizione accesso ssh (openssh-server), che sia raggiungibile sulla porta 22/tcp (o se l’avete cambiata sapete anche su quale porta deve essere raggiungibile) e su cui abbiate utenza.

Se avete bisogno di un tunnel ssh sono certo che sappiate come mettere in piedi queste due cose, e che sappiate già perché vi serve un tunnel ssh.

Bene, continuiamo. Apriamo un terminale e digitiamo: ssh -D 31337 -f -C -q -N user@remoteserver

dove user@remoteserver è il server che mette a disposizione l’accesso ssh e su cui abbiamo utenza con utente user. Vi sarà richiesto di inserire la password per l’utente user, inseritela e il tunnel verrà creato [se avete impostato l’accesso tramite chiavi asimmetriche, non dovrete digitare alcuna password].

Veniamo alla spiegazione dei vari parametri, in modo che possiate customizzare il comportamento del tunnel:

  • -D 31337: imposta un tunnel che faccia il forward verso un indirizzo dinamico, impostato sulla porta specificata come argomento (in questo caso 31337/tcp)
  • -f: forza ssh ad andare in background dopo che abbiamo effettuato il login correttamente
  • -C: abilita la compressione
  • -q: disabilita gli warning dall’output
  • -N: non eseguire alcun comando remoto (visto che dobbiamo solo creare un tunnel)

La creazione del tunnel è finita! Il vostro tunnel è attivo su localhost:31337 e se avete impostato tutto con criterio potete iniziare ad utilizzarlo.

Un use-case interessante è configurare il browser Firefox per la navigazione facendo in modo che tutto il traffico sia routato attraverso il tunnel appena creato. Apriamo Firefox e digitiamo about:config nella barra dell’indirizzo. Digitate proxy nella barra del filtro, e vi comparirà la seguente schermata:

Le voci a cui siamo interessati sono quelle marchiate da un bollino rosso, e dobbiamo modificarle a:

  • network.proxy.no_proxies_on : localhost, 127.0.0.1
  • network.proxy.socks : 127.0.0.1
  • network.proxy.socks_port : 31337. Questa opzione, come avete capito, specifica la porta su cui è attivo il tunnel
  • network.proxy.socks.remote_dns : true. Questa opzione è la più importante, perché permette di fare il forward delle richieste DNS all’host remoto. Consiglio di abilitarla.
  • network.proxy.socks_version : 5
  • network.proxy.type : 1. Questa opzione specifica se utilizzare le impostazioni appena definite per il tunnel (= 1) oppure no (= 0).

Ora il test finale: usando Firefox controllate quale sia il vostro indirizzo IP. Se vi compare l’indirizzo del vostro server remoto, allora il tunnel funziona alla perfezione. Viceversa, c’è qualcosa di sbagliato nella vostra configurazione; ripartite dall’inizio e controllate che tutto sia configurato correttamente.

2 thoughts on “Creare un tunnel ssh dinamico con openssh (Linux, MacOSX, *BSD, UNIX-based OSes) e relativo use-case per Firefox”

  1. Thanx 4 sharing :)

    On Mac osx there is a possible trick
    in about:config of firefox if sigle protocols
    already have default settings…

    You need to check also:

    network.proxy.http -> ” (null)
    network.proxy.http_port -> ‘0’
    network.proxy.fttp -> ” (null)
    network.proxy.fttp_port -> ‘0’

Leave a Reply