¿Cómo obtener privacidad y autenticidad con DNS?

8

Utilizo pfSense (Unbound) como mi resolución local. Históricamente lo he apuntado a una resolución recursiva de raíz, porque percibí mi principal amenaza como la confiabilidad y la actualidad de los datos (DNS envenenado / no válido) y el seguimiento del DNS del ISP local. (No sé si es así, pero sentí que un servidor DNS raíz en el extranjero podría estar menos conectado a mí personalmente y tener menos interés en las consultas que genero). Uso principalmente IPv4, que puede ser relevante.

Con toda la atención en el seguimiento de DNS, han surgido algunas preocupaciones y percepciones:

  • ¿Debo usar algún tipo de codificación DNS o método de firma, para privacidad / certeza? No estoy usando DNSSEC ni ninguna otra extensión, por lo que mis consultas de DNS están "en claro". Se pueden ver entre aquí y los diversos servidores DNS, y ciertamente no hay sobre manipulación "en el cable" (menos probable pero notado). Pero qué usar y hasta dónde ayudará, ya que no es compatible con todos.
  • ¿Debo usar una resolución externa en lugar de consultar servidores raíz? Estoy consultando servidores raíz desde el principio, por lo que estoy emitiendo muchas consultas desde servidores raíz a la subred real de interés, en lugar de usar una entrada precocinada en alguna resolución / caché de DNS existente. Pero cada servidor DNS solo ve un componente del dominio, no pueden ver todo el objetivo. Si utilizo un sistema de resolución intermedio, especialmente uno con firma / cifrado, emito muchas menos solicitudes de DNS y lo que sí hago, siempre estará cifrado y firmado. Pero requiere un intermediario elegido con una confianza considerable (almacenamiento en caché, etc.) y no afecta el riesgo de intercepción.
  • ¿Debería enrutar el DNS a través de algún tipo de proxy anonimizado? Es más lento para las primeras solicitudes, pero Unbound almacenaría en caché las respuestas localmente y también solicitaría actualizar los datos antes de que caduquen los datos almacenados en caché, y supongo que Se aplica la regla 80/20 (la mayoría de las consultas serán para el mismo subconjunto de dominios donde ya tengo datos en caché), por lo que no me preocupa demasiado el aspecto de la velocidad. Pero, ¿qué tan práctico es esto? El método de anonimización más prominente es tor. Tor no hace UDP, por lo que maneja DNS al pedirle al nodo de salida que realice una consulta de DNS y confíe en el resultado. Podría configurar Unbound para consultar DNS solo a través de TCP, y enrutar a través de tor local, si eso lo solucionaría (= si la mayoría de los nodos de salida permitirán el puerto 53, y si la mayoría Los servidores DNS hablan TCP). También me complace ejecutar un nodo de anonimización de DNS si hay un equivalente específico para DNS, si ayudará a otros (esto podría permitirme fusionar mi tráfico con consultas de DNS generales) pero ¿existe tal cosa?

Por lo tanto, mi modelo de riesgo actual es probablemente algo como esto:

  • Datos envenenados / inválidos ;
  • Registro / monitoreo en el servidor (s), y modificación / monitoreo "en el cable";
  • Vinculación de consultas con la anonimización de IP / DNS de origen.
    Si no uso proxy / anonimización de DNS, solo hay 2 opciones. Puedo resolver todo por mí mismo desde los servidores raíz hacia abajo, en cuyo caso confío en que cada servidor DNS en cada dominio no registre las consultas, lo cual es poco probable, pero la identificación de los destinos de las consultas es menos fácil, ya que las consultas de subdominios resultantes están muy distribuidas. Si uso un dispositivo de resolución público, coloco "todos mis huevos en una canasta", ya que ven el dominio de destino completo, no solo partes de él, y confío en que no se registrarán, lo que también puede ser poco realista. Entonces, la anonimización del DNS parece necesaria, pero no está claro si es realista.

Me complace trabajar para resolver esto, y estoy seguro de que puedo mejorar lo que estoy haciendo. Pero se necesitarán soluciones, ya que el DNS es fundamentalmente inseguro.

