Installation d'un relais Tor

De La Mouche VII


Cet article est une ébauche, qui sera complétée plus tard.

Merci à Bloudi pour la rédaction de ce tutoriel.

Présentation

Tor est un réseau de tunnels virtuels qui permet d'améliorer l'intimité et la sécurité sur Internet. Il offre aussi la possibilité aux développeurs de créer de nouveaux outils de communication respectueux de la vie privée. Tor fournit les bases grâce auxquelles de multiples applications vont permettre à des organisations et à des individus d'échanger des informations sur les réseaux publics sans compromettre leur intimité.

Site officiel du projet Tor : http://mirror.onionland.org/index.html.fr

Ce tutoriel détaille l'installation complète d'un relais Tor, du début à la fin, avec la configuration des fichiers. Il a été réalisé sur un ordinosaure fonctionnant sous Debian lenny (testing), sans aucun problème. Assez de blabla, place à l'action !

Téléchargement des paquets

On se connecte en tant que root, c'est mieux !

$ su # pour les gens normaux
$ sudo -s # pour les utilisateurs de sudo

On met à jour les listes des paquets pour être sûr de télécharger les dernières versions disponibles sur les dépôts Debian. C'est assez long, surtout si vous utilisez la branche testing de Debian (à cause du téléchargement des fichiers .pdiff). Mais patience, on y est presque !

# aptitude update

Et puis on va afficher la version des paquets qu'on va installer.

# apt-cache policy tor privoxy
tor:
  Installé : (aucun)
  Candidat : 0.1.2.19-3
 Table de version :
     0.1.2.19-3 0
        500 http://ftp.fr.debian.org lenny/main Packages
privoxy:
  Installé : (aucun)
  Candidat : 3.0.8-1
 Table de version :
     3.0.8-1 0
        500 http://ftp.fr.debian.org lenny/main Packages

Dans notre cas, nous allons donc installer tor en version 0.1.2.19-3, et privoxy en version 3.0.8-1 [1].

Puis on installe Tor proprement dit. Les dépendances sont bien faites (merci Debian) et privoxy sera automatiquement installé.

# aptitude install tor

Le téléchargement de tor, de privoxy et des librairies dépendantes se fait. Privoxy et Tor sont lancés automatiquement lors de leur installation, mais leur configuration n'est pas suffisante et nous allons devoir la modifier.

Lors de l'installation, le lancement des deux programmes se fait et est affiché sur l'écran.

Paramétrage de privoxy (3.0.8-1) ...
Starting filtering proxy server: privoxy.
[…]
debian-tor uid check: ok
debian-tor homedir check: ok
Raising maximum number of filedescriptors (ulimit -n) to 8192.
Starting tor daemon: tor...
Jul 03 01:36:50.806 [notice] Tor v0.1.2.19. This is experimental software. Do not rely on it for strong anonymity.
Jul 03 01:36:50.827 [notice] Initialized libevent version 1.3e using method epoll. Good.
Jul 03 01:36:50.829 [notice] Opening Socks listener on 127.0.0.1:9050
done.


Et vous vous demandez ce qu'est le nombre maximum de « filedescriptors » ? Ah ah ! Et bien moi aussi…

Ulimit est un programme qui affecte des limitations en terme de processus, de mémoire utilisable, etc., à des comptes utilisateurs. Ici, le nombre de descripteurs de fichiers ouverts simultanément est limité à 8192.

La page de manuel du programme ulimit : http://linux.die.net/man/1/ulimit

Configuration de Tor

On se rend dans le répertoire de configuration et on effectue une copie du fichier de configuration actuel. On ne sait jamais, ça peut toujours servir. TOUJOURS faire une copie de sauvegarde ! :)

# ls /etc/tor
torrc  tor-tsocks.conf
# cp /etc/tor/torrc /etc/tor/torrc-orig

Une fois la copie faite, on arrête le service tor, pour pouvoir travailler correctement et qu'ensuite, en lançant de nouveau ce service, les paramètres soient directement pris en compte.

