Mitigar ataques DDoS DNS

Los servidores DNS son uno de los componentes más críticos de una red y deben ser defendidos contra ataques. Uno de los tipos más básicos de ataques DNS es el ataque DDoS. Los ataques de este tipo están en aumento y pueden ser extremadamente destructivos. Para mitigar los ataques DDoS, puede vaciar los registros negativos, restringir el tiempo de vida (TTL) de los registros negativos, conservar la memoria Citrix ADC limitando la memoria consumida por la caché DNS, conservar los registros DNS en la caché y habilitar la omisión de caché DNS. También puede limitar las consultas DNS a un solo paquete y, por lo tanto, evitar los ataques de Slowloris.

Vaciar registros negativos

Un ataque DNS llena la caché con registros negativos (NXDOMAIN y NODATA). Como resultado, las respuestas a solicitudes legítimas no se almacenan en caché, por lo que las nuevas solicitudes se envían a un servidor back-end para su resolución DNS. Por lo tanto, las respuestas se retrasan.

Ahora puede vaciar los registros DNS negativos de la caché DNS del dispositivo Citrix ADC.

Vacíe los registros de caché negativos mediante la CLI

En el símbolo del sistema, escriba:

flush dns proxyrecords -type (dnsRecordType | negRecType) NXDOMAIN | NODATA

Ejemplo:

flush dns proxyrecords –negRecType NODATA

Descarga de registros de caché negativos mediante la interfaz gráfica de usuario

  1. Vaya a Configuración > Administración del tráfico > DNS > Registros.
  2. En el panel de detalles, haga clic en Desactivar registros proxy.
  3. En el cuadro Tipo de vaciado, seleccione Registros negativos.
  4. En el cuadro Tipo de registros negativos, seleccione NXDOMAIN o NODATA.

Protección contra ataques aleatorios de subdominios y NXDOMAIN

Para evitar ataques aleatorios de subdominio y NXDOMAIN, puede restringir la memoria caché DNS y ajustar los valores TTL para los registros negativos.

Para limitar la cantidad de memoria consumida por la caché DNS, puede especificar el tamaño máximo de caché (en MB) y también el tamaño de caché (en MB) para almacenar respuestas negativas. Cuando se alcanza cualquiera de los límites, no se agregan más entradas a la caché. Además, se registran mensajes syslog y, si ha configurado capturas SNMP, se generan capturas SNMP. Si no se establecen estos límites, el almacenamiento en caché continúa hasta que se agota la memoria del sistema.

Un valor TTL más alto para los registros negativos puede dar como resultado el almacenamiento de registros que no son valiosos durante un largo período de tiempo. Un valor TTL más bajo da como resultado el envío de más solicitudes al servidor back-end.

El TTL del registro negativo se establece en un valor que puede ser menor que el valor TTL o el valor “Expira” del registro SOA.

