La guía definitiva para prevenir ataques DDoS basados ​​en DNS

Cuando se trata de DNS, Cricket Liu literalmente escribió el libro. Es coautor de las cinco ediciones del libro "DNS and BIND" de O'Reilly, que generalmente se considera la guía definitiva sobre todo lo relacionado con el sistema de nombres de dominio. Cricket es actualmente director de infraestructura de Infoblox.

El DNS es claramente un componente crítico de las redes informáticas, pero hay ocasiones en las que estas herramientas pueden utilizarse para cometer delitos. En el New Tech Forum de esta semana, Cricket analiza el creciente problema de los ataques DDoS basados ​​en DNS y cómo lidiar con ellos. - Paul Venezia

Ataques DDoS basados ​​en DNS: cómo funcionan y cómo detenerlos

El DDoS (ataque distribuido de denegación de servicio) basado en DNS se ha convertido en uno de los ataques destructivos más comunes en Internet. Pero, como trabajan? ¿Y qué podemos hacer para defendernos de ellos?

En este artículo, describiré cómo los ataques DDoS explotan y apuntan a la infraestructura DNS. También le mostraré lo que puede hacer para protegerse y proteger a los demás.

La gran parodia

Generar un ataque DDoS utilizando la infraestructura de DNS es notablemente simple: los atacantes envían consultas a servidores de nombres a través de Internet y esos servidores de nombres devuelven respuestas. Sin embargo, en lugar de enviar las consultas desde sus propias direcciones IP, los atacantes falsifican la dirección de su objetivo, que podría ser un servidor web, un enrutador, otro servidor de nombres o casi cualquier nodo de Internet.

La suplantación de consultas de DNS es particularmente fácil porque generalmente se realizan a través de UDP (el Protocolo de datagramas de usuario sin conexión). Enviar una consulta de DNS desde una dirección IP arbitraria es tan simple y tiene aproximadamente el mismo efecto que escribir la dirección de retorno de otra persona en una postal.

Sin embargo, las consultas falsas no son suficientes para incapacitar a un objetivo. Si las respuestas a esas consultas no fueran más grandes que las propias consultas, un atacante haría lo mismo en inundar el objetivo con consultas falsas. No, para maximizar el daño al objetivo, cada consulta debe devolver una respuesta muy grande. Resulta que es muy fácil de instigar.

Desde la llegada de EDNS0, un conjunto de extensiones de DNS introducido en 1999, los mensajes DNS basados ​​en UDP han podido transportar gran cantidad de datos. Una respuesta puede tener un tamaño de hasta 4096 bytes. La mayoría de las consultas, por otro lado, tienen menos de 100 bytes de longitud.

Érase una vez, era relativamente difícil encontrar una respuesta tan grande en el espacio de nombres de Internet. Pero ahora que las organizaciones han comenzado a implementar DNSSEC, las extensiones de seguridad de DNS, es mucho más fácil. DNSSEC almacena claves criptográficas y firmas digitales en registros en el espacio de nombres. Estos son positivamente enormes.

Puede ver un ejemplo de una respuesta de la zona isc.org que contiene registros DNSSEC en mi blog. El tamaño de la respuesta es de 4077 bytes, en comparación con una consulta de solo 44 bytes.

Ahora, imagínese a los atacantes de Internet enviando esa consulta falsa desde la dirección IP de su servidor web a los servidores de nombres de isc.org. Por cada consulta de 44 bytes, su servidor web recibe una respuesta de 4077 bytes, para un factor de amplificación de casi 93 veces.

Hagamos un cálculo rápido para averiguar qué tan mal podría volverse esto. Digamos que cada atacante tiene una conexión relativamente modesta de 1 Mbps a Internet. Puede enviar alrededor de 2.840 consultas de 44 bytes a través de ese enlace por segundo. Este flujo de consultas daría como resultado casi 93 Mbps de respuestas que llegarían a su servidor web. Cada 11 atacantes representan 1 Gbps.

¿Dónde encontrarían los atacantes antisociales a 10 amigos para ayudarlos a llevar a cabo un ataque? En realidad, no necesitan ninguno. Utilizarán una botnet de miles de computadoras.

El efecto final es devastador. En su Informe global trimestral de ataques DDoS, Prolexic (una empresa de mitigación de DDoS) informó sobre un ataque reciente basado en DNS contra un cliente que superó los 167 Gbps. Prolexic informó además que el ancho de banda promedio de los ataques DDoS aumentó un 718 por ciento a 48 Gbps en un solo trimestre .

¡Pero espera! ¿No podrían modificarse los servidores de nombres de isc.org para reconocer que se les consulta una y otra vez para obtener los mismos datos, desde la misma dirección IP? ¿No podrían sofocar el ataque?

Ciertamente pueden. Pero los servidores de nombres isc.org no son los únicos que un atacante puede utilizar para amplificar su tráfico. Claro, hay otros servidores de nombres autorizados que el atacante podría usar, pero lo peor son los servidores de nombres abiertos recursivos.

