L'usage du réseau d'anonymisation Tor se
démocratise, notamment grâce au
Tor browser bundle
et à la distribution tails,
qui facilite l'usage de Tor dans de bonnes conditions d'anonymat.
Une autre approche, plus légère pour l'utilisateur est d'anonymiser systématiquement le trafic au niveau du
routeur (wifi ou non), on parle
d'anonymizing middlebox.
C'est l'approche que propose
la brique internet, c'est
également celle que nous allons détailler en utilisant un point d'accès tournant
sous OpenWRT.
Note: cet article n'explique pas le fonctionnement global de Tor, si vous n'êtes pas familier avec, je ne peux
que vous encourager à en comprendre les grandes lignes avant de vous lancer.
Avantages
- Infiniment plus simple pour l'utilisateur (totalement transparent, il suffit
de se connecter au wifi) ;
- tous les services sortent sur internet via tor, on minimise les risques de
fuite (c'est à dire le risque qu'une partie du trafic ne passe pas par Tor), les
service incapables de sortir via Tor sont bloqués.
Inconvénients
- Nécessite de faire confiance à l'administrateur du point d'accès wifi pour
anonymiser le trafic ;
- le trafic n'est pas anonymisé entre le poste « client » (ex: ordinateur
portable) et le point d'accès wifi, il est donc possible de l'espionner
localement
- Par rapport au TBB, votre
navigateur continue à fournir des informations identifiantes au site visité
(cookies, browser-id, plugins...).
Bref, c'est une solution parmi d'autres, qui s'adapte à certains besoins, comme
par exemple celui de partager un accès à internet en offrant à ses « invités »
un certain anonymat et en évitant de
lier ses propres adresses IP publiques à l'activité de ses invités.
Mise en œuvre avec OpenWRT
Nous allons considérer que le routeur sous Openwrt 14.04 est déjà installé et
configuré basiquement, dispose d'un accès à internet (WAN) et émet un réseau wifi.
Le but du jeu va être d'émettre un deuxième réseau
(SSID différent) qui
fera sortir tout trafic via TOR.
Besoins matériels
Il vous faut un routeur supportant OpenWRT, j'utilise pour l'exemple un
TP-Link TL-WR1043ND v2, mais
n'importe quel routeur avec les caractéristiques fera l'affaire :
- RAM : ≥64Mio
- CPU : ≥ Qualcomm Atheros QCA9558@720MHz
- un port USB pour adjoindre une clef USB
Il vous faudra en outre une clef USB d'une taille ≥ 32Mio (donc une vieille récup
fait l'affaire).
Utiliser une clef USB pour le stockage
L'application tor est gourmande en espace, nous allons donc utiliser le
mécanisme d'overlay, d'OpenWRT pour
utiliser une clef USB.
Si vous utilisez déjà une clef USB en overlay, vous pouvez passer cette
étape.
Sur une machine tierce
Brancher la clef usb et la formater (ex: si la clef apparaît comme /dev/sde1):
umount /dev/sde1
mkfs.ext4 /dev/sde1
sync
Puis retirez la clef de l'ordinateur et branchez là sur le routeur.
Sur le routeur OpenWRT
Connectez vous en SSH puis :
opkg update
opkg install kmod-fs-ext4 kmod-usb-storage block-mount
Il est possible que vous voyez une erreur : kmod: failed to insert /lib/modules/3.10.49/ext4.ko
, vous pouvez l'ignorer.
Redémarrez ensuite le routeur et reconnectez vous.
Il nous faut maintenant copier le système actuel sur la clef :
mkdir /mnt/sda1
mount /dev/sda1 /mnt/sda1
tar -C /overlay -cvf - . | tar -C /mnt/sda1 -xf -
umount /mnt/sda1
Puis ajoutez la clef USB de manière permanente, et activez le montage
automatique de l'overlay :
block detect > /etc/config/fstab
uci set fstab.@mount[0].enabled=1
uci set fstab.@mount[0].target=/overlay
Redémarrez le routeur et reconnectez vous, en faisant df -h
, vous devriez
observer que la partition "/" contient un peu plus que les maigres Mio initiaux
:-) (ici, 6.6Gio) :
df -h
Filesystem Size Used Available Use% Mounted on
rootfs 7.0G 21.2M 6.6G 0% /
/dev/root 2.3M 2.3M 0 100% /rom
tmpfs 30.0M 6.7M 23.3M 22% /tmp
/dev/sda1 7.0G 21.2M 6.6G 0% /overlay
overlayfs:/overlay 7.0G 21.2M 6.6G 0% /
tmpfs 512.0K 0 512.0K 0% /dev
Installer et configurer tor
Une fois connecté en ssh au routeur :
opkg update
opkg install tor
cat << 'EOF' > /etc/tor/torrc
User tor
RunAsDaemon 1
PidFile /var/run/tor.pid
DataDirectory /var/lib/tor
# Proxy transparent
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.2.1
DNSPort 9053
DNSListenAddress 192.168.2.1
Log notice file /var/log/tor/notice.log
EOF
Nous ajoutons un nouveau réseau wifi pensez à personnaliser le SSID et à changer
la phrase de passe (ou l'enlever) dans la commande ci-dessous :
cat << 'EOF' >> /etc/config/wireless
# will create wlan0-1
config wifi-iface
option device radio0
option network transtor
option mode ap
option ssid 'Transparent TOR'
option encryption psk2
option key mypassphrase
EOF
Nous ajoutons ensuite un réseau « transtor » interne à OpenWRT
cat << 'EOF' >> /etc/config/network
config interface transtor
option ifname "wlan0"
option proto static
option ipaddr 192.168.2.1
option netmask 255.255.255.0
EOF
cat << 'EOF' >> /etc/config/dhcp
config 'dhcp' 'transtor'
option 'interface' 'transtor'
option 'start' '23'
option 'limit' '250'
option 'leasetime' '12h'
EOF
… En définissons les règles d'accès…
cat << 'EOF' >> /etc/config/firewall
#Allow Tor Bridge incoming for censored users
config rule
option src wan
option proto tcp
option dest_port 443
option target ACCEPT
config zone
option name transtor
option input REJECT
option output ACCEPT
option forward REJECT
option syn_flood 1
option conntrack 1 #this setting is mandatory
# Allow Transparent clients the ability to DHCP an address
# XXX TODO: Audit this to ensure it doesn't leak UDP port 67 to the net!
config rule
option src transtor
option proto udp
option dest_port 67
option target ACCEPT
# Tor transparent-proxy-port (set in /etc/tor/torrc)
config rule
option src transtor
option proto tcp
option dest_port 9040
option target ACCEPT
# Tor DNS-proxy-port (set in /etc/tor/torrc)
config rule
option src transtor
option proto udp
option dest_port 9053
option target ACCEPT
EOF
… Et faisons en sorte que tout le trafic de ce réseau soit redirigé via Tor :
cat << 'EOF' >> /etc/firewall.user
# Redirection rules for Transparent Tor
iptables -t nat -A PREROUTING -i wlan0-1 -p udp --dport 53 -j REDIRECT --to-ports 9053
iptables -t nat -A PREROUTING -i wlan0-1 -p tcp --syn -j REDIRECT --to-ports 9040
EOF
Il ne reste plus qu'à activer et relancer les services nécessaires :
echo '*/5 * * * * ps w|grep /usr/sbin/tor |grep -v grep || /etc/init.d/tor start > /dev/null' > /etc/crontabs/root
wifi
/etc/init.d/network restart
/etc/init.d/firewall reload
/etc/init.d/tor start
/etc/init.d/cron reload
/etc/init.d/tor enable
Utiliser…
Si connectez votre machine sur le bon réseau wifi (ici : « Transparent Tor »),
vous devriez sortir automatiquement par Tor, pour vérifier, vous pouvez vous
rendre sur
https://check.torproject.org/?lang=fr.
… ou déboguer !
La première connexion au réseau Tor peut être un peu longue (2/3 minutes), il
peut donc être normal que tout ne fonctionne pas juste après le démarrage. Vous
pouvez consulter les logs pour en suivre la progression, ou bien pour
diagnostiquer certaines erreurs :
tail -f /var/log/tor/notice.log
Limitations
D'abord, on est dans le cadre des limites de Tor : seuls le DNS et les
protocoles s'appuyant sur TCP
sont supportés,
ensuite, la configuration actuelle du routeur ne prend pas en charge l'IPv6 via
Tor (mais cela
doit être possible).
Enfin, un des clients du routeur wifi utilisant déjà Tor ferait du
tor-via-tor : ça fonctionne mais on risque d'avoir des performances
désastreuses, et c'est un fonctionnement
peu étudié d'un point de vue sécurité .
Au fait…
L'usage de Tor est libre mais l'infrastructure du réseau possède un coût,
n'hésitez pas à donner quelques
deniers à l'association Nos Oignons qui monte
et jardine avec amour quelques nœuds de sortie à grande vitesse pour le réseau Tor.
Références
commentaires