Ce qu'est réellement un service onion
Un service onion Tor est un serveur qui n'est joignable qu'à travers le réseau Tor, à une adresse se terminant en .onion et dérivée d'une clé cryptographique plutôt qu'attribuée par un registraire. Il n'y a aucune résolution DNS, aucune IP publique dans le moindre enregistrement, et aucun certificat TLS à acheter : l'adresse de 56 caractères est la clé publique du service, si bien que la connexion est authentifiée et chiffrée de bout en bout par construction. Un visiteur utilisant Tor Browser saisit l'adresse ; le réseau organise un point de rencontre chiffré ; les deux parties se parlent sans qu'aucune n'apprenne la localisation de l'autre. Personne au milieu — ni un relais, ni un FAI, ni l'hébergeur — ne voit les deux bouts de la conversation à la fois.
La conséquence qui compte pour l'hébergement est structurelle, pas cosmétique. Un serveur web classique doit écouter sur un port public, ce qui signifie que son adresse est détectable, scannable, et in fine reliable à celui qui paie la facture. Un service onion n'écoute sur rien que l'internet puisse atteindre. Tor sur la machine n'établit que des connexions sortantes, construit des circuits vers une poignée de points d'introduction, et attend. Le service est en ligne et sert du trafic pendant que ss -tlnp ne montre rien lié à une adresse routable. Cette inversion est la seule et unique raison d'en faire tourner un.
Quand c'est le bon outil — et quand ça ne l'est pas
Optez pour un service onion quand l'emplacement de la machine fait partie de ce que vous protégez : un site qui doit rester joignable même si son domaine clearnet est saisi, une boîte de soumission pour des sources ou des chercheurs, un panneau d'administration que vous préférez ne pas exposer du tout à l'internet qui scanne, ou un service dont l'audience utilise déjà Tor et apprécie que vous ne puissiez pas journaliser une IP que vous ne recevez jamais. C'est aussi la réponse honnête quand "dissimuler l'origine" est l'exigence réelle — un reverse proxy devant un serveur clearnet ne fait que déplacer la cible, alors qu'un service onion la supprime.
C'est le mauvais outil quand vos visiteurs ne veulent pas ou ne peuvent pas utiliser Tor, quand vous avez besoin du débit brut et de la latence sous les 100 millisecondes d'un serveur directement joignable, ou quand la découvrabilité est justement l'objectif — une adresse onion n'est pas le genre de chose sur laquelle on tombe depuis un moteur de recherche. Beaucoup d'opérateurs coupent la poire en deux et font tourner les deux : un site normal pour la portée et un service onion pour les utilisateurs qui le souhaitent, servis depuis la même application. Nous couvrons ce schéma plus bas. Rien ici ne remplace le durcissement de la machine elle-même ; si elle est compromise, sa localisation et son contenu fuient quelle que soit la façon dont elle est publiée — traitez donc la checklist de durcissement de la première heure comme un prérequis, pas comme une réflexion après coup.
SP·03Ce que cette configuration révèle, et à qui
Il vaut la peine d'être précis sur le modèle d'anonymat, parce qu'on suppose souvent que "service onion" signifie "intraçable", alors que la réalité est plus spécifique. Les clients n'apprennent jamais l'adresse IP du serveur — cette propriété est solide et c'est bien tout l'enjeu. Votre hébergeur, en revanche, voit toujours une machine sur son réseau établir un flux constant de connexions sortantes chiffrées vers le réseau Tor ; il ne peut voir ni l'adresse onion, ni le contenu, ni les visiteurs, mais il peut voir que la machine parle Tor. Chez un hébergeur grand public lié à votre identité, voilà un fil qu'il vaut la peine de tirer. Sur un VPS offshore payé anonymement et sans nom au dossier, cela ne mène nulle part — ce qui est précisément pourquoi les deux techniques vont de pair.
Les modes de défaillance qui désanonymisent réellement les services onion ne sont presque jamais Tor lui-même. Ce sont l'application qui laisse fuiter une IP réelle dans une page d'erreur, un en-tête, un e-mail qu'elle envoie, ou une requête sortante vers un service d'analytics ou de mise à jour clearnet ; un serveur mal configuré qui révèle son hostname ou son fuseau horaire ; ou une corrélation créée par l'opérateur qui réutilise la même machine, la même clé, ou le même style d'écriture à travers une identité clearnet. La cryptographie tient bon ; c'est la plomberie autour qui fait tomber les gens. Chaque étape ci-dessous est écrite pour garder cette plomberie étanche — lier à localhost, ne rien envoyer en clair vers l'extérieur, et garder l'identité réelle de la machine hors de la machine, voir garder son nom à l'écart d'un serveur.
SP·04Installez un Tor à jour, pas celui fourni par votre distribution
Les distributions figent Tor à la version qui accompagnait leur sortie, et les défenses des services onion évoluent vite — la protection contre le déni de service des points d'introduction, l'authentification client v3 et plusieurs correctifs de stabilité sont tous arrivés dans des versions plus récentes que ce qu'une Debian ou une Ubuntu stable embarque par défaut. Installez depuis le dépôt signé du Tor Project lui-même, pour suivre les versions actuelles et recevoir les mises à jour de sécurité selon son propre calendrier, pas celui de la distribution. L'extrait ci-dessous détecte automatiquement le nom de code de votre version et épingle le dépôt à la clé de signature du projet, si bien qu'un attaquant qui altère le miroir ne peut pas vous livrer un paquet rétrogradé.
Tor tourne sans privilège sous l'utilisateur debian-tor sur Debian et Ubuntu, se place dans un bac à sable, et n'a besoin d'aucun privilège réseau particulier — il compose vers l'extérieur comme n'importe quel client. Il n'y a rien à ouvrir dans le pare-feu pour le service onion lui-même, ce qui est la première bonne surprise de tout l'exercice : votre pare-feu default-deny peut rester exactement aussi strict qu'il l'était.
Liez l'application à localhost, et rien d'autre
Un service onion est une porte d'entrée vers un simple service local — un serveur web, une application, un démon SSH, tout ce qui parle TCP. La règle qui garantit la sécurité de l'ensemble est que ce service local ne doit écouter que sur l'interface de loopback, 127.0.0.1. S'il écoute aussi sur l'IP publique, vous avez discrètement recréé le problème que le service onion était censé résoudre : le contenu devient directement joignable et identifiable, et un scan qui associe votre serveur clearnet à votre contenu onion annule l'anonymat en une seule requête. Liez-vous au loopback, confirmez-le avec ss -tlnp, et faites en sorte que Tor soit la seule chose qui se connecte jamais à ce port.
Comme le trafic entre Tor et votre application reste sur 127.0.0.1, il ne touche jamais le réseau et n'a besoin d'aucun TLS propre — le circuit Tor chiffre déjà tout de bout en bout. Ne mettez pas de certificat auto-signé sur le listener en loopback ; cela ajoute une surface identifiable et n'apporte rien. Gardez l'application ennuyeuse : pas de redirections clearnet, pas de liens absolus du type https://your-domain codés en dur dans les templates, pas de polices ou d'analytics tierces qui feraient sortir le navigateur du visiteur hors de l'onion vers le web ouvert.
Déclarez le service, puis lisez votre adresse
Le service onion tient en trois lignes de torrc : un répertoire où Tor conserve la matière clé, et une association entre un port virtuel de l'adresse onion et le port local sur lequel écoute votre application. Au premier redémarrage, Tor génère une paire de clés Ed25519 dans ce répertoire et écrit le fichier hostname — l'adresse .onion de 56 caractères que vous allez communiquer. Cette adresse est permanente tant que vous conservez la clé. Perdez la clé, et l'adresse disparaît pour toujours ; laissez-la fuiter, et quelqu'un d'autre peut usurper votre service. Traitez le HiddenServiceDir comme les joyaux de la couronne : 0700, appartenant à l'utilisateur Tor, sauvegardé chiffré et hors de la machine.
Deux réglages méritent leur place à côté de cette association. HiddenServiceEnableIntroDoSDefense 1 permet à vos points d'introduction de limiter le débit des inondations de connexions avant qu'elles n'atteignent votre machine, ce qui est ce qui se rapproche le plus d'une protection DDoS pour un service onion. Épingler HiddenServiceVersion 3 rend la version explicite et pérenne. Si le service doit rester privé plutôt que public, l'authentification client v3 la restreint aux détenteurs d'une clé que vous distribuez hors bande — une façon propre de faire tourner un panneau d'administration qui, tout simplement, ne répond à personne sans les identifiants.
Faites-le connaître, faites tourner les deux, et choisissez une adresse mémorable
Si vous faites aussi tourner un site clearnet, signalez la version onion à Tor Browser avec l'en-tête de réponse Onion-Location (ou la balise meta HTML équivalente). Les navigateurs qui prennent en charge onion proposent alors automatiquement le .onion aux visiteurs — c'est la méthode standard qu'utilisent des sites comme les grands journaux ou les moteurs de recherche pour faire connaître le leur. Servir la même application à la fois sur un domaine et sur une adresse onion est la norme, pas un cas exotique : une seule base de code, une seule base de données, deux portes d'entrée, le côté clearnet se trouvant derrière le classique reverse proxy de dissimulation d'origine et le côté onion n'exposant rien du tout.
L'adresse par défaut est une chaîne aléatoire de 56 caractères, sécurisée mais impossible à retenir. Une adresse vanity vous permet de forcer par force brute une clé dont l'encodage base32 commence par un préfixe choisi — quelques caractères lisibles, c'est rapide, mais chaque caractère supplémentaire multiplie le travail par 32, si bien qu'au-delà de sept ou huit lettres cela devient un vrai chantier de calcul. Générez les clés vanity sur une machine locale de confiance, jamais sur le serveur, et déposez la clé obtenue dans le HiddenServiceDir exactement comme vous restaureriez une sauvegarde. Un préfixe reconnaissable désamorce aussi une attaque bien réelle : les clones de phishing qui comptent sur le fait que personne ne lit un mur de caractères aléatoires.
Le maintenir en état : performance, supervision et hygiène de la clé
Une connexion onion traverse six relais au lieu des zéro habituels, donc la latence est plus élevée et le débit plus faible que sur un serveur directement joignable — c'est de la physique, pas une mauvaise configuration, et aucun réglage n'y change rien. Résistez à la tentation des modes à saut unique ou non anonymes pour regagner de la vitesse ; ils sacrifient exactement la propriété pour laquelle vous avez construit tout ceci. Ce que vous pouvez faire, c'est garder Tor à jour, laisser active la défense DoS des points d'introduction, mettre du cache devant un service très fréquenté pour que chaque requête fasse moins de travail, et dimensionner la machine avec de la marge CPU, parce que la cryptographie de Tor n'est pas gratuite. Un modeste VPS offshore à partir de $8.00/mois gère confortablement un site onion typique.
Sur le plan opérationnel, trois habitudes maintiennent un service onion en bonne santé. Surveillez journalctl -u tor@default pour les erreurs de joignabilité et de publication de descripteur, plutôt que de supposer que le silence signifie que tout va bien. Sauvegardez le HiddenServiceDir le jour même où vous le créez et après chaque changement, chiffré et hors de la machine, parce que cette clé est la seule chose que vous ne pouvez pas régénérer. Et gardez propre l'identité opérationnelle de la machine — une clé neuve sur un VPS anonyme flambant neuf ne vaut pas grand-chose si les mêmes habitudes d'opérateur la relient à un vous clearnet. Le service tournera volontiers pendant des années sans qu'on y touche ; la discipline est dans la plomberie autour, pas dans le service lui-même.
Étape par étape
-
01
Partez d'une machine durcie et anonyme
Déployez un VPS offshore — en ligne en environ 15 min — et faites d'abord le travail ennuyeux mais essentiel : un utilisateur sudo nommé, un SSH par clé uniquement, un pare-feu default-deny, et des mises à jour de sécurité automatiques. Le service onion n'ajoute rien à ouvrir dans ce pare-feu, donc une machine verrouillée reste verrouillée. Ne sautez pas cette étape ; une adresse onion devant un serveur compromis ne cache rien.
ssh admin@203.0.113.10 sudo apt update && sudo apt full-upgrade -y # firewall stays default-deny; the onion service needs no inbound port sudo ufw status verbose
-
02
Installez Tor depuis le dépôt du Tor Project
Ajoutez le dépôt signé du projet pour faire tourner un Tor à jour avec les dernières défenses des services onion, puis installez-le. Le nom de code est détecté depuis
/etc/os-release, et le dépôt est épinglé à la clé de signature de Tor, si bien qu'un miroir altéré ne peut pas vous faire rétrograder.sudo apt install -y apt-transport-https wget gpg . /etc/os-release wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc \ | gpg --dearmor | sudo tee /usr/share/keyrings/tor.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/tor.gpg] https://deb.torproject.org/torproject.org $VERSION_CODENAME main" \ | sudo tee /etc/apt/sources.list.d/tor.list sudo apt update && sudo apt install -y tor deb.torproject.org-keyring
-
03
Liez votre service à localhost uniquement
Pointez ce que vous publiez vers l'interface de loopback, et nulle part ailleurs. Ici, nginx sert un site statique sur
127.0.0.1:8080; le même principe s'applique à n'importe quelle application — liez-vous à127.0.0.1, pas à0.0.0.0. Rechargez, puis prouvez avecssque rien n'écoute sur une adresse routable.# /etc/nginx/sites-available/onion.conf server { listen 127.0.0.1:8080; server_name _; root /var/www/onion; index index.html; }Activez-le, rechargez, et confirmez que la liaison est réservée au loopback :
sudo ln -s /etc/nginx/sites-available/onion.conf /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx ss -tlnp | grep 8080 # must show 127.0.0.1:8080, never 0.0.0.0:8080
-
04
Déclarez le service onion dans torrc
Ajoutez le service à
/etc/tor/torrc: un répertoire de clé et une association de port entre le port virtuel 80 de l'onion et votre port local 8080. Activez la défense DoS des points d'introduction et épinglez la version de l'adresse. Puis redémarrez Tor — sur Debian et Ubuntu, l'instance qui tourne esttor@default.# /etc/tor/torrc HiddenServiceDir /var/lib/tor/onion-www/ HiddenServicePort 80 127.0.0.1:8080 HiddenServiceVersion 3 HiddenServiceEnableIntroDoSDefense 1 sudo systemctl restart tor@default
-
05
Lisez l'adresse et verrouillez la clé
Tor a maintenant créé la matière clé et écrit votre adresse. Lisez-la, communiquez-la — et assurez-vous que le répertoire est en
0700et appartient à l'utilisateur Tor, ce que Tor impose mais qu'une restauration négligente peut casser. Le fichierhs_ed25519_secret_keyde ce répertoire est votre identité ; rien d'autre ne l'est.sudo cat /var/lib/tor/onion-www/hostname # example: 2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion sudo ls -l /var/lib/tor/onion-www/ # hostname hs_ed25519_public_key hs_ed25519_secret_key sudo chown -R debian-tor:debian-tor /var/lib/tor/onion-www sudo chmod 700 /var/lib/tor/onion-www
-
06
Testez-le via Tor, puis annoncez-le
Vérifiez le service depuis une machine sur laquelle Tor tourne, en utilisant
torsockspour que la requête passe par le réseau plutôt que par le clearnet. Une fois qu'il répond, orientez éventuellement les visiteurs clearnet vers la version onion avec un en-têteOnion-Locationsur votre site normal.# from any box running tor: torsocks curl -sSI http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion/ | head # advertise the onion from your clearnet nginx (inside the https server block): add_header Onion-Location "http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion$request_uri";
-
07
Sauvegardez la clé et rédigez le runbook
L'adresse vit et meurt avec le répertoire de la clé. Archivez-le dès qu'il existe, déplacez l'archive hors de la machine vers un stockage chiffré, et notez que le restaurer n'importe où reproduit exactement la même adresse
.onion. Notez ensuite les deux commandes dont vous aurez réellement besoin dans six mois — où se trouve la clé et comment vérifier l'état de santé — parce que le service va tourner sans qu'on y touche si longtemps que vous allez oublier.sudo tar czf onion-www-key.tar.gz -C /var/lib/tor onion-www # copy onion-www-key.tar.gz to encrypted off-box storage, then delete the local copy # health check any time: sudo systemctl status tor@default sudo journalctl -u tor@default --since "1 hour ago" | grep -i "onion\|error"


