Home

Published on 08/01/18 by Tomás Abril


Criando um hidden service na rede onion (TOR) com lighttpd no RaspberryPi 3

Tor: Onion Service Protocol

Com o Tor pessoas podem criar vários tipos de serviços como paginas web ou servidores de aplicações sem precisar revelar a sua localização. Através da rede onion usuários se conectam a esses serviços de forma anônima.

Leia mais sobre onion services aqui https://www.torproject.org/docs/onion-services

Vou utilizar um raspberry pi 3 com Raspian Strech.

O meu hidden service será uma página web utilizando o servidor lighttpd. Ver post anterior explicando como ligar o lighttpd.

https://www.torproject.org/docs/tor-onion-service.html.en

Ligando o firewall

Como vamos estar abertos para a internet é uma boa ideia estar com um firewall habilitado no computador.

$ sudo aptitude install ufw

Permitindo que apenas computadores na sua rede local acessem o ssh. Trocar o ip pelo ip da sua rede e a porta pela porta onde o ssh está escutando.

$ sudo ufw allow from 192.168.1.0/24 to any port 2222

Ligar o firewall

$ sudo ufw enable

Visualizando as regras ativas.

$ sudo ufw status verbose

Neste ponto suas regras devem estar parecidas com as da imagem a seguir.

O importante é não permitir conexões externas para não comprometer a segurança do seu computador.

lighttpd

Configure o lighttpd para permitir apenas conexões locais, o tor vai rotear as conexões externas como conexões locais.

No arquivo /etc/lighttpd/lighttpd.conf adicione as seguintes linhas.

$HTTP["remoteip"] !~ "localhost|127.0.0.1|::1" {
    url.access-deny = ( "" )
}
server.dir-listing = "disable"

Verifique se a configuração é valida com

$ lighttpd -t -f /etc/lighttpd/lighttpd.conf

Reinicie o servidor.

$ sudo systemctl restart lighttpd.service

Para testar aponte um navegador para a sua página local.

$ w3m http://localhost:8080

Instalando Tor

$ sudo aptitude install tor tor-arm

tor-arm é um programa para monitoramento de tráfego.

O arquivo de configuração do tor fica em /etc/tor/torrc

Adicione as linhas:

HiddenServiceDir /var/lib/tor/my_hidden_service/
HiddenServicePort 80 localhost:8080
SocksPort 0

Na pasta /var/lib/tor/my_hidden_service/ ficarão salvas as chaves criptográficas do seu serviço. Escolha um local com permissão de leitura e escrita pelo usuário que vai executar o tor.

A linha HiddenServicePort indica que conexões com o seu onion service pela porta 80 serão redirecionadas para localhost:8080. Substitua localhost:8080 pelo endereço e porta em que o lighttpd está servindo sua página web.

SocksPort 0 indica que você não vai se conectar com a rede onion como cliente, para isso utilize o tor browser bundle.

https://www.torproject.org/download/download-easy.html.en

Habilite e reinicie o tor.

$ sudo systemctl enable tor.service
$ sudo systemctl restart tor.service

O tor vai criar suas chaves criptográficas no HiddenServiceDir especificado.

Se a pasta com os arquivos não tiver sido criada procure no log por possíveis erros.

https://www.torproject.org/docs/faq.html.en#Logs

Para encontrar o endereço .onion abra o HiddenServiceDir/hostname

No meu caso.

$ sudo cat /var/lib/tor/my_hidden_service/hostname

No link o5ph2op7bbwpdbgq.onion o meu hidden service pode ser acessado.

ATENÇÃO: Não rodar no mesmo computador um tor relay e um onion service porque seria possível desanonimizar o seu servidor e possivelmente seus usuários.