Um serviço onion do Tor permite que as pessoas acessem o seu site pela rede Tor sem que nenhum dos lados descubra o IP do outro. O servidor se conecta de dentro para fora ao Tor, então não precisa de nenhuma porta de entrada aberta. Este guia configura um em um VPS Ubuntu, com o Nginx servindo um site pequeno.
O que um serviço onion oferece
- Um endereço
.onionderivado de uma chave, portanto autenticado por si mesmo e sem necessidade de autoridade certificadora. - Criptografia de ponta a ponta entre o visitante e o seu servidor, dentro do Tor.
- Não é preciso expor o endereço IP público do seu servidor aos visitantes.
Isso não torna o conteúdo do seu site legal e não esconde erros que você cometa em outro lugar, como um domínio da web aberta apontando para a mesma máquina.
Etapa 1: instale o Tor e o Nginx
sudo apt update
sudo apt install -y tor nginx
sudo systemctl enable --now tor
Etapa 2: vincule o Nginx apenas ao localhost
O servidor web não deve responder na interface pública, ou o IP da web aberta e o site onion podem ser ligados. Edite a configuração do seu site para que ele escute no 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
Etapa 3: declare o serviço oculto
Adicione estas linhas 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
O último comando exibe o seu endereço .onion de 56 caracteres. Abra-o no Tor Browser para testar. Faça backup da pasta /var/lib/tor/my_site/: a chave dentro dela é o seu endereço, e perdê-la significa um endereço novo.
Etapa 4: autorização de clientes (opcional)
Para um serviço privado, adicione uma chave que só os visitantes aprovados possuam. Crie o arquivo /var/lib/tor/my_site/authorized_clients/alice.auth com uma linha no formato descriptor:x25519:PUBLIC_KEY e depois recarregue o Tor. Visitantes sem a chave privada correspondente nem conseguem ver que o serviço existe.
Etapa 5: feche os vazamentos comuns
- Nunca referencie recursos, fontes ou analytics da web aberta nas suas páginas.
- Deixe as páginas de erro e os cabeçalhos genéricos e mantenha
server_tokens off. - Mantenha o relógio do servidor preciso; o Tor precisa disso.
- Bloqueie tudo no firewall, exceto o SSH:
sudo ufw default deny incoming, já que o Tor não precisa de porta de entrada. - Não rode um site da web aberta no mesmo host, a menos que você os tenha separado completamente.
Leia os hábitos de OpSec de servidor antes de publicar qualquer coisa, e use o checklist de hardening em um servidor novo.