Pas Tout A Fait

Aller au contenu | Aller au menu | Aller à la recherche

Anonymat avec TOR et Privoxy sous Ubuntu

Dernière mise à jour le 07 juin 2011

Tor (The Onion Router) est un réseau anonyme qui a pour but de rendre l'origine d'une connexion indécelable. Grâce à la conception du réseau Tor, l'adresse IP d'origine n'est récupérable ni par le destinataire, ni par les machines qui transmettent les requêtes, permettant ainsi de contourner certaines règles de filtrage.

tor-logo.png


Le réseau Tor

Tor utilise le routage en oignon, qui fait rebondir le trafic entre de multiples nœuds réseaux.

Lors de l'initialisation d'un échange de données par un client A, un circuit parmi les nœuds connus est construit par ce client pour atteindre le destinataire B. Le premier nœud de ce circuit sait que le client A utilise Tor, mais ignore la destination. Le dernier nœud du circuit sait que quelqu'un envoie des données à B, mais il ignore l'origine de ces données. Chacun des nœuds du circuit a uniquement connaissance du nœud qui le précède et le suit, rendant ainsi l'identification du parcours des requêtes et donc l'origine de celle-ci difficilement détectable.

Chaque nœud du réseau dispose d'une clé publique, et ces clés sont utilisées pour chiffrer les données à transmettre une fois la phase de construction du circuit de nœuds achevée. Les données sont ainsi encapsulées sous plusieurs couches de cryptages, d'où le nom de routage en oignon. Chaque nœud déchiffrera une couche lors du transit des données, ces nœuds de transits sont donc incapables de lire les données, mais uniquement d'enlever une couche de cryptage.

On peut grossièrement illustrer ce type de routage avec une procédure semblable appliquée au courrier postal :

1) Vous postez une lettre vers l'adresse d'un premier ami.

2) La lettre arrive chez le premier ami, qui l'ouvre et y trouve une autre lettre, avec l'adresse d'un second ami indiquée. Le premier ami poste cette lettre.

3) La lettre arrive chez le second ami, qui l'ouvre et y trouve une autre lettre, avec l'adresse d'un troisième ami indiquée. Le second ami poste cette lettre. Ce second ami connaît le premier et le troisième ami, mais il n'a pas connaissance de vous, à l'origine du courrier.

4) La lettre arrive chez le troisième ami, qui l'ouvre et y trouve une autre lettre, avec l'adresse d'un quatrième ami indiquée. Le troisième ami poste cette lettre. Ce troisième ami ne connaît que le second et le quatrième.

5) La lettre arrive chez le quatrième ami, qui l'ouvre et y trouve une autre lettre, avec l'adresse d'un cinquième ami indiquée. Le quatrième ami poste cette lettre. Ce quatrième ami ne connaît que le troisième et le cinquième.

6) etc

7) La lettre arrive chez le destinataire

Les circuits de nœuds changent régulièrement, en moyenne un circuit fonctionnel n'est pas utilisé plus de 10 minutes, interdisant ainsi la possibilité d'anticiper le trafic. Tor est donc une excellente solution pour préserver l'anonymat, et résiste de plus assez bien à l'analyse du trafic si celle-ci ne peut travailler sur les deux bouts du circuits.

Ce principe de nœud, et en particulier de nœud de sortie permet de contourner les politiques de filtrage du réseau employées par les FAI ou les gouvernements. Si le nœud de sortie n'est pas filtré, le client à l'origine de la requête aura accès aux données visées, même s'il est situé dans un lieu normalement filtré.

Une présentation très didactique de Tor réalisée par Dominique Pasquier est disponible au format PDF sous licence Art Libre.


Installation

Ce qui suit concerne avant tout la distribution Ubuntu 9.10. Des adaptations seront nécessaire sur d'autres distributions.

Il faut ajouter le dépôt de torproject.org à votre fichier "/etc/apt/sources.list". Ne surtout pas utiliser les paquets disponibles dans les dépôts universe d'Ubuntu, ils ne sont plus maintenus depuis plusieurs mois !

Voici les lignes à ajouter dans le fichier "sources.list" :

## DEPOT TOR
deb http://deb.torproject.org/torproject.org karmic main
# Decommenter la ligne ci-dessous pour activer le dépôt
# de la branche de developpement.
# Cette version comporte plus de bugs, soyez sur dans avoir besoin.
# deb http://deb.torproject.org/torproject.org experimental-karmic main

Il faut ensuite importer la clé du dépôt en exécutant les deux commandes suivantes :

gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -

Et enfin mettre à jour la liste des paquets :

sudo apt-get update

Tor et Privoxy s'installent ensuite avec la commande suivante :

sudo apt-get install tor tor-geoipdb privoxy

Utiliser TOR et Privoxy

Tor écoute par défaut sur l'interface localhost (127.0.0.1) et sur le port TCP 9050.

