Torificando peticiones DNS

Hace unos días comentábamos la posibilidad de cambiar los servidores DNS de manera aleatoria entre un listado de servidores libres. Podéis ver cómo se hace aquí. Hoy os traemos la posibilidad de que esas peticiones sean anónimas. Los siguientes comandos funcionarán perfectamente en Debian y derivados. Se puede hacer en todas las distribuciones Linux, la lógica es la misma.

Instalación de TOR

Instalaremos tor con el siguiente comando:

apt-get install tor

[Opcional] Instalación de tcpdump

tcpdump nos permitirá escanear nuestras peticiones DNS y comprobar como, al principio, se realizarán, y después, veremos que no se realizan. Primero instalaremos tcpdump y seguidamente lo pondremos a esnifar a través del puerto 53 (puerto en el que se realizan las peticiones DNS por defecto). wlan0 es nues tra interfaz, podríais tener otra distinta.

apt-get install tcpdump 
tcpdump -s 0 -l -n port 53 -i wlan0

Ahora hacemos una petición, podemos abrir el navegador o desde una terminal:

ping elbinario.net

La salida de tcpdump se corta con la combinación de teclas Control + C

Usar el servidor DNS local TorDNS

Tor provee un servidor DNS built-in, el cual puede ser configurado agregando variables de configuración al archivo /etc/tor/torrc
Para editar el fichero podemos usar emacs o el editor que más nos guste pero logeados como root.
Para quienes no tienen emacs u otros editores vamos a optar por usar nano que suele venir instalado en la mayoría de las distribuciones de GNU/Linux. Para abrir  el fichero usaremos el siguiente comando:

nano /etc/tor/torrc

Y nos moveremos hasta el final del fichero donde añadiremos las siguientes 3 lineas:

DNSPort 53
AutomapHostsOnResolve 1
AutomapHostsSuffixes .exit,.onion

Para grabar con nano usaremos Control + O y después pulsaremos Enter.
Para salir de nano usaremos Control + X
Una vez grabados los cambios reiniciaremos el servicio tor para que lea la nueva configuración:

/etc/init.d/tor stop
/etc/init.d/tor start

Si se prefiere se puede hacer en una linea:

service tor restart

Ahora necesitaremos alterar la configuración del fichero /etc/resolv.conf e indicar que ahora las peticiones las va a realizar el servidor DNS 127.0.0.1:53
Podemos hacerlo usando un editor de texto cómo nano o usando la línea de comandos. Ambas opciones cómo root:

 echo "nameserver 127.0.0.1:53" > /etc/resolv.conf

Probando que todo funciona

Ahora hemos de probar que todo esta funcionando y que las peticiones DNS ahora ya van torificadas.
Para ello podemos usar de nuevo el comando de tcpdump y no tendríamos que tener ninguna salida:

tcpdump -s 0 -l -n port 53 -i wlan0

Podemos probar a resolver con dig apuntando a localhost de la siguiente forma:

dig @localhost -p 53 duckduckgo.com

Resolviendo con tor-resolve

Sin necesidad de todo lo anterior con solamente instalar tor tendremos la herramienta tor-resolve disponible para ser usada. Sirve para obtener por ejemplo la IP del servidor de un determinado dominio sin pasar por el servidor DNS. Se presta al scripting.

tor-resolve duckduckgo.com 127.0.0.1:9050

3 Comments

  1. Interesante , ademas con tor va cifrado. Tambien existe dnscrypt ( cifrar los DNS con openSSL 9 , y dnscurve ( cifrarlos con criptografia de curva eliptica , para los que no les guste mucho el SSL … )

  2. A lo mejor no veas este comentario, pero si lo ves espero pueda ayudarme.

    Tengo el problema de que tor-resolve no me funciona o me dice “connection refused” porque al parecer no identifica el socks o me dice que no puede resolver

    root@Shinigami:~# tor-resolve google.com 127.0.0.1.9050
    Jan 07 01:55:55.743 [warn] Couldn’t look up “127.0.0.1.9050”
    Couldn’t parse/resolve address 127.0.0.1.9050

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax