Citrix ADC

Atténuer les attaques DDoS DNS

Les serveurs DNS sont l’un des composants les plus critiques d’un réseau et doivent être défendus contre les attaques. L’un des types les plus basiques d’attaques DNS est l’attaque DDoS. Les attaques de ce type sont en hausse et peuvent être destructrices. Vous pouvez effectuer les opérations suivantes pour atténuer les attaques DDoS :

  • Rincer les enregistrements négatifs.
  • Restreindre le temps de vie (TTL) des enregistrements négatifs.
  • Préservez la mémoire Citrix ADC en limitant la mémoire consommée par le cache DNS.
  • Conservez les enregistrements DNS dans le cache.
  • Activer le contournement du cache DNS.

Purger les enregistrements négatifs

Une attaque DNS remplit le cache avec des enregistrements négatifs (NXDOMAIN et NODATA). Par conséquent, les réponses aux demandes légitimes ne sont pas mises en cache, de sorte que les nouvelles demandes sont envoyées à un serveur principal pour une résolution DNS. Les réponses sont donc retardées.

Vous pouvez désormais vider les enregistrements DNS négatifs du cache DNS de l’appliance Citrix ADC.

Vider les enregistrements de cache négatifs à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

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

Exemple :

flush dns proxyrecords –negRecType NODATA

Vider les enregistrements de cache négatifs à l’aide de l’interface graphique

  1. Accédez à Configuration > Gestion du trafic > DNS > Enregistrements .
  2. Dans le volet d’informations, cliquez sur Vider les enregistrements proxy.
  3. Dans la zone Type de vidage, sélectionnez Enregistrements négatifs .
  4. Dans la zone Type d’enregistrements négatifs, sélectionnez NXDOMAIN ou NODATA .

Protection contre les attaques aléatoires de sous-domaine et NXDOMAIN

Pour éviter les attaques aléatoires de sous-domaine et de NXDOMAIN, vous pouvez restreindre la mémoire cache DNS et ajuster les valeurs TTL pour les enregistrements négatifs.

Pour limiter la quantité de mémoire consommée par le cache DNS, spécifiez la taille maximale du cache (en Mo), ainsi que la taille du cache (en Mo) pour stocker les réponses négatives. Lorsque l’une ou l’autre des limites est atteinte, aucune autre entrée n’est ajoutée au cache. En outre, les messages syslog sont consignés et, si vous avez configuré les interruptions SNMP, les interruptions SNMP sont générées. Si ces limites ne sont pas définies, la mise en cache continue jusqu’à épuisement de la mémoire système.

Une valeur TTL plus élevée pour les enregistrements négatifs peut entraîner le stockage d’enregistrements qui ne sont pas précieux depuis longtemps. Une valeur de TTL inférieure entraîne l’envoi d’un plus grand nombre de demandes au serveur principal.

Le TTL de l’enregistrement négatif est défini sur une valeur qui peut être la moins élevée entre la valeur TTL ou la valeur « Expire » de l’enregistrement SOA.

Note :

  • Cette limitation est ajoutée par moteur de paquets. Par exemple, si MaxCacheSize est défini sur 5 Mo et que l’appliance dispose de 3 moteurs de paquets, la taille totale du cache est de 15 Mo.
  • La taille du cache pour les enregistrements négatifs doit être inférieure ou égale à la taille maximale du cache.
  • Si vous réduisez la limite de mémoire cache DNS à une valeur inférieure à la quantité de données déjà mises en cache, la taille du cache reste supérieure à la limite jusqu’à ce que les données soient épuisées. Autant dire, dépasse son TTL0 ou est vidé (flush dns proxyrecords commande ou Flush Proxy Records dans l’interface graphique Citrix ADC).
  • Pour configurer les interruptions SNMP, reportez-vous à la section Configuration de NetScaler pour générer des interruptions SNMP.

Limiter la mémoire consommée par le cache DNS à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

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

Exemple :

set dns parameter - maxCacheSize 100 -maxNegativeCacheSize 25

Limiter la mémoire consommée par le cache DNS à l’aide de l’interface graphique

Accédez à Configuration > Gestion du trafic > DNS, cliquez sur Modifier les paramètres DNS et définissez les paramètres suivants :

  • Taille maximale du cache en Mo
  • Taille maximale du cache négatif en Mo

Restreindre la TTL des enregistrements négatifs à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

set dns parameter -maxnegcacheTTL <secs>

Exemple :

set dns parameter -maxnegcacheTTL 360

Restreindre la TTL des enregistrements négatifs à l’aide de l’interface graphique

  1. Accédez à Configuration > Gestion du trafic > DNS .
  2. Cliquez sur Modifier les paramètres DNS et définissez le paramètre Max Negative Cache TTL in sec.

Conserver les enregistrements DNS dans le cache

