Configurar DNS por HTTPS en Pi-hole
Aprendemos juntos a configurar DNS por HTTPS en nuestra Pi-hole doméstica. De esta manera nos garantizamos, por lo menos en teoría, que las peticiones DNS que pasen por nuestra Pi-hole utilicen HTTPS. Para ello vamos a utilizar la herramienta cloudflared, ofrecida, como sugiere el nombre por Cloudflare.
Antes de continuar quiero agradecer a los compañeros de KillAllRadio por estar ahí, ya que gracias a las conversaciones que tenemos en el grupo de Telegram, se me ocurren ideas para estas entradas. En esta ocasión la idea ha surgido en un debate sobre la seguridad de los DNS y lo fácil que tienen los ISP para saber el tráfico de todos los usuarios. En esto el compañero Eduardo Collado es un hacha, y me ha hecho ver, inocente de mi, que la configuración que tenía montada hasta la fecha en mi casa, estaba bastante lejos de garantizar mi anonimato en la red.
¿Por qué utilizar DNS por HTTPS?
DNS a través de HTTPS es un protocolo para realizar busquedas DNS a través del mismo protocolo que utilizamos normalmente para navegar de forma segura por la web, esto es, HTTPS. Se trata de un protocolo de seguridad, que busca poner más dificil al proveedor de turno de Internet, saber que páginas visitamos. Además de mejorar nuestra seguridad a la hora de navegar por los mares turbulentos de Internet.
Como seguramente ya sabrás gracias a los servidores DNS se pueden interpretar las direcciones IP como nombres amigables para los usuarios. Pues bien, con los servidores DNS estándar, las solicitudes se envían en texto sin formato, sin ningún método para detectar alteraciones o comportamientos indebidos. Esto significa que un actor malintencionado no solo puede ver todas las solicitudes de DNS que estamos realizando (y, por lo tanto, qué sitios web estamos visitando), sino que también puede alterar la respuesta y redirigir nuestro dispositivo a los recursos que están bajo su control.
Con este protocolo podemos evitar esto mediante HTTPS. Esto significa que la conexión desde el dispositivo al servidor DNS es segura y no se puede espiar, monitorear, manipular o bloquear fácilmente. (en teoría)
Configurar DNS a través de HTTPS con Pi-hole
Actualmente tengo instalado Pi-hole, el famoso bloqueador de publicidad, además de servidor de DNS y DHCP, sobre una RaspBerryPi, por lo que explicaré como realizar la instalación y configuración sobre este dispositivo. Para ello vamos a utilizar el servicio y herramienta cloudflared, que he comentado anteriormente.
Antes de nada, el procesador que utiliza la RaspBerryPi que yo tengo es un ARMv7, con cuatro núcleos y un tecnología de 32 bits, para muestra un botón:
Pues bien, para esta arquitectura, debemos utilizar el siguiente repositorio para Raspbian:
wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz tar -xvzf cloudflared-stable-linux-arm.tgz sudo cp ./cloudflared /usr/local/bin sudo chmod +x /usr/local/bin/cloudflared cloudflared -v
Una vez seguidos estos pasos, ya debemos ver la herramienta instalada y comprobar su versión:
pi@raspberrypi:/proc $ cloudflared -v cloudflared version 2020.12.0 (built 2020-12-08-2302 UTC)
A continuación vamos a configurarla de manera manual. Primero creamos un nuevo usuario en el sistema que es el que utilizará este servicio:
sudo useradd -s /usr/sbin/nologin -r -M cloudflared
Creamos y editamos el fichero de configuración:
sudo nano /etc/default/cloudflared
Y añadimos:
# Argumentos para cloudflared, utilizando Cloudflare DNS CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query
Guardamos y salimos. A continuación actualizamos el usuario y grupo de los ficheros de configuración:
sudo chown cloudflared:cloudflared /etc/default/cloudflared sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared
Y ya por último en esta parte, creamos la correspondiente unidad para Systemd
sudo nano /etc/systemd/system/cloudflared.service
Con el contenido:
[Unit] Description=cloudflared DNS over HTTPS proxy After=syslog.target network-online.target [Service] Type=simple User=cloudflared EnvironmentFile=/etc/default/cloudflared ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target
Añadimos la nueva unidad al arranque y comprobamos su estado:
sudo systemctl enable cloudflared sudo systemctl start cloudflared sudo systemctl status cloudflared
Con el resultado en mi caso:
Comprobamos que efectivamente las consultas DNS están funcionando como nosotros queremos:
Configurar Pi-hole
Por último debemos modificar la configuración de nuestro Pi-hole, desde la sección «Settings» y «DNS«, para que quede así:
Y esto es todo, que ya ha quedado algo extensa la entrada. Si queréis saber como actualizar la herramienta o desinstalarla, aquí os dejo el enlace a la web de Pi-hole, donde habla del tema: