OffshoreVps
Vie privée et droit20 oct. 20268 min de lecturePar l’équipe OffshoreVps

Héberger un site .onion : service caché Tor sur un VPS

Faire tourner un site web comme service onion Tor : installer Tor, lier Nginx à localhost, lire votre adresse .onion, ajouter l’autorisation client et éviter les fuites qui vous exposent.

Un service onion Tor permet aux gens d'accéder à votre site via le réseau Tor sans que ni l'un ni l'autre ne connaisse l'adresse IP de l'autre. Le serveur se connecte vers Tor, il n'a donc besoin d'aucun port entrant ouvert. Ce guide en met un en place sur un VPS Ubuntu, avec Nginx servant un petit site.

Fenêtre de terminal sur un VPS montrant les commandes utilisées pour publier un service onion Tor, à commencer par « sudo apt update »
Le type de commandes que vous exécuterez sur votre serveur dans ce guide.

Ce qu'apporte un service onion

  • Une adresse .onion dérivée d'une clé, donc auto-authentifiée et sans besoin d'autorité de certification.
  • Un chiffrement de bout en bout entre le visiteur et votre serveur, à l'intérieur de Tor.
  • Aucun besoin d'exposer l'adresse IP publique de votre serveur aux visiteurs.

Il ne rend pas le contenu de votre site légal, et il ne masque pas les erreurs commises ailleurs, comme un domaine du web classique pointant vers la même machine.

Étape 1 : installer Tor et Nginx

sudo apt update
sudo apt install -y tor nginx
sudo systemctl enable --now tor

Étape 2 : lier Nginx uniquement à localhost

Le serveur web ne doit pas répondre sur l'interface publique, sinon l'IP du web classique et le site onion deviennent liables. Modifiez la configuration de votre site pour qu'il écoute sur la boucle locale.

server {
    listen 127.0.0.1:8080;
    server_name _;
    root /var/www/onion;
    index index.html;
    server_tokens off;
}
sudo mkdir -p /var/www/onion
echo '<h1>Hello from onion space</h1>' | sudo tee /var/www/onion/index.html
sudo nginx -t && sudo systemctl reload nginx
Les étapes de ce guide dans l’ordre : 1. Ce qu’apporte un service onion ; 2. installer Tor et Nginx ; 3. lier Nginx à localhost uniquement ; 4. déclarer le service caché ; 5. autorisation client facultative ; 6. fermer les fuites courantes
Les étapes de ce guide, dans l’ordre.

Étape 3 : déclarer le service caché

Ajoutez ces lignes à /etc/tor/torrc :

HiddenServiceDir /var/lib/tor/my_site/
HiddenServiceVersion 3
HiddenServicePort 80 127.0.0.1:8080
sudo systemctl restart tor
sudo cat /var/lib/tor/my_site/hostname

La dernière commande affiche votre adresse .onion de 56 caractères. Ouvrez-la dans Tor Browser pour tester. Sauvegardez le dossier /var/lib/tor/my_site/ : la clé qu'il contient est votre adresse, et la perdre signifie une nouvelle adresse.

Étape 4 : autorisation client facultative

Pour un service privé, ajoutez une clé que seuls les visiteurs approuvés détiennent. Créez le fichier /var/lib/tor/my_site/authorized_clients/alice.auth avec une ligne de la forme descriptor:x25519:PUBLIC_KEY, puis rechargez Tor. Les visiteurs sans la clé privée correspondante ne peuvent même pas voir que le service existe.

Étape 5 : colmater les fuites courantes

  • Ne référencez jamais de ressources, polices ou outils d'analyse du web classique depuis vos pages.
  • Rendez les pages d'erreur et les en-têtes génériques, et gardez server_tokens off.
  • Gardez l'horloge du serveur précise ; Tor en a besoin.
  • Bloquez tout avec le pare-feu sauf SSH : sudo ufw default deny incoming, puisque Tor n'a besoin d'aucun port entrant.
  • N'exécutez pas de site du web classique sur le même hôte, sauf si vous les avez totalement séparés.

Lisez les habitudes OpSec des serveurs avant de publier quoi que ce soit, et utilisez la liste de durcissement sur un nouveau serveur.