Le réseau Tor permet chaque jour à des milliers de personnes à travers le monde d’échapper à des régimes autoritaires qui cherchent à contrôler l’informatique en contrôlant Internet. Ce réseau fonctionne de façon décentralisée afin que personne ne puisse en prendre le contrôle et des bénévoles participent à son fonctionnement en installant le logiciel réseau pour partager leur bande passante.
Prérequis avant de commencer
Pour participer efficacement au réseau Tor en proposant un noeud qui améliorera la navigation des utilisateurs, le serveur sur lequel vous allez installer le programme doit respecter certaines contraintes dont les principales sont :
- Fonctionner 24 heures sur 24
- Avoir une adresse IP fixe
- Disposer d’une bande passante assez importante
- Exécuter la dernière version du logiciel Tor
Si ces trois règles ne sont pas respectées, votre noeud pourra toujours fonctionner toutefois, comme le relais ne sera pas bien noté, il sera très peu utilisé en dehors de vous.
Installation de Tor
Pour commencer, installons le gestionnaire de paquet pour les dépôts https si ce n’est pas déjà fait.
sudo apt install apt-transport-https
Comme évoquer en introduction la mise en place d’un relais Tor nécessite d’utiliser constamment la dernière version. C’est pourquoi nous allons ajouter les dépôts officiels du projet pour nous assurer d’avoir la dernière version stable installée en consultant la documentation officielle.
Lancez la commande suivante pour ajouter les informations des dépôts :
sudo sh -c 'echo "deb [arch = amd64] https://deb.torproject.org/torproject.org $ (lsb_release -sc) main" >> /etc/apt/sources.list.d/tor-project .elenco'
Pour nous assurer de l’authenticité des paquets fournis par la nouvelle source, nous devons ajouter ses clés GPG.
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo gpg --dearmor | sudo tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null
Il faut maintenant mettre à jour le gestionnaire de paquet puis installer Tor et ses dépendances.
sudo apt update && sudo apt install tor ntp deb.torproject.org-keyring
Configuration du relais
La configuration du relais se fait depuis le fichier /etc/tor/torrc que nous allons éditer pour définir les paramètres suivants :
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 127.0.0.1
DNSPort 53
DNSListenAddress 127.0.0.1
RelayBandwidthRate 5120 KB # Throttle traffic to 5120KB/s
RelayBandwidthBurst 8192 KB # But allow bursts up to 8192KB/s
Nickname NODENAME
Log notice file /var/log/tor/notices.log
ExitPolicy reject *:* # no exits allowed
Renseignez le nom de votre noeud grâce au paramètre Nickname. Ce paramètre n’est pas obligatoire et peut être retiré si vous souhaitez ne pas définir de nom.
Démarrage du noeud
Une fois que tout est configuré correctement, démarrez votre noeud comme n’importe quel service
sudo service tor start
Si vous rencontrez des difficultés au démarrage, vous pouvez consulter le fichier de log pour essayer de résoudre le problème.
cat /var/log/tor/notices.log
Notation de votre relais et son utilisation
Comme évoqué au début de cet article, votre noeud sera noté par le réseau pour déterminer sa fiabilité et son utilisation. Sans rentrer dans les détails (disponibles sur le blog officiel), gardez à l’esprit que votre relais passera par une phase de test avant d’être utilisé de plus en plus par le réseau comme le montre le graphique ci-dessous tiré de la documentation officielle.
Les noeuds de sortie
Le paramètre ExitPolicy permet d’avoir un relais qui fonctionne sans permettre d’être utilisé comme noeud de sortie. Les noeuds de sortie permettent aux utilisateurs de sortir de Tor pour aller sur des sites web classiques ou interroger un serveur de mail.
En évitant d’être un relais de sortie, vous évitez de potentiels soucis, car en France vous avez la responsabilité de ce que vous hébergez. Ainsi, si vous permettez aux utilisateurs d’utiliser votre serveur pour aller sur le web classique et qu’ils font des tentatives de piratage, c’est votre IP qui sera visible et vous devez vous expliquer…
Après, rien ne vous empêche de retirer cette ligne et de laisser vivre votre relais !
Configuration du parefeu
Nous allons maintenant créer un script pour configurer iptables.
sudo mkdir /etc/iptables/
sudo nano /etc/iptables/tor.sh
Maintenant copiez-collez le contenu ci-dessous dans votre script :
### BEGIN INIT INFO
# Provides: transparentproxy
# Required-Start: $local_fs $syslog $remote_fs dbus
# Required-Stop: $local_fs $syslog $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start transparentproxy
### END INIT INFO
#!/bin/sh
### set variables
#destinations you don’t want routed through Tor
_non_tor="192.168.1.0/24 192.168.0.0/24"
#the UID that Tor runs as (varies from system to system)
_tor_uid="136"
#Tor’s TransPort
_trans_port="9040"
### flush iptables
iptables -F
iptables -t nat -F
### set iptables *nat
iptables -t nat -A OUTPUT -m owner --uid-owner $_tor_uid -j RETURN
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 53
#allow clearnet access for hosts in $_non_tor
for _clearnet in $_non_tor 127.0.0.0/9 127.128.0.0/10; do
iptables -t nat -A OUTPUT -d $_clearnet -j RETURN
done
#redirect all other output to Tor’s TransPort
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $_trans_port
### set iptables *filter
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#allow clearnet access for hosts in $_non_tor
for _clearnet in $_non_tor 127.0.0.0/8; do
iptables -A OUTPUT -d $_clearnet -j ACCEPT
done
#allow only Tor output
iptables -A OUTPUT -m owner --uid-owner $_tor_uid -j ACCEPT
iptables -A OUTPUT -j REJECT
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
Il ne vous reste plus qu’à lancer le script pour effectuer les changements dans iptables.
sudo sh /etc/iptables/tor.sh
Attention ! Il arrive parfois que l’identifiant de l’utilisateur défini dans la variable “_tor_uid” ne soit pas le bon. Pensez à vérifier (cat /etc/passwd) pour modifier puis relancer le script avec la bonne valeur.
Note : pensez à rendre ces règles persistantes au redémarrage du serveur.
Statistiques de son relais
Si vous avez défini un nom à votre noeud dans le fichier de configuration, vous allez pouvoir le retrouver en entrant ce nom sinon indiquez simplement l’adresse IP dans le formulaire de recherche de cette page : https://metrics.torproject.org/rs.html
Vous pourrez alors vérifier que votre relais est bien en fonction, qu’il est disponible depuis le reste du réseau et consulter un graphique montrant son utilisation.
Redémarrage automatique en cas de problème
Comme nous l’avons mentionné en introduction, un relais Tor ne sera utile au réseau qu’à la condition d’être en permanence actif. Il faut donc penser à s’assurer que le relais sera relancé au redémarrage du serveur :
sudo update-rc.d tor enable