En otro articulo ya vimos como centralizar todas las peticiones DNS, pero al final se accedía a un servidor de terceros, por lo tanto el aumento en seguridad era bajo. Como alternativa tenemos DNSCrypt pero también se acaba empleando un DNS de terceros. Por suerte tenemos otra opción, que es emplear TOR para resolver nombres. Al instalar TOR como servicio es muy sencillo configurar para resolver nombres, pero hay que tener en cuenta que este es muy lento en comparación a un servidor tradicional, pero para eso podemos usar dnsmasq que nos ayudara a cachear las peticiones. Esta vez no usaremos bind9 ya que da problemas para usar un servidor local y acaba haciendo llamadas a DNS externos (cosa que nunca queremos que pase).
Para empezar instalamos TOR y dnsmasq:
1 |
# apt install dnsmasq tor |
Configuramos TOR para actuar como servidor DNS:
1 |
# nano /etc/tor/torrc |
Al final del fichero agregamos las siguientes lineas:
1 2 3 |
DNSPort 9053 AutomapHostsOnResolve 1 AutomapHostsSuffixes .exit,.onion |
Ahora configuramos dnsmasq:
1 |
# nano /etc/dnsmasq.conf |
Agregamos las lineas:
1 2 |
no-resolv #Solo si queremos evitar leer del fichero /etc/hosts server=127.0.0.1#9053 |
Ademas le debemos decir por donde escuchara, debemos agregar la 127.0.0.1 y la IP de la red local, para eso podemos usar este comando:
1 |
# echo "listen-address=127.0.0.1,XX.XX.XX.XX" >> /etc/dnsmasq.conf |
Debemos cambiar las "X" por la IP del server, mejor si se trata de una IP fija y siempre funcionara.
Con estas 2 sencillas cosas tenemos todo configurado, ahora simplemente (re)iniciamos los servicios y los agregamos al inicio:
1 2 3 4 |
# systemctl start tor # systemctl start dnsmasq # systemctl enable tor # systemctl enable dnsmasq |
Ya debería de funcionar, ahora podemos hacer unas cuantas pruebas para ver si dnsmasq realmente usa TOR, para ello vamos a usar dig para realizar las peticiones y tcpdump para ver si hay alguna fuga.
1 |
# apt install tcpdump bind-tools |
Ahora lanzamos en una terminal tcpdump y en otra usaremos dig:
1 |
# tcpdump -s 0 -l -n port 53 -i eth0 |
Con dig podemos hacer un par de peticiones para ver que todo funciona correctamente:
1 2 |
$ dig @localhost www.lignux.com $ dig @8.8.8.8 www.lignux.com |
Cuando hagamos una petición a nuestro servidor no deberíamos de ver trafico, pero al hacer una petición a un DNS externo si veremos mucho trafico, con esto nos aseguramos que efectivamente es TOR quien nos resuelve los nombres.
Para emplear este DNS por defecto tenemos varias opciones, como configurar el DHCP para que de este como primera opción o lo agregamos manualmente, podemos editar directamente el fichero "/etc/network/interfaces" y agregamos al final:
1 |
dns-nameservers IPdelServer |
Cada uno debe cambiar por la propia, en mi caso queda así el fichero:
1 2 3 |
auto eth0 iface eth0 inet dhcp dns-nameservers 192.168.1.254 |
Por suerte dnsmasq hace el uso del fichero "/etc/hosts" para resolver nombres. Hace poco ya hablamos de como bloquear la publicidad empleando este fichero, por lo tanto podemos combinar ambos para tener un potente bloqueador de publicidad y una mayor privacidad con la velocidad de dnsmasq.