Usarei as configurações padrão do TOR (escutar na porta 9050 de 127.0.0.1).
As únicas configurações que faremos é para que o TOR disponibilize um Server DNS local e apontar o
/etc/resolv.conf para este Server DNS local.
Configura-se o TOR como "resolvedor" de DNS editando
/etc/tor/torrc, adicionando o seguinte conteúdo ao final do arquivo:
#########################################
#Configurando o TOR para resolver DNS.
#Esta dica foi pega de:
#https://elbauldelprogramador.com/logrando-el-anonimato-con-tor-parte-2-proxies-y-servidores-de-dns/
#Além de adicionar essas 3 linhas aqui é preciso apontar o /etc/resolv.conf para 127.0.0.1:53
DNSPort 53
AutomapHostsOnResolve 1
AutomapHostsSuffixes .exit,.onion
#########################################
Observe que a porta 53 pode ser trocada por qualquer outra.
Editamos também
/etc/resolv.conf, apontando-o para o DNS Server local do TOR, assim (como root):
# echo "nameserver 127.0.0.1:53" > /etc/resolv.conf
E "travamos" o "resolv.conf" para que ele não possa ser alterado por um programa que pegue IP via DHCP e troque o server DNS como faz o dhclient.
Assim, como root:
# chattr +i /etc/resolv.conf
Caso queira "destravar" o
/etc/resolv.conf para edições, troque o "+i" por "-i".
A parte de configuração do IPtables é muito, muito importante. É ela que vai impedir os "vazamentos DNS" de aplicações que tentarem fazer a consulta DNS diretamente por um server diferente de 127.0.0.1:53
Importante: da forma que será indicado neste artigo, o DNS será resolvido pelo TOR, apenas se o teu programa "resolvedor de DNS" fizer uso do
/etc/resolv.conf para resolver o DNS, o que o levaria a 127.0.0.1:53, caso contrário, ele será barrado no Firewall que configuraremos.
Force teu sistema/programa (como wget, nmap. etc.) a usar 127.0.0.1:53 como Server DNS, se ele já não o fizer automaticamente com a configuração que fizemos no
/etc/resolv.conf.
Saiba que se o navegador/programa que você usa resolver por si mesmo o DNS em outro server que não o do TOR, sem que o Firewall esteja configurado para bloquear pacotes que tentam sair por fora do TOR, tudo o que você tentar acessar via domínio, via endereço, via link HTTP, vai ser consultado no teu Server DNS externo e ele vai ficar sabendo os endereços que você está tentando resolver. Isso claro, se não estiver usando o Firewall que mostrarei adiante para impedir consultas DNS e quaisquer saídas e entradas de pacotes fora do grupo TOR.
Usando regras de Firewall como essas, se um programa "malandrinho" tentar se conectar à internet diretamente sem passar pelo TOR, ele será barrado antes.
Após a parte do TOR, DNS e Firewall já estarem configuradas e prontas para uso (lembre-se, ative antes) a resolução de DNS pelo TOR já estará funcionando em 127.0.0.1:53 e qualquer aplicação que suporte Proxy Socks já pode ser configurada para usar o TOR em 127.0.0.1:9050 e o DNS em Server em 127.0.0.1:53, mas como nem todo programa suporta Proxys Socks, vamos usar um Proxy local para "converter" socks - HTTP, faremos isso com o Polipo.
Veja a pergunta e respostas no Reddit, sobre resolução de DNS no TOR, é interessante (link nas indicações de fontes do artigo).
Na próxima página, iremos configurar um Firewall com IPtables para permitir apenas pacotes saindo/entrando pelo TOR e configurar o Polipo para fazer a "ponte" HTTP-SOCKS.