A « Tor » et à travers (d’Internet)…
En quelques mots,
Tor (The Onion Router) est un réseau permettant la transmission anonyme de paquets TCP au travers d’internet…
…Au lieu d’emprunter un itinéraire direct entre la source et la destination, les paquets de données suivent une trajectoire aléatoire à travers plusieurs relais…
La suite de ce billet donne une brève introduction à Tor et à son principe de fonctionnement, pour finir par un exemple pratique d’installation et d’utilisation.
Comment ça marche ?
Après interrogation d’un serveur Tor, le client reçoit une liste de noeuds. Il construit alors un chemin aléatoire au travers, de telle sorte que chaque relais ne connaisse que l’adresse de son prédécesseur et de son successeur. Aucun noeud ne connait à lui seul le chemin complet.
Un nouveau chemin sera recalculé régulièrement.
Pour garantir sa confidentialité dès le départ, un paquet tcp est chiffré « en couches » successives avec la clef publique de chaque noeud, en commençant par le dernier…
Lorsque le paquet parcours son chemin, chaque couche de chiffrement sera enlevée par son noeud respectif, jusqu’au dernier, qui transmettra alors le paquet en clair au serveur destinataire. Je vous laisse faire l’analogie avec l’oignon… Même si mon schéma est un peu « carré ».
Il faut être conscient, cependant, que Tor a ses limites : Il gère seulement le transport des paquets TCP et n’assure pas de protection en UDP. Protocole utilisé entre autres pour les requêtes DNS. De plus, une page web peut récolter directement des informations privées (dont l’adresse IP), directement auprès du navigateur, par l’utilisation de Javascript ou la lecture de cookies.
Pour la navigation Web, on va généralement coupler Tor à un serveur mandataire (proxy) tel que privoxy. Ce dernier va faire l’interface entre le navigateur et Tor, tout en fournissant un filtrage anonymisant supplémentaire (gestion des cookies, des accès, suppression des pubs, etc…).
En pratique
Tor est disponible sous licence BSD et facilement installable pour la majorité des distributions Linux et BSD. Il est également disponible pour de nombreuses plateformes telles que Windows, OSX ou Androïd… si si !).
Sous Ubuntu 10.4 :
# echo "deb http://deb.torproject.org/torproject.org lucid main" >
/etc/apt/sources.list.d/tor.list
# gpg --keyserver keys.gnupg.net --recv 886DDD89
# gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -
# apt-get update
# apt-get install tor privoxy
.
Un (tout) petit peu de configuration…
/etc/privoxy/config/
... # Décommenter la ligne suivante pour connecter Privoxy à Tor forward-socks5 / 127.0.0.1:9050 . ... # Il peut être judicieux de commenter la ligne suivante pour # que les logs ne soient pas écrits. # logfile logfile ... |
On redémarre tout ça :
# /etc/init.d/tor restart
# /etc/init.d/privoxy restart
Privoxy doit ensuite être déclaré comme proxy dans les préférences du navigateur ou directement dans les préférences réseaux de Gnome. Dans l’exemple, nous avons bien une installation locale (127.0.0.1) et le port laissé par défaut (8118).
Le premier indice permettant de conclure que la configuration est bonne est la lenteur de la navigation. Le passage au travers du réseau Tor ne se fait pas sans perte de performances…
Le second peut se trouver sur la page : http://www.monip.org, qui ne devrait plus retourner notre adresse IP publique, mais celle du dernier relai traversé.
Au delà de la navigation
Au delà de la navigation web et des services pris en charge par le proxy, TOR est capable de sécuriser les connexions d’autres services grâce à la commande « torify« . Par exemple, la commande suivante permet une connexion ssh à travers le réseau Tor.
$ torify ssh mon.serveur.public.et.fictif.com
Voilà pour un petit tour rapide au pays de Tor… Pour (beaucoup) plus d’informations, je vous conseille de visiter le site officiel du projet et sa page Wikipédia.
Liens :