Tor n'est pas un proxy HTTP, mais SOCKS. C'est pourquoi le coupler avec Privoxy pour simplifier la gestion du trafic est intéressant. Privoxy est lui un proxy HTTP, qui utilise par défaut le port TCP 8118 sur l'interface localhost. Il peut également se charger de retirer les données non anonymes des paquets qui lui sont envoyés.

Le principe ici est de configurer le navigateur pour utiliser uniquement Privoxy, et laisser ce dernier gérer les connexions avec Tor.
Une connexion suivra donc le chemin suivant :

  1. Le navigateur envoie une requête HTTP normal à Privoxy.
  2. Privoxy va alors modeler les paquets pour retirer les informations non anonymes, puis passer les paquets à Tor, en utilisant SOCKS.
  3. Tor construit un circuit, chiffre les données, et les transmet au premier nœud du circuit.
  4. Le premier nœud déchiffre une partie des données et fait suivre les données au nœud suivant dans le circuit.
  5. Le second nœud déchiffre à son tour une partie des données et fait suivre au troisième nœud, etc... jusqu'au nœud appelé "nœud de sortie".
  6. Le nœud de sortie envoie la requête au destinataire.

Et ensuite les paquets de données font le chemin inverse. C'est ainsi que l'anonymat peut être préservé avec Tor, au détriment toutefois de la vitesse du transfert.

Privoxy, pour qu'il puisse dialoguer avec Tor, doit subir une petite édition de son fichier de configuration par défaut. Elle consiste à ajouter la ligne forward-socks4a / localhost:9050 . dans la section 5.2 du fichier /etc/privoxy/config :

#  5.2. forward-socks4, forward-socks4a and forward-socks5
#  ========================================================
#
#  Specifies:
#
#      Through which SOCKS proxy (and optionally to which parent HTTP
#      proxy) specific requests should be routed.
#

[...]

#
#        forward-socks4a   /       socks-gw.example.com:1080    www-cache.isp.example.net:8080 
#        forward           .example.com        .
#      If you also want to be able to reach servers in your local
#      network by using their names, you will need additional exceptions
#      that look like this:
#
#       forward           localhost/      .
forward-socks4a / localhost:9050 .
#
#
#
#  5.3. forwarded-connect-retries

N'oubliez surtout pas le point final de la ligne forward-socks4a / localhost:9050 . !

Il est également possible de couper l'enregistrement des logs (par défaut dans le répertoire /var/log/privoxy) en commentant la ligne suivante (dans la section 2.6) :

logfile logfile

Et enfin de limiter l'accès à Privoxy aux machines sur votre réseau (dans la section 4.7) :

permit-access localhost
permit-access 192.168.0.0/24

Pensez à adapter le ou les réseaux aux vôtres !

Le fichier de configuration de Privoxy est très largement commenté, tout comme celui de Tor. La lecture de ces fichiers, malheureusement pas traduits, est éclairante concernant les options disponibles.

Pour indiquer aux applications d'utiliser Privoxy et donc Tor, il est possible de directement configurer Gnome (ou KDE, etc) pour utiliser Privoxy/Tor à chaque connexion.
Ça n'est pas du tout recommandé.

Il est largement préférable d'utiliser l'anonymat pour quelques situations précises, plutôt que systématiquement. Les raisons sont expliquées un peu plus bas.

FireFox

Firefox dispose de nombreux modules complémentaires pour gérer les proxy, l'interface par défaut étant limitée à un seul choix de configuration, pas très accessible qui plus est.

L'un des plus simple d'emploi dans le cadre de l'utilisation de Tor est TorButton, qui offre la possibilité de configurer l'adresse de votre proxy, voir d'utiliser directement votre Privoxy avec les paramètres par défaut, et d'activer/désactiver l'utilisation du proxy par un simple clic.

tor-torbutton.png

Les options de configuration sont nombreuses, mais les plus cruciales sont mises en valeur et la configuration par défaut peut faire l'affaire pour une utilisation normale.

tor-torbutton-config.png

Si votre gestion des proxy demande plus de finesse, l'excellent module FoxyProxy vous apportera tout le nécessaire.

Instance dédiée de FireFox pour Tor

Une solution idéale, à mon sens, est d'utiliser une instance de Firefox dédiée à Tor. Pour lancer plusieurs instances de Firefox, voir le billet lancer plusieurs instances de Firefox.

Une instance dédiée permet aussi d'utiliser des extensions de sécurisation comme NoScript ou RefControl sans pour autant avoir à les désactiver lors de navigation sans passer par Tor.

Il est aussi possible et recommandé de faire quelques ajustements dans la configuration de FireFox. Pour cela rendez vous sur la page about:config, puis cherchez les lignes suivantes :

network.http.keep-alive.timeout:600