Dado el estado actual de DNS y el estado actual de las tecnologías de anonimización, ¿cuál es mi mejor enfoque para mitigar amenazas para consultas de DNS?

    
pregunta Stilez 17.04.2018 - 10:08
fuente

1 respuesta

1

En resumen, instale un resolvedor habilitado con DNSSEC con minimización de QNAME ( RFC 7816 ) en su computadora o use DNS sobre TLS ( RFC 7858 ) hacia un servidor remoto en el que confíe / control.

Ahora con más detalles, ya que la configuración anterior se adapta a diferentes casos, y también se puede combinar de alguna manera.

First DNSSEC no es algo que pueda usar de su lado para ser aplicado en todas partes, y no es algo que ayude a la privacidad. Para las zonas que están habilitadas para DNSSEC (que tienen firmas), si las resuelve las valida, entonces tiene la garantía de autenticidad (no podría obtener datos falsos) e integridad (las cosas no se podrían cambiar o degradar). Esto es útil y resuelve algunos problemas pero:

  1. no todos los nombres de dominio están habilitados para DNSSEC, ni mucho menos incluso
  2. no impide que nadie lea su tráfico de DNS, ya que permanece en blanco, tanto la solicitud como las respuestas

Por lo tanto, si lo hace, debe confiar en su ISP o en cualquier persona de la red para que no rastree su tráfico. Cualquiera podrá ver sus mensajes DNS y modificar el que no esté habilitado para DNSSEC.

La otra opción es conectarse con TLS a algún servidor DNS remoto que habla este nuevo protocolo. Esto te da dos beneficios:

  1. nadie podrá interceptar, ni cambiar, sus mensajes DNS ya que todos están protegidos por TLS, y esto se aplica tanto a DNSSEC como a dominios no habilitados para DNSSEC
  2. los servidores de nombres autorizados que consulta solo verán la otra IP del servidor de nombres y nunca la suya.

Por supuesto, la alternativa de un hombre pobre sería hacer un túnel IPSEC o SSH, para obtener casi los mismos beneficios, pero no sin algunas complejidades, ya que necesita manejar tanto UDP como TCP. O un proxy SOCKS. Pero dado que el DNS sobre TLS es un estándar ahora (al menos un RFC), puede tener más sentido continuar de esta manera.

Dije que necesitas confiar / controlar este servidor DNS remoto porque obviamente verá todo tu tráfico DNS. Depende de usted definir en quién puede confiar o no. Algunos proveedores públicos abiertos de DNS también proporcionan DNS sobre TLS en la actualidad, por ejemplo CloudFlare: enlace pero puede encontrar muchos otros aquí: enlace

Si necesita usar dichos servidores de nombres que no controla por completo, algunos pueden recomendarle que configure las cosas de tal manera que use varias y que difunda sus consultas entre ellas, de modo que ninguna pueda reconstruir toda tu sesión de DNS Un poco más complicado de implementar, ya que esta no es la forma estándar en que funciona una lista de servidores de nombres de forma predeterminada.

Como nota al margen, el estándar de DNS sobre HTTPS se está cocinando y debería llegar "pronto". Supongo que muchos proveedores ofrecerán este servicio, por lo que tendrá los mismos dilemas que hoy con los proveedores de VPN. (en quién confiar, etc.)

También dijiste "Pero cada servidor DNS solo ve un componente del dominio, no pueden ver todo el objetivo". lo que está mal en la práctica de hoy. El protocolo permite eso, pero por varias razones, ya que nadie recuerda cuándo, los servidores de nombres recursivos enviaban el nombre completo (cada etiqueta) a cada servidor de nombres autorizado en cada paso. Solo ahora, con el estándar de minimización QNAME (RFC 7816), los resolutores pueden hacer el recorrido enviando solo una etiqueta cada vez. Esto no está exento de problemas, ya que algunos servidores de nombres no lo solucionan (por lo tanto, algunos recursivos implementaron una estrategia alternativa: primero intente con la minimización de QNAME y si falla, comience nuevamente con el nombre completo como antes)

    
respondido por el Patrick Mevzek 19.04.2018 - 09:06
fuente

Lea otras preguntas en las etiquetas