Nota:

  • Esta limitación se agrega por motor de paquetes. Por ejemplo, si MaxCacheSize se establece en 5 MB y el dispositivo tiene 3 motores de paquetes, el tamaño total de la caché es de 15 MB.
  • El tamaño de la caché para los registros negativos debe ser menor o igual al tamaño máximo de la caché.
  • Si reduce el límite de memoria caché DNS a un valor inferior a la cantidad de datos ya almacenados en caché, el tamaño de la caché permanece por encima del límite hasta que los datos caduquen (supera su TTL0 o se vacían (comando flush dns proxyrecords o Flush Proxy Records en la GUI de Citrix ADC).
  • Para configurar capturas SNMP, consulte Configuración de NetScaler para generar capturas SNMP.

Limite la memoria consumida por la caché DNS mediante la CLI

En el símbolo del sistema, escriba:

set dns parameter -maxCacheSize <MBytes> -maxNegativeCacheSize <MBytes>

Ejemplo:

set dns parameter - maxCacheSize 100 -maxNegativeCacheSize 25

Limite la memoria consumida por la caché DNS mediante la interfaz gráfica de usuario

Vaya a Configuración > Administración del tráfico > DNS, haga clic en Cambiar configuración de DNS y establezca los siguientes parámetros:

  • Tamaño máximo de caché en MB
  • Tamaño máximo de caché negativo en MB

Restringir TTL de registros negativos mediante la CLI

En el símbolo del sistema, escriba:

set dns parameter -maxnegcacheTTL <secs>

Ejemplo:

set dns parameter -maxnegcacheTTL 360

Restringir TTL de registros negativos mediante la GUI

  1. Vaya a Configuración > Administración del tráfico > DNS.
  2. Haga clic en Cambiar configuración DNS y establezca el parámetro TTL de caché negativa máxima en segundos.

Conservar registros DNS en la caché

Un ataque puede inundar la caché DNS con entradas que no son valiosas, pero puede hacer que el vaciado de los registros legítimos ya almacenados en caché haga espacio para las nuevas entradas. Para evitar que los ataques llenen la caché con datos no válidos, puede conservar los registros legítimos incluso después de que superen sus valores TTL.

Si habilita el parámetro CachenoExpiración, los registros actualmente en la caché se conservan hasta que inhabilite el parámetro.

Nota:

  • Esta opción solo se puede utilizar cuando se especifica el tamaño máximo de la caché (parámetro MaxCacheSize).
  • Si MaxNegcachettl está configurado y CachenoExpire está habilitado, CachenoExpire toma prioridad.

Conservar registros DNS en la caché mediante la CLI

En el símbolo del sistema, escriba:

set dns parameter -cacheNoExpire ( ENABLED | DISABLED)

Ejemplo:

set dns parameter -cacheNoExpire ENABLED

Conservar registros DNS en la caché mediante la interfaz gráfica de usuario

  1. Vaya a Configuración > Administración del tráfico > DNS y haga clic en Cambiar configuración de DNS.
  2. Seleccione Caché Sin caducar.

Habilitar omisión de caché DNS

Para una mayor visibilidad y control de las solicitudes DNS que llegan al dispositivo Citrix ADC, puede establecer el parámetro CacheHitBypass para reenviar todas las solicitudes a los servidores back-end y permitir que se construya la memoria caché pero no se utilice. Después de generar la caché, puede inhabilitar el parámetro para que las solicitudes se sirvan desde la caché.

Habilitar la omisión de caché DNS mediante la CLI

En el símbolo del sistema, escriba:

set dns parameter -cacheHitBypass ( ENABLED | DISABLED )

Ejemplo:

set dns parameter -cacheHitBypass ENABLED

Habilitar la omisión de caché DNS mediante la interfaz gráfica de usuario

  1. Vaya a Configuración > Administración del tráfico > DNS y haga clic en Cambiar configuración de DNS.
  2. Seleccione Bypass de aciertos de caché.

Prevenir el ataque de Slowloris

Una consulta DNS que abarca varios paquetes presenta la amenaza potencial de un ataque Slowloris. El dispositivo Citrix ADC puede eliminar de forma silenciosa las consultas DNS que se dividen en varios paquetes.

Puede establecer el parámetro SplitPktQueryProcessing en Permitir o DROP una consulta DNS si la consulta está dividida en varios paquetes.

Nota: Esto es aplicable solo para TCP DNS.

Limite las consultas DNS a un solo paquete mediante la CLI

En el símbolo del sistema, escriba:

set dns parameter -splitPktQueryProcessing ( ALLOW | DROP )

Ejemplo:

set dns parameter -splitPktQueryProcessing DROP

Limite las consultas DNS a un solo paquete mediante la interfaz gráfica de usuario

  1. Vaya a Configuración > Administración del tráfico > DNS y haga clic en Cambiar configuración de DNS.
  2. En el cuadro Procesamiento de consultas de paquetes divididos, elija Permitir o DROP.

Recopilar estadísticas de las respuestas DNS servidas desde la caché

Puede recopilar estadísticas de las respuestas DNS servidas desde la caché y utilizar estas estadísticas para crear un umbral más allá del cual se elimina el tráfico DNS adicional, y aplicar este umbral con una directiva basada en ancho de banda. Anteriormente, el cálculo del ancho de banda para un servidor virtual de equilibrio de carga DNS no era preciso, porque no se notificaba el número de visitas de caché.

En el modo proxy, las estadísticas de bytes de solicitud, bytes de respuesta, totales de paquetes rcvd y totales de paquetes enviados se actualizan continuamente. Anteriormente, estas estadísticas no siempre se actualizaban, especialmente para un servidor virtual de equilibrio de carga DNS.

El modo proxy también ahora le permite determinar el número de respuestas DNS servidas desde la caché. Para ayudar a recopilar estas estadísticas, se han agregado las siguientes opciones al <DNSvirtualServerName> comando stat lb vserver:

  • Solicitudes: Número total de solicitudes recibidas por el servidor DNS o DNS_TCP vserver. Incluye las solicitudes reenviadas al back-end y las solicitudes respondidas desde la caché.
  • Vserver hits: Número total de solicitudes reenviadas al back-end. El número total de aciertos de caché es la diferencia entre los aciertos de solicitudes y Vserver.
  • Respuestas: Número total de respuestas enviadas por este servidor virtual. Por ejemplo, si un servidor virtual LB de DNS recibió 5 solicitudes DNS, reenvió 3 de ellas al back-end y sirvió 2 de ellas desde la caché, el valor correspondiente de cada una de estas estadísticas sería el siguiente:
    • Visitas de servidor virtual: 3
    • Solicitudes: 5
    • Respuestas: 5