Router portátil que protege la privacidad: añadir compatibilidad con DNS-Over-TLS a OpenWRT (LEDE) con Unbound
Hoy queremos compartir una guía detallada sobre cómo configurar DNS-Over-TLS con GL-AR750 escrito por Junade Ali. Para quienes no sepan qué es DNS-Over-TLS, aquí tienen una breve explicación:
Tu proveedor de Internet puede espiar y recopilar exhaustivamente datos sobre cada uno de tus movimientos en Internet y venderlos a anunciantes y empresas de marketing. DNS-Over-TLS es una nueva herramienta de seguridad para la navegación web que protege la privacidad del usuario. Cifra tus solicitudes DNS y evita las escuchas y la manipulación de los datos DNS mediante ataques de intermediario.
Si quieres ir directamente a las instrucciones, desplázate a la siguiente sección. Pero yo, como una negociación TLS, me extiendo mucho, así que espero que disfrutes de esta introducción.
Imagina esta situación: estoy en un restaurante y necesito mantener una conversación telefónica privada, pero, por desgracia, mi teléfono se ha quedado sin batería. Para resolver el problema, pido prestado el teléfono de un amigo y marco el número; para proteger mi privacidad, salgo a la calle. Cuando termino la llamada, vuelvo a entrar y devuelvo el teléfono.
Aunque el teléfono no almacena la conversación que he mantenido, sí conserva un registro del número marcado recientemente. Si el amigo que me prestó el teléfono quisiera, podría ver fácilmente a quién llamé, aunque no conozca específicamente el tema de la conversación.
A veces, los datos sobre con quién ha hablado pueden revelar mucho sobre la conversación - si alguien llama a una línea de apoyo emocional o a una empresa de cobro de deudas, probablemente se pueda deducir mucho de la conversación a partir de la identificación de la llamada.
Cuando navegamos por internet, utilizamos el cifrado para intentar proteger nuestras conversaciones. Al conectarse a un sitio web mediante HTTPS, se enciende un candado verde en tu navegador que le indica que tu comunicación está cifrada, de modo que a un adversario situado entre ti y el servidor del sitio web le resulta computacionalmente difícil ver de qué está hablando.
Anteriormente escribí en el blog sobre cómo, en determinadas circunstancias, es posible eliminar este cifrado y sobre las medidas que los sitios web pueden aplicar para evitarlo. Por desgracia, existe un problema mucho más fundamental para la privacidad en línea.
Como es sabido en IT, antes de que tu navegador establezca una conexión HTTP con un sitio web, por ejemplo cloudflare.com, tu cliente debe realizar una consulta DNS para determinar la dirección IP con la que se debe establecer la conexión HTTP. Lo mismo ocurre con cualquier otro protocolo de la capa de aplicación cuando se conecta mediante un nombre de host en lugar de una dirección IP. Para una introducción a DNS, disponemos de un artículo sobre sus fundamentos en nuestro centro de aprendizaje.
Aunque las tecnologías de cifrado para HTTP existen desde hace bastante tiempo, solo recientemente se han estandarizado estas técnicas para DNS. Si no sabe si tu tráfico DNS está cifrado, lo más probable es que no lo esté.
En la práctica, esto significa que, al conectarse a un sitio web que utiliza HTTPS, aunque tu comunicación esté cifrada, alguien capaz de interceptar tu conexión puede ver qué sitio web estás buscando e incluso, según cómo esté protegido el sitio, manipular la respuesta para que se comunique con un servidor diferente.
Esto resulta especialmente útil para quienes interceptan comunicaciones, ya sea la red que ofrece el punto de acceso Wi-Fi gratuito y pretende vender tus datos a anunciantes que segmentan tu publicidad, o el hacker que toma un café con leche mientras intercepta tu tráfico de red (irónicamente vestido con una sudadera negra con capucha y un pasamontañas).
Al cambiar tu resolutor DNS por el de Cloudflare, obtiene una navegación más rápida y se asegura de que quienes gestionan tu resolutor DNS no vendan esos datos para mostrarte publicidad dirigida. Sin embargo, aunque el resolutor de Cloudflare admite tanto DNS-over-HTTPS como DNS-over-TLS, para garantizar que su conexión con él esté cifrada puedes ser necesario seguir algunos pasos adicionales de configuración, como activar un cliente DNS over HTTPS.
Esta entrada del blog explica cómo configurar un router OpenWRT para cifrar el tráfico saliente hacia Cloudflare Resolver. Esto resulta especialmente útil si deseas proteger el tráfico de los dispositivos de tu hogar que quizá no admitan protocolos DNS cifrados, como tu televisor o una tostadora con IoT. Aunque los clientes locales pueden omitir explícitamente el resolvedor DNS local de tu router, muchos lo utilizarán de forma predeterminada.
OpenWRT (LEDE)
El fin de semana anterior a escribir esta publicación, pedí un nuevo router inalámbrico, el GL.iNet GL-AR750. Este router tiene un formato muy compacto, se comercializa como un «router de viaje» y puede funcionar tanto como repetidor Wi-Fi como router Wi-Fi tradicional. Su lado más largo mide aproximadamente lo mismo que mi dedo índice:
No pedí este router solo por su formato: también incluye OpenWRT preinstalado, un sistema operativo integrado basado en Linux muy adecuado para routers. En mayo de 2016, se creó una bifurcación de OpenWRT llamada LEDE (Linux Embedded Development Environment), que volvió a integrarse en el proyecto OpenWRT en enero de 2018.
Si no dispone de un router con LEDE preinstalado, puedes seguir esta entrada del blog con cualquier otro router que admita la instalación del firmware OpenWRT; encontrarás más información en la página de dispositivos compatibles de OpenWRT. No obstante, ten en cuenta que, según tu dispositivo, esto puede conllevar ciertos riesgos.
Compatibilidad con DNS-over-TLS (o su ausencia)
El router con el que estoy experimentando tiene una opción para configurar el resolvedor DNS ascendente que utilizará cuando una consulta no esté almacenada en la caché de su propio resolvedor interno. Este resolvedor local se propone después a los clientes que se conectan al router.
Para experimentar - a través de la UI web, puedo configurar
este router para utilizar 1.1.1.1, 1.0.0.1, 2606:4700:4700::1111 y 2606:4700:4700::1001 como servidores DNS de origen (actualizando las direcciones IPv6
si la red no las admite):
Al conectar el puerto WAN del router a mi ordenador, puedo capturar
el tráfico que sale del router con Wireshark antes de que llegue a la
WAN real. Cuando una consulta DNS no está en la caché de mi router, se reenvía a 1.1.1.1. Como mi router envía estas consultas sin cifrar en lugar de utilizar DNS-over-TLS, puedo ver cómo se envían estas consultas DNS por Internet sin cifrar:
Aunque Cloudflare Resolver admite DNS-over-TLS, por desgracia mi router no lo admite y simplemente enviará todas las consultas sin cifrar.
Configuración de DNS-Over-TLS
De forma predeterminada, LEDE viene preinstalado con Dnsmasq como resolutor interno y, por tanto, no admite DNS-over-TLS. Para cifrar nuestras solicitudes, sustituiremos Dnsmasq por Unbound y odhcpd. He basado los pasos que sigo en la muy útil documentación del paquete Unbound de OpenWRT.
Antes de empezar, debemos acceder a nuestro router mediante SSH. Si se le solicita una contraseña, probablemente será la misma que configuró para el portal web:
LEDE utiliza opkg como su gestor de paquetes preferido. Primero,
actualicemos la lista de paquetes y después instalemos Unbound con Unbound-Control y la
versión completa de odhcpd:
opkg update
opkg install unbound odhcpd unbound-control
opkg remove dnsmasq
Ten en cuenta que también puedes instalar la aplicación Luci para Unbound si deseas controlarlo mediante la interfaz de usuario estándar.
opkg install luci-app-unbound
Como mi router no ejecuta actualmente una versión sin modificar de LEDE, su interfaz de usuario no cambiaría si instalara esto, y no he probado este módulo personalmente.
Con Unbound instalado, podemos añadir una configuración para garantizar que Unbound utilice 1.1.1.1, 1.0.0.1, 2606:4700:4700::1111 y
2606:4700:4700::1001 como resolutores DNS con cifrado TLS. Lo he
hecho añadiendo algunas opciones de configuración a /etc/unbound/unbound_ext.conf con Vim:
forward-zone:
name: "."
forward-addr: 1.1.1.1@853
forward-addr: 1.0.0.1@853
forward-addr: 2606:4700:4700::1111@853
forward-addr: 2606:4700:4700::1001@853
forward-ssl-upstream: yes
En el archivo de configuración de Unbound ubicado en /etc/config/unbound, he
añadido algunos parámetros de configuración necesarios según se indica en la documentación
del paquete. En mi caso, hice una copia de seguridad del archivo de configuración y simplemente
utilicé lo siguiente:
config unbound
option add_local_fqdn '1'
option add_wan_fqdn '1'
option dhcp_link 'odhcpd'
option dhcp4_slaac6 '1'
option domain 'lan'
option domain_type 'static'
option listen_port '53'
option rebind_protection '1'
option unbound_control '1'
Si tienes parámetros adicionales en el archivo, asegúrate de que nada anule los parámetros establecidos, prestando especial atención a unbound_control parámetro.
También he combinado la siguiente configuración con /etc/config/dhcp (dejando algunas entradas existentes sin cambios):
config dhcp 'lan'
option dhcpv4 'server'
option dhcpv6 'server'
option interface 'lan'
option leasetime '12h'
option ra 'server'
option ra_management '1'
config odhcpd 'odhcpd'
option maindhcp '1'
option leasefile '/var/lib/odhcpd/dhcp.leases'
option leasetrigger '/usr/lib/unbound/odhcpd.sh'
Por último, podemos activar el inicio automático de Unbound e iniciarlo:
service unbound enable
service unbound start
Aquí está la prueba definitiva: cuando interceptamos las consultas DNS entre nuestro router e Internet, observamos que están cifradas con TLS v1.2:
Conclusión
En esta entrada del blog hemos explicado cómo cifrar tu tráfico DNS puede ayudar a proteger la privacidad de tu navegación por Internet. Al sustituir Dnsmasq por Unbound, podemos permitir que OpenWRT aproveche DNS sobre TLS para ayudar a cifrar nuestro tráfico web.
Gracias a Junade Ali por autorizarnos a compartir este artículo en nuestro sitio web. El artículo se publicó originalmente en el sitio web de Cloudflare el 9 de abril de 2018: https://blog.cloudflare.com/dns-over-tls-for-openwrt/
Acerca de GL.iNet
Fundada en 2010, GL.iNet es un proveedor líder de routers innovadores y soluciones de red. Desde routers de viaje compactos hasta dispositivos KVM remotos de última generación, GL.iNet ofrece tecnología de red galardonada, diseñada para brindar rendimiento y seguridad.
GL.iNet permite a personas y organizaciones conectarse con confianza. Al poner el control en manos de los usuarios, GL.iNet impulsa la productividad y la colaboración que contribuyen a una buena vida.