Un servidor de nombres recursivo abierto es simplemente un servidor de nombres que procesará consultas recursivas desde cualquier dirección IP. Puedo enviarle esa consulta de datos de isc.org y me responderá, y usted puede hacer lo mismo.

No debería haber muchos servidores de nombres recursivos abiertos en Internet. La función de un servidor de nombres recursivo es buscar datos en el espacio de nombres de Internet en nombre de los clientes DNS, como los de su computadora portátil o teléfono inteligente. Los administradores de red que configuran servidores de nombres recursivos (como su departamento de TI) generalmente los pretenden para que los utilice una comunidad en particular (por ejemplo, usted y sus compañeros de trabajo). A menos que estén ejecutando servicios como OpenDNS o Google Public DNS, no pretenden que los ciudadanos de Moldavia los utilicen. Por lo tanto, los administradores con espíritu público, con mentalidad de seguridad y muy especialmente competentes configuran controles de acceso en sus servidores de nombres recursivos para limitar su uso a los sistemas autorizados.

Dado eso, ¿qué tan grande podría ser el problema de abrir servidores de nombres recursivos? Bastante grande. Open Resolver Project ha recopilado una lista de 33 millones de servidores de nombres recursivos abiertos. Los piratas informáticos pueden lanzar consultas falsas a tantos de estos como deseen para arrojar datos de isc.org en su servidor web, servidor de nombres o enrutador de borde hasta que se ahogue.

Así es como funcionan los ataques DDoS basados ​​en DNS. Afortunadamente, tenemos algunas formas de combatirlos.

Cómo capear la tormenta

La primera orden del día es instrumentar su infraestructura de DNS, para que sepa cuándo está bajo ataque. Demasiadas organizaciones no tienen idea de cuál es su carga de consultas, por lo que nunca sabrían si estaban siendo atacadas en primer lugar.

Determinar la carga de su consulta puede ser tan simple como usar el soporte de estadísticas integrado de BIND. El servidor de nombres BIND volcará datos en su archivo de estadísticas cuando ejecute rndc stats,por ejemplo, o en un intervalo de estadísticas configurable. Puede examinar las estadísticas de la tasa de consulta, errores de socket y otras indicaciones de un ataque. No se preocupe si aún no está seguro de cómo se verá un ataque; parte del objetivo de monitorear el DNS es establecer una línea de base, para que pueda identificar lo que es anormal.

A continuación, eche un vistazo a su infraestructura orientada a Internet. No se limite a sus servidores de nombres autorizados externos; examine la infraestructura de su conmutador y enrutador, sus firewalls y sus conexiones a Internet. Identifique los puntos únicos de falla. Determine si puede eliminarlos fácilmente (y de forma rentable).

Si es posible, considere una amplia distribución geográfica de sus servidores de nombres autorizados externos. Esto ayuda a evitar puntos únicos de falla, por supuesto, pero también ayuda cuando no está bajo ataque. Un servidor de nombres recursivo que resuelve un nombre de dominio en una de sus zonas intentará consultar el servidor de nombres autorizado más cercano a él, por lo que la distribución geográfica tenderá a proporcionar un mejor rendimiento a sus clientes y corresponsales. Si sus clientes están agrupados en determinadas geografías, intente colocar un servidor de nombres autorizado cerca de ellos para proporcionar las respuestas más rápidas.

Quizás la forma más básica de combatir los ataques DoS es sobreaprovisionar su infraestructura. La buena noticia es que aprovisionar en exceso sus servidores de nombres no es necesariamente caro; un servidor de nombres capaz puede manejar decenas o incluso cientos de miles de consultas por segundo. ¿No está seguro de cuál es la capacidad de sus servidores de nombres? Puede utilizar herramientas de consulta como dnsperf para probar el rendimiento de sus servidores de nombres, preferiblemente utilizando una plataforma de prueba similar a sus servidores de nombres de producción en un laboratorio en lugar de los propios servidores de producción.

Decidir cuánto aprovisionar en exceso sus servidores de nombres es subjetivo: ¿Cuál es el valor de su presencia en línea? ¿Hay otros componentes de su infraestructura orientada a Internet que fallarán antes que los servidores de nombres? Obviamente, es imprudente gastar dinero para construir una infraestructura DNS de primera clase detrás de un enrutador fronterizo o un firewall que fallará mucho antes de que sus servidores de nombres se pongan a sudar.

Si el dinero no es un problema, podría ser útil saber que los ataques DDoS de última generación contra la infraestructura de DNS pueden superar los 100 Gbps.

El uso de Anycast también puede ayudar a resistir un ataque DDoS. Anycast es una técnica que permite que varios servidores compartan una única dirección IP y funciona particularmente bien con DNS. De hecho, los servidores de nombres raíz de Internet han utilizado Anycast durante años para proporcionar datos de la zona raíz en todo el mundo y, al mismo tiempo, permitir que la lista de raíces se ajuste a un solo mensaje DNS basado en UDP.