# /etc/init.d/tor stop
Stopping tor daemon: ...............................tor.

Puis, on édite ce fameux fichier torrc :

 # vim /etc/tor/torrc

Et on modifie les lignes « Nickname », « ContactInfo » et « ORPort ».

Enfin, quand je dis modifier, il s'agit surtout de les décommenter, en supprimant le caractère dièse ('#') superflu. Vous êtes libre d'utiliser l'éditeur de votre choix ; personnellement j'affectionne particulièrement Vim [2]. Renseigner les champs avec les informations vous concernant permet d'éviter un affichage disant que ce champ n'est pas configuré. Enfin, quand on veut de l'anonymat…

Voici la différence entre les deux fichiers, chez moi :

# diff /etc/tor/torrc /etc/tor/torrc-orig 
87c87
< Nickname torproxy
---
> #Nickname ididnteditheconfig
99c99
< ContactInfo Random Person <identifiant AT domaine dot tld>
---
> #ContactInfo Random Person <nobody AT example dot com>
104c104
< ORPort 9001
---
> #ORPort 9001

Les modifications ont été effectuées avec succès, maintenant il faut relancer Tor et regarder si tout se passe bien :

# /etc/init.d/tor start
Raising maximum number of filedescriptors (ulimit -n) to 8192.
Starting tor daemon: tor...
Jul 03 01:40:39.389 [notice] Tor v0.1.2.19. This is experimental software. Do not rely on it for strong anonymity.
Jul 03 01:40:39.417 [notice] Initialized libevent version 1.3e using method epoll. Good.
Jul 03 01:40:39.419 [notice] Opening OR listener on 0.0.0.0:9001
Jul 03 01:40:39.420 [notice] Opening Socks listener on 127.0.0.1:9050
done.

On vérifie maintenant que Tor est en état de marche :

# netstat -a -A inet|grep 9001
tcp        0      0 192.168.0.250:33428     82.94.251.199:9001      ESTABLISHED
tcp        0      0 192.168.0.250:60661     weltbank.net:9001       ESTABLISHED

ESTABLISHED, c'est bon signe ! Maintenant il faut laisser tourner Tor afin qu'il construise son réseau et qu'il découvre les hôtes à portée. C'est l'heure d'aller boire un café et de fumer une clope[3].