300ms par défaut, mais augmenter cette valeur à 600ms est préférable.

network.http.max-persistent-connections-per-proxy:16

Par défaut à 4 ou 8.

network.http.pipelining:true

Par défaut sur false. Attention, quelques vieux serveurs HTTP/1.0 ne peuvent supporter cette valeur à true dans le navigateur.

network.http.pipelining.maxrequests:8

Pas de défaut.

network.http.proxy.keep-alive:true

Normalement déjà sur true, mais à vérifier.

network.http.proxy.pipelining:true

Par défaut sur false. Attention, ce paramétrage peux provoquer des problèmes avec Privoxy. Si c'est le cas, vous pouvez soit repasser sur false et perdre le bénéfice du pipelining, soit envisager d'utiliser Polipo en remplacement de Privoxy.

Autres programmes

Si le programme que vous voulez rendre anonyme dispose d'une possibilité de configurer un proxy, il suffit d'indiquer l'adresse de Privoxy (127.0.0.1:8118) ou éventuellement directement de Tor (127.0.0.1:9050) si les proxy SOCKS sont acceptés dans ce programme.

Une autre solution plus élégante pour une utilisation ponctuelle consiste à lancer le programme en ligne de commande précédé de torify, ainsi :

torify evolution &
torify filezilla &
torify gajim &

Lancé avec cette commande, les données transmises par le programme passeront par le réseau Tor jusqu'à sa fermeture.

Il est bien sur possible d'utiliser torify dans une console :

torify wget http://pastoutafait.org

Vérifier son anonymat

Le projet Tor a mit en place un outil de vérification en ligne qui indique si vous utilisez le réseau tor ou pas. Il est disponible à l'adresse check.torproject.org.

Tor-usingit.png

Il existe une alternative plus complète sur torcheck.xenobite.eu.

Une autre solution consiste à utiliser un service comme whatismyipaddress.com est de géolocaliser l'adresse IP indiquée. Elle sera probablement bien loin de votre emplacement géographique réel.

Et enfin il existe plusieurs sites d'informations sur votre matériel, comme par exemple anonymat.org/vostraces/index.php/anonymat.org, qui peuvent être utile.


Limites et avertissements

  • L'une des grosses critiques émises à l'encontre de Tor est son utilisation par des réseaux d'individus aux intentions peu louables, en particulier des réseaux pédophiles. Ceci dit, ces personnes n'ont pas eu besoin de Tor pour réaliser leurs actions, et il serait sûrement plus intéressant et humainement enrichissant de chercher à comprendre comment nos sociétés peuvent engendrer des comportements aussi terriblement déviant... Mais c'est un tout autre problème.
  • Tor n'offre pas d'anonymat face à une capacité d'écoute au départ et à l'arrivée d'une requête. Une entité ayant la possibilité d'accéder aux données de connexions des FAI et des hébergeurs peut analyser le trafic et trouver l'origine de celui-ci. Ce type d'écoute est très lourd à mettre en œuvre et n'est pas à la portée de tous. Mais cette limite de Tor le rend vulnérable dans le cadre d'écoute par des agences gouvernementales "BigBrother-Like".
  • L'origine du trafic peut-être très simplement identifiée par de nombreux scripts écrit en Flash, ActiveX, Java, JavaScript ou tout autres langages utilisés sur les serveurs HTTP. Il est indispensable de bloquer l'exécution de ces scripts sur le navigateur utilisant Tor, via TorButton ou encore NoScript, ou d'utiliser un navigateur minimal comme Links ou ELinks.
  • Dans le même genre, les cookies peuvent permettre de vous authentifier si vous retourner sur un site déjà visité. Les supprimer avant et après un passage par Tor est indispensables. Notez que l'extension TorButton sécurise automatiquement les cookies.
  • Et pour pousser le vice, il est possible d'utiliser l'extension RefControl pour paramétrer la valeur de HTTP_Referer, qui peut permettre de suivre votre parcours si on laisse les serveurs transmettre normalement un Referer.
  • Il est possible pour le détenteur d'un nœud de sorti du réseau Tor d'enregistrer les requêtes passant sur son serveur, enregistrements pouvant contenir identifiants et mots de passe. Il est donc très vivement conseillé de ne jamais vérifier vos mails, vous connectez sur un site avec identifiants (Banques / Webmails / Forums / Etc) ou autres activités impliquant identifiants et mots de passe, sans passer par une connexion SSL. Il est parfois avancé que Tor est moins sûr que le réseau TCP/IP classique concernant ce point particulier. Le célèbre hack de Dan Egerstad en novembre 2007 illustre bien ce problème.
  • Tor, de par son architecture réseau "en oignon", est lent. Entre 5 et 10 secondes pour rapatrier une page n'est pas un délai rare. C'est le prix de l'anonymat.

Tor - Because privacy and anonymity matter.

