Published on 08/01/18 by Tomás Abril
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
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.
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
$ 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.