Ce guide vous montre comment mettre en place un service onion pour votre site web. Pour plus de détails techniques sur le fonctionnement du protocole du service onion, voir notre page sur le protocole du service onion.

Étape 0 : disposer d’un Tor fonctionnel

Dans le cadre de ce guide, nous supposerons que Tor est fonctionnel sur votre machine. Pour installer Tor, veuillez suivre le guide d’installation de Tor. Tor doit être installé et fonctionner correctement pour que ce guide fonctionne. Vous devriez aussi savoir où se trouvent les fichiers de configuration de Tor.

Étape 1 : disposer d’un serveur web fonctionnel

Dans un premier temps, vous devez configurer un serveur web localement, comme Nginx, Apache ou votre serveur web préféré. La mise en place d’un serveur web peut s’avérer complexe. Si vous êtes bloqué ou si vous voulez en faire plus, trouvez un ami qui peut vous aider ou rejoignez notre liste de diffusion tor-onions pour parler avec d’autres opérateurs.

À titre d’exemple, nous allons voir comment mettre en place un site onion avec Nginx et Apache sur Debian. Nous vous recommandons d’installer un nouveau serveur web séparé pour votre service onion, car même si vous en avez déjà installé un, il se peut que vous l’utilisiez (ou souhaitiez l’utiliser plus tard) pour un site web normal.

Sur cette page, les commandes pour gérer le serveur web sont basées sur des systèmes d’exploitation de type Debian et peuvent différer sur d’autres systèmes. Consultez la documentation de votre serveur web et de votre système d’exploitation.

Apache

Apache est disponible dans le dépôt principal de plusieurs distributions Linux et *BSD. Pour installer le paquet apache2 :

$ sudo apt install apache2

Nginx

Nginx est disponible dans le dépôt principal de plusieurs distributions Linux et *BSD. Pour installer le paquet nginx :

$ sudo apt install nginx

Par défaut, le serveur web tournera sur localhost:80 à la fin de l’installation. Si vous obtenez un message d’erreur, quelque chose s’est mal passé et vous ne pouvez pas continuer avant de trouver ce qui ne fonctionne pas.

Une fois votre serveur web configuré, vérifiez qu’il fonctionne : ouvrez votre navigateur et allez sur http://localhost/. Puis, essayez de mettre un fichier dans le répertoire HTML principal, et assurez-vous qu’il s’affiche lorsque vous accédez au site.

Étape 2 : configurer votre service onion Tor

L’étape suivante consiste à ouvrir le fichier de configuration de Tor (torrc) et à effectuer les configurations appropriées pour mettre en place un service onion. Selon votre système d’exploitation et votre installation, votre fichier de configuration Tor peut se trouver à un autre emplacement ou avoir un aspect différent.

Vous devrez ajouter les deux lignes suivantes à votre fichier torrc :

 HiddenServiceDir /var/lib/tor/my-website/
 HiddenServicePort 80 127.0.0.1:80

La ligne HiddenServiceDir spécifie le répertoire qui doit contenir les informations et les clés cryptographiques de votre service onion. Vous serez amené à changer la ligne HiddenServiceDir, pour qu’elle pointe vers un dossier accessible en lecture/écriture par l’utilisateur qui exécutera Tor.

La ligne HiddenServicePort spécifie un port virtuel (c’est-à-dire le port qu’utiliseront les personnes visitant votre service onion), et dans le cas ci-dessus, elle indique que tout trafic entrant sur le port 80 de votre service onion doit être redirigé vers 127.0.0.1:80 (là où le serveur web de l’étape 1 est à l’écoute).

Conseil : une bonne pratique pour éviter qu’un service onion ne fuie sur un réseau local est d’exécuter les services onion sur des sockets Unix plutôt que sur une socket TCP. Vous devrez ajouter les deux lignes suivantes à votre fichier torrc :

HiddenServiceDir /var/lib/tor/my-website/
HiddenServicePort 80 unix:/var/run/tor/my-website.sock

Étape 3 : redémarrer Tor et vérifier le fonctionnement

Maintenant, enregistrez votre torrc et redémarrez Tor.

$ sudo systemctl restart tor

Si Tor redémarre, parfait. Sinon, quelque chose ne va pas. Regardez d’abord dans vos fichiers journaux pour trouver des indices. Il affichera des avertissements ou des messages d’erreur. Cela devrait vous donner une idée de ce qui n’a pas fonctionné. Typiquement, il y a des fautes de frappe dans le torrc ou de mauvaises permissions sur les répertoires (voir l’entrée de la FAQ sur la journalisation si vous ne savez pas comment activer ou trouver votre fichier journal).

