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 à la hausse et peuvent être extrêmement destructrices. Pour atténuer les attaques DDoS, vous pouvez vider les enregistrements négatifs, limiter la durée de vie (TTL) des enregistrements négatifs, préserver la mémoire Citrix ADC en limitant la mémoire consommée par le cache DNS, conserver les enregistrements DNS dans le cache et activer le contournement du cache DNS. Vous pouvez également limiter les requêtes DNS à un seul paquet et ainsi empêcher les attaques Slowloris.

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, vous pouvez spécifier la taille maximale du cache (en Mo), ainsi que la taille du cache (en Mo) pour le stockage des 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 valables pendant une longue période. Une valeur de TTL inférieure entraîne l’envoi d’un plus grand nombre de demandes au serveur principal.

La TTL de l’enregistrement négatif est définie sur une valeur qui peut être inférieure à la valeur TTL ou à la valeur « Expire » de l’enregistrement SOA.

Remarque :

  • 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 (dépasse sa valeur TTL0 ou sont vidées (commande vider dns proxyrecords ou vider les enregistrements proxy 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 qui ne sont pas valables mais qui peuvent entraîner le vidage des enregistrements légitimes déjà mis en cache afin de faire de la place pour les 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.

Remarque :

  • 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 arrivant à l’appliance Citrix ADC, vous pouvez définir le paramètre CacheHitBypass pour transférer toutes les demandes aux serveurs back-end et permettre la création 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 de 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 : Ceci est applicable uniquement pour DNS TCP.

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 et utiliser ces statistiques pour créer un seuil au-delà duquel le trafic DNS supplémentaire est supprimé, et appliquer ce seuil avec 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 précis, car le nombre d’accès au cache n’était pas signalé.

En mode proxy, les statistiques des octets de demande, octets de réponse, Total Packets rcvd et Total Packets envoyés sont mises à jour en permanence. 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 faciliter la collecte de ces statistiques, les options suivantes ont été ajoutées à la <DNSvirtualServerName> commande stat lb vserver :

  • Demandes — Nombre total de demandes reçues par le serveur 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 requêtes transférées vers le back-end. Le nombre total d’accès au cache correspond à la différence entre les appels Requests et Vserver.
  • 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 hits : 3
    • Demandes : 5
    • Réponses : 5