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.

Etape 0 : disposer d’un Tor fonctionnel

Dans le cadre de ce guide, nous supposerons que vous disposez d'un réseau Tor fonctionnel dans 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 savoir où les fichiers de configuration de Tor sont.

Etape 2 : 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.

A 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 d'un système à l'autre. 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/. Ensuite essayez de mettre un fichier dans le répertoire html principal, et assurez vous qu’il s’affiche quand vous accédez au site.

Étape 2 : Configurer votre service Tor Onion

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 être à différents endroits et y apparaître différemment.

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 virtual port (c'est-à-dire le port que les personnes visitant votre Service Onion utiliseront), 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 (qui est l'endroit où le serveur web de l'étape 1 est à l'écoute).

Conseil : Pour éviter de fuiter un service onion sur le réseau local, la bonne pratique est de lancer les services onions sur des sockets Unix plutôt que sur des sockets 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

Etape 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, superbe. Sinon, quelque chose ne va pas. Regardez dans vos fichiers journaux pour 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 dans les répertoires (Voir l'entrée logging FAQ si vous ne savez pas comment activer ou trouver votre fichier de log).

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 : Testez 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 confidentiels. Si vos clés fuient, d'autres personnes peuvent se faire passer pour votre service Onion et le considérer comme 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 configurée à l'Étape 1. Si cela ne fonctionne pas, regardez vos fichiers journaux à la recherche d’indices, et continuez à jouer avec jusque 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. Il est possible de rendre les services onions accessible uniquement après authentification, ainsi seuls les internautes avec une clé privée pourront accéder au service. Plus d'informations sur la documentation Authentification du client.

(Facultatif) Étape 5 : Exécution de plusieurs services Onions

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 en onions 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 onions 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

Par défaut c'est la version 3 des services onions qui est utilisée et elle comporte 56 caractères de long. La version 2 des services onions est obsolète et sera bientôt retirée du réseau Tor, après la sortie de la version 0.4.6.x de Tor, en juillet 2021. Pour plus d'informations, veuillez consulter l'article de blog Onion Service version deprecation timeline.

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 onions. Si vous avez un site web statique, mais que vous n'avez jamais installé Nginx ou Apache, un autre projet à essayer est OnionShare, où l'exécution d'un site onion sera plus facile : guidé par une interface graphique et avec une configuration minimale.