Expérimentation avec le réseau Tor, un point d'accès Wi-Fi routé sur le réseau anonyme

Le réseau Tor est un projet open source très intéressant qui permet aux utilisateurs d’Internet de surfer de manière anonyme et d’échapper à la censure sur Internet.

Pour résumer, le réseau Tor est constitué de relais, lorsque vous utilisez ce réseau vous passez par plusieurs relais avant d’arriver sur le site Internet que vous souhaitiez visiter.

Certains relais sont là uniquement pour faire transiter l’information et donc ajouter de l’anonymat (comme celui que je fais tourner sur ce serveur) d’autres sont des nœuds de sortie et permettent aux utilisateurs de Tor de surfer sur Internet avec une adresse IP différente, celle du nœud de sortie.

Aujourd’hui la façon la plus sécurisé et facile de surfer sur le réseau Tor est certainement d’utiliser la distribution Linux spécialisé Tails.

Pour utiliser Tor sur son ordinateur sans utiliser Tails, il est également possible d’utiliser Tor browser qui contient le logiciel Tor et une version de Firefox configuré pour utiliser le réseau.

Enfin pour utiliser le réseau anonyme manuellement, il suffit de lancer le logiciel Tor et de configurer le proxy Socks de son navigateur ou n’importe quel client TCP sur le numéro de port d’écoute configuré dans le fichier de configuration torrc.

Tous ça fonctionne très bien, mais je trouve que ça manque d’expérience utilisateur:

  • il faut télécharger le logiciel
  • changer d’OS ou de navigateur
  • vérifier que les clients TCP utilisent le proxy Socks

C’est en constatant ces défauts que j’ai voulu réaliser une solution extrêmement plus simple : un point d’accès Wi-Fi dont le trafic est routé automatiquement sur le réseau Tor.

Ainsi avec sa tablette, son ordinateur, etc.. il suffit de se connecter sur ce SSID et automatiquement tous le trafic passe par Tor.

Ce montage est possible grâce à la fonctionnalité Transparent Proxy.

Ma première idée a été de recycler une Fonera pour réaliser cela, mais c’était sans avoir pensé que Tor ne pourrait pas tourner avec moins d’une dizaine de mégaoctets de RAM !

Voyons maintenant comment il est possible de réaliser ça sur un serveur OpenBSD.

Le réseau Wi-Fi est en 192.168.0.0 et différent de la plage d’IP du LAN du serveur.

D’abord ajouter à torrc les lignes suivantes pour activer la fonctionnalité de transparent proxy et serveur dns de manière à pouvoir surfer sur les hidden services:

VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
DNSPort 9053

Ensuite configurer la carte Wi-Fi en point d’accès:

cat /etc/hostname.ral0 
inet 192.168.0.1 255.255.255.0 NONE -inet6
media autoselect mediaopt hostap
nwid torwifi wpakey torwifi chan 11 up

Fournir le DHCP sur l’accès Wi-Fi :

cat /etc/dhcpd.conf
option  domain-name "wifi.onion";
option  domain-name-servers 192.168.0.1;
subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers 192.168.0.1;
        range 192.168.0.32 192.168.0.127;
}
cat /etc/rc.conf.local | grep dhcp
dhcpd_flags="ral0"

Enfin router le trafic avec PF :

block in quick on $wlan_if inet6
block out quick on $wlan_if inet6
pass in quick on $wlan_if inet proto tcp to !($wlan_if) rdr-to 127.0.0.1 port 9040
pass in quick on $wlan_if inet proto udp to port domain rdr-to 127.0.0.1 port 9053
pass out on $ext_if from 192.168.0.0/24 to any nat-to ($ext_if)

J’ai bloqué ipv6 partout comme Tor ne le supporte pas.

Voilà, bien-sûr cette solution n’est pas aussi anonyme qu’utiliser Tails, car de nombreuses informations peuvent fuiter de votre environnement (cookies par exemple, infos personnels) surtout si vous utilisez un OS propriétaire que vous ne maitrisez pas.

Pour une utilisation simple du genre, surfer sur un hidden service ou éviter la censure d’un site qui vous géolocalise le niveau de protection que propose ce système peut-être suffisant.

Enfin pour expérimenter du code sur le réseau Tor sans avoir à gérer les proxy Socks, c’est parfait :-)