Mettre en place un serveur TOR

La configuration d'un serveur tor fait maintenant l'objet d'un billet spécifique :

Installer un serveur Tor sous Ubuntu
Matthieu Patout

Auteur: Matthieu Patout

Restez au courant de l'actualité et abonnez-vous au Flux RSS

pouet pouet ·  17 août 2009, 14:13

Merci beaucoup pour cet eclaircissement

Galochin Galochin ·  27 novembre 2009, 17:21

Bravo pour l'article et celui sur le serveur tor aussi.
Super pratique, merci !

exslack exslack ·  28 décembre 2009, 07:46

cool :)

somebody somebody ·  04 février 2010, 18:37

je n'arrive pas à avoir la clé publique pour tor, à chaque fois que j'essaye de la telecharger j'obtiens le message suivant :

gpg: requête de la clé 94C09C7F du serveur hkp subkeys.pgp.net
gpg: le délai d'attente du serveur de clés a expiré
gpg: la réception depuis le serveur de clés a échoué: erreur du serveur de clés

j'ai deja essayé avec d'autre serveur pour avoir cette clé mais ça me donne toujours le même resultat ...

Matthieu Patout Matthieu Patout ·  08 février 2010, 15:40

@somebody : Bonjour,

Il semble y avoir un problème avec le serveur de clés utilisé (subkeys.pgp.net), qui est injoignable.

Le mieux dans ce cas est de ce tourner vers un autre serveur, regarde ce billet pour la marche à suivre, il suffit de remplacer dans la commande le nom "subkeys.pgp.net" par un autre nom de serveur de clés.

Someone Someone ·  04 juin 2010, 22:27

Problème avec le dépot tor (lucid):

Il me semble que la meilleur facon d'exposer le problème est une copie (sans les liens de dépot hors sujet à tor) de mon apt-get :

someone@someone-desktop:~$ sudo apt-get update
Réception de : 3 http://deb.torprojet.org lucid Release.gpg 1 021B
Réception de : 4 http://deb.torprojet.org/torproject... lucid/main Translation-fr 1 021B
99% 4 Translation-fr bzip2 0B Attente des fichiers d'en-tête [Attente des bzip2: (stdin) is not a bzip2 file.
Ign http://deb.torprojet.org/torproject... lucid/main Translation-fr
Atteint http://linux.dropbox.com lucid Release.gpg
Réception de : 5 http://deb.torprojet.org lucid Release 1 021B
Ign http://deb.torprojet.org lucid Release
Ign http://linux.dropbox.com/ubuntu/ lucid/main Translation-fr
Atteint http://linux.dropbox.com lucid Release
Réception de : 6 http://deb.torprojet.org lucid/main Packages 1 021B
90% 6 Packages bzip2 0B Attente des fichiers d'en-tête [Attente des fichiebzip2: (stdin) is not a bzip2 file.
Err http://deb.torprojet.org lucid/main Packages

 Le sous-processus /bin/bzip2 a renvoyé un code d'erreur (2)

Atteint http://linux.dropbox.com lucid/main Packages
Ign http://deb.playonlinux.com lucid Release.gpg
Ign http://deb.playonlinux.com/ lucid/main Translation-fr
Réception de : 7 http://deb.playonlinux.com lucid Release 1 722B
Ign http://deb.playonlinux.com lucid/main Packages
Ign http://deb.playonlinux.com lucid/main Packages
Atteint http://deb.playonlinux.com lucid/main Packages
11,1ko réceptionnés en 20s (544o/s)
W: Erreur GPG : http://deb.torprojet.org lucid Release: Les signatures suivantes ne sont pas valables : NODATA 1 NODATA 2
W: Impossible de récupérer http://deb.torprojet.org/torproject... Le sous-processus /bin/bzip2 a renvoyé un code d'erreur (2)

E: Le téléchargement de quelques fichiers d'index a échoué, ils ont été ignorés, ou les anciens ont été utilisés à la place.

Si quelqu'un a une réponse, je la prend avec plaisir :D

risoul risoul ·  18 mars 2011, 10:19

Merci pour la doc.

Pour info une solution plus simple consiste à utiliser le Tor Browser Bundle qui contient tout ce qu'il faut et ne nécessite pas d'installation ou configuration. Le lancement execute automatiquement un navigateur equipé de tor.

https://www.torproject.org/download...

Ajouter un commentaire Fil des commentaires de ce billet

aucune annexe



Voir Aussi

fail2ban_logo.png

Protéger un serveur avec Fail2ban

Parmi les indispensables pour sécuriser un serveur sous GNU/Linux, on trouve le logiciel Fail2ban,...

Lire la suite

torchat-logo.png

Messagerie instantanée sécurisée avec TorChat

Plusieurs solutions existent pour sécuriser les communications de messagerie instantanée. Il s'agit...

Lire la suite