En milieu hostile — victime de censure ou plus bêtement connecté depuis un wifi public, un hôtel, etc. — ou par volonté de ne pas trop laisser les sites consultés vous suivre géographiquement, il est préférable de pouvoir utiliser un proxy. Dans le cas qui nous intéresse, nous allons utiliser un tunnel SSH en tant que proxy SOCKS local pour le navigateur Mozilla Firefox. C’est super simple, il suffit d’avoir un compte SSH qui traîne. Pour la suite de l’exercice, ce compte SSH sera nommé “tunnel“.
Ouvrir le tunnel
Pour cela, rien de plus simple, tu prends ta ligne de commande et tu tapes :
~$ ssh -2NfCT -D 8080 tunnel@example.org
Avec cette commande tu tu connectes en tant qu’utilisateur ‘tunnel‘ sur la machine ‘example.org‘ et le tunnel est accessible en local sur le port 8080. Pour vérifier que le tunnel soit bien là :
~$ netstat -apnt (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name […] tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 4464/ssh […]
Nous sommes content, il y a bien SSH sur le port 8080.
Vérifier notre IP
Avant d’utiliser le proxy, nous allons vérifier notre adresse IP publique. Car une fois que le navigateur sera configuré pour utiliser le proxy, elle devra être différente et correspondre à l’adresse IP du serveur SSH utilisé.
Il existe une foule de service pour découvrir son adresse IP, mais je vais utiliser le mien : ipso.me. J’obtiens donc :
Configurer Firefox pour utiliser le proxy SOCKS
Dans Firefox, ouvrir le menu “Edit > Preferences” et dans la fenêtre de dialogue choisir l’onglet “Advanced” puis “Network” et finalement le bouton “Settings” :
Choisir l’option “Manual proxy configuration”, cela active toute une série de champs de saisies. Dans le champ “SOCKS Host” y mettre “127.0.0.1”, notre adresse de loopback (à adapter selon configuration) et dans le champ “Port” y mettre “8080” qui est le port d’écoute du tunnel. Ensuite bien s’assurer que “SOCKS v5” est sélectionné, ainsi :
Tu penses en avoir fini, mais non, il manque le dernier détail qui tue : proxifier les requêtes DNS. En effet, sur Firefox elles ne passent pas par défaut via le proxy SOCKS. Il parait que d’autres navigateurs le font. Mais pour Firefox, il faut lui forcer la main. Pour cela, ouvrir (1) “about:config” (saisir “about:config” dans la barre d’adresse) puis rechercher (2) l’entrée “network.proxy.socks_remote_dns” qui est à “false” par défaut. Double cliquer (3) sur la ligne correspondante pour passer la valeur à “true” :
Vérifier
Tu retournes sur ton site préféré pour découvrir ton adresse IP et voilà :
Tout est pour le mieux dans le meilleur des mondes.
Note : Il n’y a pas que Firefox dans la vie. Pour lancer Chromium en mode incognito et pour qu’il utilise le proxy SOCKS sans fuite DNS, d’après cette page du site chromium.org il faut faire ainsi :
~$ chromium-browser --incognito --proxy-server="socks5://127.0.0.1:8080" --host-resolver-rules="MAP * 0.0.0.0"
Article qui m’est super utile, merci :)
5 ans plus tard particulièrement utile,
après une mise à jour vers FF59 l’entrée sockshost à “localhost” ne fonctionne plus, il faut mettre “127.0.0.1”
Merci Bruno