Tarsis.net — Agencia Web y Marketing Digital — Tel: (+34) 911 413 259

Blog Interferencia: soluciones Internet libres para pequeñas y medianas empresas

Un blog de Tarsis.net sobre soluciones internet libres para pymes y profesionales

DNS: rendimiento y seguridad

Tarsis.net, 22 de diciembre de 2023

Imagen: Replicate AI / ai-forever/kandinsky-2.2

El servicio de resolución de nombres de dominio (Domain Name Service, DNS) es uno de los más antiguos de Internet, uno de los más importantes y, muy a menudo, uno trágicamente pasado por alto cuando se estudia tanto el rendimiento de otros servicios como su seguridad.

Pasar inadvertido

Para muchos usuarios, y para muchos administradores de servicios Internet, el DNS consiste simplemente en un conjunto más o menos reducido de direcciones IP que van a servir para resolver nombres. Se configuran una vez en un ordenador, o un servidor, y uno se olvida de ello.

En el caso de los administradores de servicios, esa resolución es precisamente la que se hace sobre los servidores que ellos están administrando. ¿De qué tipo de servicios puede tratarse? Por ejemplo de un sitio web, de una API que esté siendo accedida por una aplicación móvil, por un servidor de chat o cualquier otro servicio de este tipo. Es decir, como caso general, hay usuarios remotos, potencialmente en cualquier lugar del mundo, que van a demandar servicio de un servidor.

Para poder llegar hasta él van a necesitar saber antes cuál es su dirección IP y eso requiere una resolución del nombre. Para ello tenemos servidores de DNS, especializados para este fin.

Desgraciadamente las capacidades y rendimiento de este servidor suelen ser frecuentemente pasadas por alto. En muchas ocasiones basta simplemente con «que funcione» y, una vez que lo hace, nunca jamás vuelve a ser necesario echarle un vistazo. Y eso es un craso error.

¿Por qué necesito dedicarle atención a mi servicio de DNS?

El flujo de una petición DNS es extremadamente sencillo:

  1. Un cliente (por ejemplo un navegador) demanda la resolución de un nombre de host.
  2. El cliente utiliza los servicios de red de su ordenador para hacer una petición a su servidor de DNS de usuario, habitualmente proporcionado por su proveedor de acceso Internet, que busca un servidor de DNS autoritativo para ese dominio.
  3. Un servidor de DNS autoritativo para el dominio requerido ofrece una respuesta al servidor de DNS del usuario.
  4. El servidor de DNS del usuario responde al cliente.

Pero concentrémonos en el punto 3, el único que, como administradores del servicio, nos atañe directamente: ¿qué puede salir mal en esa resolución autoritativa? Pues un cierto número de cosas:

  • El servidor de DNS autoritativo puede funcionar lentamente o no estar disponible.
  • Puede tener una latencia alta.
  • Puede no estar proporcionando la información adecuada o presentándola de forma ineficiente, creando la necesidad de ulteriores solicitudes de resolución de nombres.
  • Puede haber sido suplantado por algún actor interesado en ello.

Todo esto es un poco abstruso. ¿De verdad esto puede afectar de forma concreta a mis servicios?

Veamos algunos ejemplos de estos problemas hipotéticos, para ver si alguno de ellos le suena:

El sitio web tarda mucho en cargar, pero el servidor web está desocupado la mayor parte del tiempo

¿Es esto posible? Naturalmente. Si nuestros clientes experimentan tiempos altos de respuesta por parte del servidor de DNS de nuestro servicio, todo el proceso de carga de, por ejemplo, una página web se verá retrasado, y llegarán menos peticiones al servidor web. No se trata de que el servidor web esté sobrecargado, sino de que los clientes web no están siendo capaces de saber a qué dirección(es) IP tienen que conectarse para hacer sus peticiones.

Si nuestro servidor autoritativo de DNS carece de los recursos necesarios, o si la configuración del servicio de DNS está por debajo del óptimo, puede que tanto el tiempo en la resolución de una petición, como el número de peticiones efectuado esté causando una respuesta deficiente en esas resoluciones.

Una variante oscura de este caso es que, para un atacante a nuestro servicio web que pretenda producir una denegación de servicio, puede ser mucho más práctico, y probablemente mucho más eficiente, bombardear a nuestro servidor autoritativo de DNS, impidiendo la resolución normal y, subsidiariamente, haciendo nuestro servidor web inaccesible o extremadamente lento.

Veo que la web se carga rápido, pero mis clientes en Argentina insisten en que es lentísima