Une attaque peut inonder le cache DNS avec des entrées non importantes, mais peut provoquer le vidage des enregistrements légitimes déjà mis en cache pour faire de la place aux nouvelles entrées. Pour empêcher les attaques de remplir le cache avec des données non valides, vous pouvez conserver les enregistrements légitimes même après qu’ils dépassent leurs valeurs TTL.

Si vous activez le paramètre CacheNoExpire, les enregistrements actuellement dans le cache sont conservés jusqu’à ce que vous désactiviez le paramètre.

Note :

  • Cette option ne peut être utilisée que lorsque la taille maximale du cache est spécifiée (paramètre MaxCacheSize).
  • Si MaxNegCacheTL est configuré et CacheNoExpire est activé, CacheNoExpire prend la priorité.

Conserver les enregistrements DNS dans le cache à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

set dns parameter -cacheNoExpire ( ENABLED | DISABLED)

Exemple :

set dns parameter -cacheNoExpire ENABLED

Conserver les enregistrements DNS dans le cache à l’aide de l’interface graphique

  1. Accédez à Configuration > Gestion du trafic > DNS et cliquez sur Modifier les paramètres DNS.
  2. Sélectionnez Cache No Expiration.

Activer le contournement du cache DNS

Pour une meilleure visibilité et un meilleur contrôle des requêtes DNS, définissez le paramètre CacheHitByPass pour transférer toutes les requêtes vers les serveurs back-end et autoriser la génération du cache mais non utilisée. Une fois le cache créé, vous pouvez désactiver le paramètre afin que les requêtes soient traitées à partir du cache.

Activer le contournement du cache DNS à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

set dns parameter -cacheHitBypass ( ENABLED | DISABLED )

Exemple :

set dns parameter -cacheHitBypass ENABLED

Activer le contournement du cache DNS à l’aide de l’interface graphique

  1. Accédez à Configuration > Gestion du trafic > DNS et cliquez sur Modifier les paramètres DNS.
  2. Sélectionnez Cache Hit Bypass.

Prévenir l’attaque Slowloris

Une requête DNS couvrant plusieurs paquets présente la menace potentielle d’une attaque Slowloris. L’appliance Citrix ADC peut supprimer silencieusement les requêtes DNS qui sont divisées en plusieurs paquets.

Vous pouvez définir le paramètre splitPktQueryProcessing sur ALLOW ou DROP une requête DNS si la requête est divisée en plusieurs paquets.

Remarque : Ce paramètre est applicable uniquement pour le TCP DNS.

Limiter les requêtes DNS à un seul paquet à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

set dns parameter -splitPktQueryProcessing ( ALLOW | DROP )

Exemple :

set dns parameter -splitPktQueryProcessing DROP

Limiter les requêtes DNS à un seul paquet à l’aide de l’interface graphique

  1. Accédez à Configuration > Gestion du trafic > DNS et cliquez sur Modifier les paramètres DNS.
  2. Dans la zone Traitement des requêtes de paquets fractionnés, choisissez ALLOW ou DROP.

Collecter des statistiques sur les réponses DNS fournies à partir du cache

Vous pouvez collecter des statistiques sur les réponses DNS fournies à partir du cache. Utilisez ensuite ces statistiques pour créer un seuil au-delà duquel plus de trafic DNS est supprimé, et appliquer ce seuil à l’aide d’une stratégie basée sur la bande passante. Auparavant, le calcul de la bande passante pour un serveur virtuel d’équilibrage de charge DNS n’était pas exact, car le nombre de requêtes envoyées à partir du cache n’était pas signalé.

En mode proxy, les statistiques relatives aux octets de requête, aux octets de réponse, au total des paquets reçus et aux statistiques Total des paquets envoyés sont continuellement mises à jour. Auparavant, ces statistiques n’étaient pas toujours mises à jour, en particulier pour un serveur virtuel d’équilibrage de charge DNS.

Le mode proxy vous permet également de déterminer le nombre de réponses DNS servies à partir du cache. Pour collecter ces statistiques, les options suivantes ont été ajoutées à la stat lb vserver <DNSvirtualServerName> commande :

  • Demandes  : nombre total de demandes reçues par le serveur virtuel DNS ou DNS_TCP. Inclut les demandes transférées vers le back-end et les demandes traitées depuis le cache.
  • Vserver hits  : nombre total de demandes transférées vers le back-end. Le nombre de demandes servies à partir du cache correspond à la différence entre le nombre total de demandes et le nombre de demandes servies à partir du serveur virtuel.
  • Réponses — Nombre total de réponses envoyées par ce serveur virtuel. Par exemple, si un serveur virtuel DNS LB recevait 5 demandes DNS, en remettait 3 au back-end et en servait 2 à partir du cache, la valeur correspondante de chacune de ces statistiques serait la suivante :
    • Vserver accès : 3
    • Demandes : 5
    • Réponses : 5