Un servizio onion Tor permette alle persone di raggiungere il tuo sito attraverso la rete Tor senza che nessuna delle due parti conosca l'indirizzo IP dell'altra. Il server si connette in uscita a Tor, quindi non ha bisogno di alcuna porta in ingresso aperta. Questa guida ne configura uno su una VPS Ubuntu, con Nginx che serve un piccolo sito.
Cosa ti offre un servizio onion
- Un indirizzo
.onionderivato da una chiave, quindi autoautenticante e senza bisogno di una certificate authority. - Crittografia end-to-end tra il visitatore e il tuo server, all'interno di Tor.
- Nessuna necessità di esporre ai visitatori l'indirizzo IP pubblico del tuo server.
Non rende legale il contenuto del tuo sito e non nasconde gli errori che commetti altrove, come un dominio clear web che punta alla stessa macchina.
Passo 1: installa Tor e Nginx
sudo apt update
sudo apt install -y tor nginx
sudo systemctl enable --now tor
Passo 2: associa Nginx solo a localhost
Il web server non deve rispondere sull'interfaccia pubblica, altrimenti l'IP clear web e il sito onion diventano collegabili. Modifica la configurazione del sito in modo che ascolti sul loopback.
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
Passo 3: dichiara il servizio nascosto
Aggiungi queste righe a /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
L'ultimo comando stampa il tuo indirizzo .onion di 56 caratteri. Aprilo in Tor Browser per testare. Fai un backup della cartella /var/lib/tor/my_site/: la chiave al suo interno è il tuo indirizzo, e perderla significa avere un nuovo indirizzo.
Passo 4: autorizzazione client opzionale
Per un servizio privato, aggiungi una chiave che solo i visitatori approvati possiedono. Crea il file /var/lib/tor/my_site/authorized_clients/alice.auth con una riga nella forma descriptor:x25519:PUBLIC_KEY, poi ricarica Tor. I visitatori senza la chiave privata corrispondente non possono nemmeno vedere che il servizio esiste.
Passo 5: chiudi le falle più comuni
- Non fare mai riferimento nelle tue pagine a risorse, font o analytics del clear web.
- Rendi generiche le pagine di errore e le intestazioni, e mantieni
server_tokens off. - Mantieni preciso l'orologio del server; Tor ne ha bisogno.
- Blocca con il firewall tutto tranne SSH:
sudo ufw default deny incoming, poiché Tor non ha bisogno di porte in ingresso. - Non eseguire un sito clear web sullo stesso host a meno che tu non li abbia separati completamente.
Leggi le abitudini OpSec dei server prima di pubblicare qualsiasi cosa, e usa la checklist di hardening su un nuovo server.