Lorsque Tor démarre, il créera automatiquement le répertoire HiddenServiceDir que vous avez spécifié (si nécessaire). Veillez à ce que ce soit le cas.

Étape 4 : tester le fonctionnement de votre service onion

Maintenant, pour obtenir l’adresse de votre service onion, allez dans votre répertoire HiddenServiceDir et trouvez un fichier nommé hostname. Le fichier hostname dans votre répertoire de configuration du service onion contient le nom d’hôte de votre nouveau service onion v3. Les autres fichiers sont les clés de votre service onion ; il est donc impératif qu’ils restent privés. Si vos clés fuient, d’autres personnes peuvent se faire passer pour votre service onion, ce qui le rend compromis, inutile et dangereux à visiter.

Vous pouvez maintenant vous connecter à votre service onion en utilisant le Navigateur Tor, et vous devriez obtenir la page HTML que vous avez mise en place à l’Étape 1. Si cela ne fonctionne pas, regardez vos fichiers journaux à la recherche d’indices, et continuez à jouer avec jusqu’à ce que cela fonctionne.

Il est important de noter qu’un service onion configuré de la sorte sera lisible par toute personne qui connaît ou découvre l’adresse. Vous pouvez exiger une authentification pour les services onion, afin que seuls les utilisateurs disposant d’une clé privée puissent accéder au service. Pour en savoir plus, lisez la documentation sur l’autorisation du client.

(Facultatif) Étape 5 : faire fonctionner plusieurs services onion

Si vous souhaitez transférer plusieurs ports virtuels pour un même service onion, ajoutez simplement plusieurs lignes HiddenServicePort. Si vous souhaitez exécuter plusieurs services onion à partir du même client Tor, ajoutez simplement une autre ligne HiddenServiceDir. Toutes les lignes HiddenServicePort suivantes font référence à cette ligne HiddenServiceDir, jusqu’à ce que vous ajoutiez une autre ligne HiddenServiceDir :

 HiddenServiceDir /var/lib/tor/onion_service/
 HiddenServicePort 80 127.0.0.1:80

 HiddenServiceDir /var/lib/tor/other_onion_service/
 HiddenServicePort 6667 127.0.0.1:6667
 HiddenServicePort 22 127.0.0.1:22

Si vous exécutez plusieurs sites onion sur le même serveur web, n’oubliez pas de modifier le fichier d’hôte virtuel de votre serveur web et d’ajouter l’adresse onion de chaque site web. Par exemple, dans Nginx et en utilisant Tor avec des sockets Unix, la configuration ressemblerait à ceci :

server {
        listen unix:/var/run/tor/my-website.sock;
        server_name <your-onion-address>.onion;
        access_log /var/log/nginx/my-website.log;
        index index.html;
        root /path/to/htdocs;
}

Or in Apache with Tor service listening on port 80:

     <VirtualHost *:80>
       ServerName <your-onion-address.onion>
       DocumentRoot /path/to/htdocs
       ErrorLog ${APACHE_LOG_DIR}/my-website.log
     </VirtualHost>

Étape 6 : conseils de sécurité et autres astuces

La version par défaut des services onion est la version 3 et son adresse contient 56 caractères, sans compter les parties http:// et .onion. La version 2 des services onion est obsolète et n’est plus prise en charge depuis la version 0.4.6.1-alpha de Tor, sortie en 2021. Pour plus d’informations, veuillez lire l’article de blog Calendrier d’abandon des versions de services onion.

Certains opérateurs de sites onion peuvent ne pas vouloir divulguer l’emplacement de leur service onion. Vous devez donc configurer votre serveur web de manière à ce qu’il ne divulgue aucune information sur vous, votre ordinateur ou votre localisation. Ce n’est pas une tâche facile, et ces ressources vous aideront à y parvenir :

Enfin, si vous prévoyez de garder votre service disponible pendant une longue période, vous pouvez faire une copie de sauvegarde du fichier private_key quelque part.

Maintenant qu’un site onion fonctionne, vous pouvez déployer Onion-Location, ou utiliser des outils comme Docker, Heroku, Terraform, Ansible ou stem pour automatiser la gestion de vos services onion. Si vous avez un site web statique, mais que vous n’avez jamais installé Nginx ou Apache, un autre projet à essayer est OnionShare, avec lequel faire fonctionner un site onion sera plus facile : guidé par une interface graphique et avec une configuration minimale.