Sécuriser votre navigation Internet depuis un wifi public avec un tunnel SSH

Lors de l’accès à Internet via un wifi public (aéroport, hôtel,…), n’importe quel autre utilisateur du réseau peut potentiellement intercepter les données. Un tunnel SSH permet de chiffrer les données entre votre PC et le serveur SSH, ajoutant un peu de sécurité.

Fonctionnement

Afin de mettre en place ce système, il  faut un serveur dédié avec SSH. Celui-ci peut être hébergé chez vous ou chez un fournisseur externe.

Voici un petit schéma qui explique le fonctionnement d’une connexion Internet à travers un tunnel SSH :

La méthode reste assez simple, si l’on ne rentre pas dans les détails :

  1. On branche le navigateur Internet de son PC en mode proxy sur l’adresse 127.0.0.1:8080
  2. Le trafic est alors acheminé à l’aide d’un tunnel SSH chiffré, vers le serveur
  3. Celui-ci s’occupe ensuite d’aller chercher les informations sur Internet à votre place
  4. Les données reviennent sur la machine cliente par le même chemin

Installation et configuration du serveur

Aucune configuration particulière n’est nécessaire sur le serveur dédié. Normalement, le serveur openSSH est installé et activé sur la plupart des distributions GNU/Linux ou Unix, et la configuration par défaut suffit.

Si jamais ce n’est pas le cas, ouvrez un terminal et lancez les commandes suivantes pour une distribution Red Hat :

yum install sshd
/etc/init.d/sshd start

Configuration d’un client Linux

Le serveur est maintenant opérationnel. Nous allons donc pouvoir y connecter une machine cliente GNU/Linux par le biais d’un tunnel SSH. Pour cela, ouvrez un terminal sur votre ordinateur et lancez la commande suivante :

ssh user@serveur -C -N -D 8080

Cette commande va ouvrir un tunnel et en même temps une session SSH vers le serveur. Il faudra absolument garder celle-ci ouverte pour que le tunnel ne soit pas fermé.

Quelques explications concernant les options utilisées :

  • user@serveur : le compte SSH et l’adresse IP du serveur
  • -C : permet de compresser le trafic et utiliser moins de bande passante
  • -N : ne pas ouvrir de shell
  • -D 8080 : permet de créer le tunnel SSH. Tout le trafic envoyé sur le port local (8080) sera redirigé dans le tunnel vers le serveur et ensuite vers Internet

Configuration d’un client Windows

Sous Windows, le protocole SSH n’est pas disponible par défaut. On peut utiliser le célèbre logiciel Putty. Une fois lancé :

    • Allez dans les menus Connection → SSH → Tunnels
    • Indiquez 8080 dans le champ Source port et chochez les case Dynamic et Auto
    • Cliquez ensuite sur Add :

    • Retournez dans le menu Session et indiquez le compte de connexion et l’adresse du serveur dans le champ host :

  • Pour finir, cliquez sur Open

Configuration du navigateur Internet

Voici comment configurer votre navigateur en mode proxy socks. Avec Firefox, Allez dans le menu Options → Avancé → Réseau → Paramètres et utilisez la configuration suivante :

A la suite de cela, vous devriez pouvoir naviguer sur Internet comme vous le faites normalement.

Info: Les requêtes DNS effectuées par le navigateur ne sont pas redirigées vers le tunnel, et passent donc en clair. Pour que les requêtes DNS soient aussi socks, il faut saisir l’adresse about:config dans Firefox et changer la valeur network.proxy.socks_remote_dns à true.

Testez votre adresse IP, la rapidité de la connexion et résoudre les problèmes de lenteur

Voici quelques commandes bash très pratiques pour tester votre adresse IP et la rapidité de la connexion en passant par le tunnel. Ces dernières sont à utiliser sur la machine cliente Linux (si vous utilisez Windows, il faudra faire autrement) :

$ curl --socks5 127.0.0.1:8080 www.whatismyip.org
$ curl --socks5 127.0.0.1:8080 -w 'Lookup time:\t%{time_namelookup}
\nConnect time:\t%{time_connect}\nTotal time:\t%{time_total}\n' -o /dev/null
-s 109.190.193.51

Lookup time: 0.000
Connect time: 0.001
Total time: 0.035

Et sans tunnel :

$ curl www.whatismyip.org
$ curl -w 'Lookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}
\nTotal time:\t%{time_total}\n' -o /dev/null -s 109.190.193.51

Lookup time: 0.001
Connect time: 0.009
Total time: 0.045

Si l’écart entre une connexion avec et sans tunnel SSH est trop important, la navigation sur Internet sera alors très lente. Si c’est votre cas, pensez à vérifier la configuration DNS du serveur (fichier /etc/resolv.conf) car c’est souvent la cause n°1 de ce genre de problème. Des commandes de test sont disponibles ici.

 

Mais, il est important de garder à l’esprit que si quelqu’un pirate le serveur, il pourra potentiellement capturer l’ensemble de votre trafic en sortie (avec tcpdump par exemple). C’est un peu le revers de la médaille. Il est donc important d’avoir un serveur à jour et de continuer à utiliser vos méthodes traditionnelles de connexions sur les sites sensibles (ex: utilisation de HTTPS).

 

Source : Tux-Planet