Pues sí. Si su servidor web puede con la carga que tiene asignada, pero el servidor de DNS está — en términos de red — alejado de sus clientes en todo el mundo, el cuello de botella no se presentará en el servidor web, sino en el probablemente menos capaz servidor de DNS. Un cliente en España obtendrá una resolución rápida del DNS, porque está cerca del servidor de DNS autoritativo, pero un cliente en Argentina tiene que atravesar el charco para resolver el DNS, antes siquiera de poder hacer la petición al servidor web, y eso requiere más tiempo que si la resolución del nombre se llevara a cabo en Argentina. Esto es lo que se llama una latencia alta.

¿Cómo se soluciona esto? Disponiendo de un proveedor de servicios de DNS siempre próximo a sus clientes en todo el mundo. Hoy en día esto se consigue mediante servidores de DNS con direcciones IP anycast, que es una tecnología que permite que una misma dirección IP esté presente en múltiples puntos de presencia de la red en todo el mundo, haciendo que su servidor de DNS responda localmente en España, pero también en Argentina, en Kenia o en Singapur. Cualquier cliente que quiera resolver la dirección IP de su servidor web lo hará localmente, evitando esa latencia alta.

Y si dispone de un CDN para servir sus contenidos, la experiencia de usuario de sus clientes más remotos será aún mejor.

El navegador informa de errores al cargar la página o el servidor de DNS está sobrecargado

Hummm… aparentemente dos problemas no relacionados, y sin embargo… ¿Está seguro de que todos los recursos de su dominio están nombrados adecuadamente, y que los registros de su DNS están perfectamente configurados?

Si su sitio web utiliza en sus páginas una llamada a su dominio principal de esta forma:

https://midominio.com/

pero dentro de su código HTML hay llamadas a otras direcciones por las que se puede llamar al mismo servidor (atención al www.):

https://www.midominio.com/img/logo.png

Hay varias cosas que le pueden ocurrir en este escenario. Por ejemplo:

  • Que el nombre de host www.midominio.com no esté definido en su DNS.
  • Que esté definido pero, incluso si lo está, se requerirá una petición de DNS adicional, dado que se trata de un nombre de host diferente, multiplicando por dos el número de peticiones de DNS necesarias para mostrar una página.
  • O que estos y otros nombres de host estén configurados en su servidor de DNS con un plazo de validez (Time To Live, TTL) demasiado corto, y esto produzca una proliferación de peticiones innecesarias a lo largo de la sesión de navegación de un usuario.

Mis usuarios me están diciendo que al cargar mi web aparece algo distinto, no mi web

Este es un síntoma de que alguien ha conseguido alterar la caché de un servidor de DNS de usuario (envenenamiento de DNS) o está suplantando a su servidor de DNS y haciendo que la resolución de los nombres de sus hosts esté siendo alterada, y su tráfico redirigido a otro servidor web.

Para evitar estas situaciones disponemos de una tecnología llamada DNSSEC, que consiste en una solución de criptografía de clave pública o, básicamente, en que cada respuesta a una petición de resolución de DNS debe ir firmada por el servidor autoritativo para ese dominio (algo similar a la fórmula que permite verificar un servidor mediante HTTPS en lugar de HTTP).

DNSSEC no es una tecnología que actualmente esté generalmente implantada, pero el panorama de la ciberseguridad va a hacer que, tarde o temprano, todos los servidores de nombres tengan que utilizarla si no quieren ver cuestionada la información que sirven.

Pero vamos, que el que muchos dominios no dispongan aún de DNSSEC no nos va a impedir en lo más mínimo presumir del nuestro:

$ delv tarsis.net
; fully validated
tarsis.net.		3600	IN	A	66.39.31.59
tarsis.net.		3600	IN	RRSIG	A 13 2 3600 20240104000000 20231214000000 49610 tarsis.net. hIAxafH/JgZqoNBJPJyB07rPvrECrg8CvL6JatixtUHCLiBg67AOIJiI oHszEiFZsO1+0vkLxHGtCbUEoCRGjg==

¡No descuide los cimientos!

Como ha podido ver a lo largo de este artículo, el servicio de DNS, uno de los pilares de cualquier infraestructura Internet, no es algo que pueda darse por descontado. Muchas veces, problemas que parecen insondables tienen explicación en los fundamentos, como es el caso del DNS. ¡No descuide el suyo!

Si se ha visto en alguna de estas situaciones, quizá le resulte interesante hablar con un experto en DNS que le pueda aportar recomendaciones para mejorar el rendimiento y la seguridad de su infraestructura Internet. Contacte con nosotros sin compromiso. Podemos ayudarle.

Escriba un comentario

INTERFERENCIA