Para implementar Anycast, los hosts que admiten sus servidores de nombres deberán ejecutar un protocolo de enrutamiento dinámico, como OSPF o BGP. El proceso de enrutamiento anunciará a sus enrutadores vecinos una ruta a una nueva dirección IP virtual en la que escucha su servidor de nombres. El proceso de enrutamiento también debe ser lo suficientemente inteligente como para dejar de anunciar esa ruta si el servidor de nombres local deja de responder. Puede pegar su demonio de enrutamiento a la salud de su servidor de nombres usando código de su propia construcción, o puede comprar un producto que se encargue de eso por usted. NIOS de Infoblox, no por casualidad, incluye soporte Anycast.

¿Cómo se defiende Anycast de los ataques DDoS? Bueno, supongamos que tiene seis servidores de nombres externos en dos grupos Anycast (es decir, tres comparten una dirección IP Anycast y tres comparten otra). Cada grupo contiene un miembro en los Estados Unidos, uno en Europa y uno en Asia. Un host que realice un ataque DDoS contra usted solo puede enviar tráfico a, y por lo tanto, solo atacar, a un miembro de cualquiera de los grupos desde cualquier punto de Internet a la vez. A menos que los atacantes puedan obtener suficiente tráfico de América del Norte, Europa y Asia simultáneamente para inundar su infraestructura, no tendrán éxito.

Por último, hay una manera de aprovechar la amplia distribución geográfica y Anycast al mismo tiempo, sin un desembolso de capital significativo: utilice un proveedor de DNS basado en la nube. Empresas como Dyn y Neustar ejecutan sus propios servidores de nombres Anycast en centros de datos de todo el mundo. Les paga para alojar sus zonas y responder consultas sobre sus datos. Y puede continuar manteniendo el control directo sobre los datos de su zona pidiéndole a un proveedor que configure sus servidores de nombres como secundarios para sus zonas, cargando los datos desde un servidor de nombres maestro que usted designe y administre internamente. Solo asegúrese de ejecutar el maestro oculto (es decir, sin ningún registro NS apuntando a él), o corre el riesgo de que un atacante lo apunte como un único punto de falla.

Una advertencia al utilizar proveedores de DNS basados ​​en la nube: la mayoría le factura, al menos en parte, en función de la cantidad de consultas que reciben sus servidores de nombres sobre los datos de sus zonas. En un ataque DDoS, esas consultas pueden aumentar drásticamente (completamente fuera de su control y para nada para su beneficio), así que asegúrese de que tengan una disposición para hacer frente a los ataques DDoS sin pasarle el costo del tráfico a usted.

Cómo evitar convertirse en cómplice de los ataques DDoS

Ahora sabe cómo configurar su infraestructura DNS para resistir un ataque DDoS. Sin embargo, es casi tan importante asegurarse de no ser cómplice de un ataque DDoS contra otra persona.

¿Recuerda la descripción de cómo los servidores DNS pueden amplificar el tráfico? Los atacantes pueden utilizar servidores de nombres abiertos recursivos y servidores de nombres autorizados como amplificadores, enviando consultas falsificadas que hacen que los servidores de nombres envíen respuestas más de 100 veces más grandes que la consulta a objetivos arbitrarios en Internet. Ahora, por supuesto, usted no quiere ser el objetivo de tal ataque, pero tampoco quiere ser cómplice. El ataque usa los recursos de sus servidores de nombres, así como su ancho de banda. Si el objetivo toma medidas para bloquear el tráfico desde su servidor de nombres a su red, luego de que finalice el ataque, es posible que el objetivo no pueda resolver los nombres de dominio en sus zonas.

Si ejecuta un servidor de nombres recursivo abierto, la solución es simple: no lo haga. Hay muy pocas organizaciones que tengan alguna justificación para ejecutar un servidor de nombres abierto a consultas recursivas. Google Public DNS y OpenDNS son dos que me vienen a la mente, pero si estás leyendo esto, supongo que probablemente no seas ellos. El resto de nosotros debería aplicar controles de acceso a nuestros servidores de nombres recursivos para asegurarnos de que solo los consultadores autorizados los utilicen. Eso probablemente significa limitar las consultas de DNS a direcciones IP en nuestras redes internas, lo cual es fácil de hacer en cualquier implementación de servidor de nombres que se precie. (El servidor DNS de Microsoft no admite controles de acceso basados ​​en direcciones IP en consultas. Lea lo que quiera en eso).

Pero, ¿y si ejecuta un servidor de nombres autorizado? Obviamente, no puede limitar las direcciones IP desde las que aceptará consultas, o no muchas, de todos modos (puede negar consultas de direcciones IP obviamente falsas, como direcciones RFC 1918). Pero puedes limitar las respuestas.

Dos "sombreros blancos" de Internet, Paul Vixie y Vernon Schryver, se dieron cuenta de que los ataques DDoS que utilizan servidores de nombres autorizados para la amplificación exhiben ciertos patrones de consulta. En particular, los atacantes envían a los servidores de nombres la misma consulta desde la misma dirección IP falsificada (o bloque de direcciones) una y otra vez, buscando la máxima amplificación. Ningún servidor de nombres recursivo con buen comportamiento haría eso. Habría almacenado en caché la respuesta y no volvería a preguntar hasta que transcurriera el tiempo de vida de los registros en la respuesta.