Déja de retour ? Alors on est repartis… On peut jeter un œil au fichier de log construit par Tor (/var/log/tor/log :

# tail /var/log/tor/log
Jul 03 01:37:17.407 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Jul 03 01:37:56.818 [warn] Received http status code 404 ("Not found") from server '168.150.251.13:9092' while fetching "/tor/status/fp/38D4F5FCF7B1023228B895EA56EDE7D5CCDCAF32.z". I'll try again soon.
Jul 03 01:38:36.430 [notice] Interrupt: exiting cleanly.
Jul 03 01:40:39.422 [notice] Tor 0.1.2.19 opening log file.
Jul 03 01:40:43.430 [notice] Your Tor server's identity key fingerprint is 'torproxy XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX'
Jul 03 01:40:49.856 [notice] We now have enough directory information to build circuits.
Jul 03 01:40:52.512 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Jul 03 01:40:52.513 [notice] Now checking whether ORPort xxx.xxx.xxx.xxx:9001 is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
Jul 03 01:40:54.970 [notice] Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
Jul 03 01:41:03.282 [notice] Performing bandwidth self-test...done.

Tor est en état de marche, il ne manque plus qu'a rendre possible l'accès au service depuis l'extérieur, en redirigeant le port 9001 depuis votre routeur vers l'adresse IP locale de votre serveur Tor. Le protocole est TCP.

J'ai ensuite regardé sous quel nom d'utilisateur tor était lancé :

# ps aux|grep tor
109      23430  3.2  9.1  24980 14524 ?        Sl   15:12   0:16 /usr/sbin/tor
root     23449  0.0  0.4   3092   776 pts/1    S+   15:20   0:00 grep tor

Le nom d'utilisateur est ici présenté sous la forme de son uid, et donc le nom complet est situé dans le fichier /etc/passwd.

# cat /etc/passwd|grep 109
debian-tor:x:109:116::/var/lib/tor:/bin/bash

Tout va bien, l'utilisateur debian-tor a été créé lors de l'installation. Le service Tor est donc lancé par cet utilisateur. Au bout d'une heure de fonctionnement, le serveur Tor avait déja une solide base de nœuds dits fiables.

# netstat -a -A inet|grep 9001
tcp        0      0 *:9001                  *:*                     LISTEN     
tcp        0      0 192.168.0.250:9001      s15192785.rootmas:55799 ESTABLISHED
tcp        0      0 192.168.0.250:9001      daddl.fdmbx.net:1146    ESTABLISHED
tcp        0      0 192.168.0.250:9001      moria.csail.mit.e:59901 ESTABLISHED
tcp        0      0 192.168.0.250:9001      india691.server4y:35420 ESTABLISHED
tcp        0      0 192.168.0.250:9001      149.9.0.27:50639        ESTABLISHED
tcp        0      0 192.168.0.250:9001      sd-13452.dedibox.:52409 ESTABLISHED
tcp        0      0 192.168.0.250:9001      r2m5cl.cs.du.edu:43326  ESTABLISHED
tcp        0      0 192.168.0.250:9001      ks359821.kimsufi.:42003 ESTABLISHED
tcp        0      0 192.168.0.250:9001      hal.berlin.ccc.de:54797 ESTABLISHED
tcp        0      1 192.168.0.250:54384     dslb-088-071-047-1:9001 SYN_SENT   
tcp        0      0 192.168.0.250:9001      ides.fscked.org:42415   ESTABLISHED
tcp        0      0 192.168.0.250:9001      moria.csail.mit.e:37073 ESTABLISHED
tcp        0      0 192.168.0.250:9001      tor-anonymizer1.d:40645 TIME_WAIT  
tcp        0      0 192.168.0.250:9001      tor-proxy.loercks:57127 ESTABLISHED
tcp        0      0 192.168.0.250:9001      berlin154.server4:55881 ESTABLISHED
tcp        0      1 192.168.0.250:35576     p5483575D.dip.t-di:9001 SYN_SENT   
tcp        0      0 192.168.0.250:9001      sol-68-39-233-83.:42650 ESTABLISHED
tcp        0      0 192.168.0.250:9001      nettrust1.ucs.ind:38221 ESTABLISHED
tcp        0      0 192.168.0.250:9001      nettrust1.ucs.ind:38221 ESTABLISHED
tcp        0      0 192.168.0.250:9001      tor.noreply.org:49488   ESTABLISHED
tcp        0      0 192.168.0.250:9001      149.9.0.56:35470        ESTABLISHED
tcp        0      0 192.168.0.250:9001      tor.dizum.com:55768     ESTABLISHED
tcp        0      0 192.168.0.250:9001      ks360312.kimsufi.:54403 ESTABLISHED
tcp        0      0 192.168.0.250:9001      proxy.timecastle.:60349 ESTABLISHED
tcp        0      0 192.168.0.250:9001      KHP059137201233.pp:1390 ESTABLISHED

Le relais tor est maintenant disponible ! Evidemment ce tutoriel n'est pas complet, il détaille juste l'installation basique d'un serveur Tor qui sera utilisé en tant que Tor Exit (dernière couche de l'oignon, pour parler métaphoriquement). La suite est à venir !

Documentation

A compléter

  • Possibilité d'utiliser le proxy nouvellement mis en place quelque soit l'endroit où l'on soit
  • Tunnels ssh
  • ACLs
  • Partie client

Notes

  1. À noter que les versions des paquets dans la lenny actuelle diffèrent légèrement, mais cela ne change en rien le reste du tutoriel.
  2. Note du maître des lieux : moi aussi ! Comment ça tout le monde s'en fout ?
  3. Note du maître des lieux : ce site est strictement non-fumeur.