Ajuster DNS pour protéger les serveurs contre DDoS

Le DNS (Domain Name System) sert à traduire les noms de domaine tels que « exemple.com » en adresses IP numériques. La récursivité DNS ouverte est une fonction activée par défaut sur plusieurs logiciels DNS.

Le DNS récursif peut être utilisé pour exécuter des attaques malicieuses sur un réseau. Ceci peut se produire lorsque les paramètres par défaut pour les services DNS ne sont pas ajustés lors d’une installation. Lorsqu’il est utilisé malicieusement, le service peut permettre à une tierce partie d’exécuter des attaques par déni de service (DDoS). Pour l’éviter, il faut ajuster les paramètres DNS.

Vérifier la vulnérabilité de votre serveur ou de votre périphérique

Vous pouvez tester vos adresses IP à l’aide des méthodes suivantes (xx.xx.xx.xx étant l’adresse IP de votre serveur) :

1 – À l’aide de la commande « dig » :
# dig +nocmd +nocomment +nostats ANY iweb.com @xx.xx.xx.xx

Exemple de sortie correspondant aux serveurs vulnérables :
;iweb.com.            IN    ANY
iweb.com.        13409    IN    A    xx.xx.xx.xx
iweb.com.        85409    IN    NS    nsy.iweb.com.
iweb.com.        85409    IN    NS    nsz.iweb.com.
iweb.com.        85409    IN    NS    sub.domain.tld.
iweb.com.        85409    IN    NS    sub.domain.tld.
iweb.com.        85409    IN    NS    sub.domain.tld.
iweb.com.        85409    IN    NS    sub.domain.tld.
[...]

Autre exemple de sortie (généralement pour des serveurs Windows) correspondant à une situation dans laquelle la récursivité a été désactivée, mais le DNS renvoie tout de même la liste des serveurs DNS root. Cette configuration peut être utilisée pour mener des attaques par amplification :

;iweb.com.            IN    ANY
.            3600    IN    NS    l.root-servers.net.
.            3600    IN    NS    j.root-servers.net.
.            3600    IN    NS    g.root-servers.net.
.            3600    IN    NS    i.root-servers.net.
.            3600    IN    NS    f.root-servers.net.
.            3600    IN    NS    k.root-servers.net.
[...]

Exemple de sortie correspondant aux serveurs qui ne sont pas vulnérables :
;iweb.com.            IN    ANY


2 – À l’aide de la commande « Nmap » :
# sudo nmap -Pn --script=dns-recursion -sU -p53 xx.xx.xx.xx

Exemple de sortie correspondant aux serveurs vulnérables :
PORT   STATE SERVICE
53/udp open  domain
 |_dns-recursion: Recursion appears to be enabled

Exemple de sortie correspondant aux serveurs qui ne sont pas vulnérables :

 - Le DNS est actif, mais la récursivité n’est pas disponible
PORT   STATE SERVICE
53/udp open  domain
Nmap done: 1 IP address (1 host up)

 - Le service DNS est fermé
PORT   STATE  SERVICE
53/udp closed domain

 - Le service DNS est filtré
PORT   STATE         SERVICE
53/udp open|filtered domain


Vous pouvez aussi consulter votre IP sur le site suivant, mais ce n'est pas une vérification en temps réel :
http://openresolverproject.org/

Solution :

Selon vos besoins, vous pouvez désactiver ou limiter la récursivité ouverte. Choisissez l’option qui convient à votre serveur et à votre système d’exploitation (Windows ou Linux), puis suivez les instructions ci-dessous :

OPTION A – Si la récursivité DNS peut être désactivée :

*) Pour un serveur DNS Microsoft Windows :

  • Désactiver la récursivité sur le serveur DNS : https://technet.microsoft.com/fr-ca/library/cc787602(v=ws.10).aspx
  • Puis renommer le fichier de cache des root-hints pour éviter que la référence aux zones root ne soit utilisée à des fins d’attaques par amplification DNS : Ouvrir le répertoire %systemroot%\system32\dns et renommer le fichier cache.dns en cache.dns.orig.
  • Une fois ces modifications effectuées, vous devez redémarrer le service DNS.

*) Pour un serveur Windows utilisant un serveur DNS Plesk :

  • Connectez-vous au panneau de contrôle Plesk avec le compte admin.
  • Dans le menu de gauche, allez dans la section « Server Management > Tools & Settings » (anciennement appelée « Server »).
  • Puis, dans le panneau principal, sélectionnez « DNS Template Settings » (anciennement appelé « DNS Settings »).
  • Allez dans l’onglet « DNS Recursion ».
  • Cliquez sur l’option « Deny », puis cliquez sur le bouton Set pour appliquer le changement.

*) Pour les serveurs Linux utilisant BIND :

  • Modifiez le fichier /etc/named.conf en changeant les variables suivantes dans la section « options{ » pour sécuriser votre service DNS :

    version "unknown";
    allow-transfer {none;};
    allow-recursion {none;};
    allow-query-cache {none;}; // for BIND 9.4+
    recursion no;
    additional-from-cache no;

  • Une fois ces modifications complétées, vous devez redémarrer le service DNS.


OPTION B – Si vous devez utiliser un DNS récursif pour répondre aux besoins de vos clients, il faut en restreindre l’utilisation à localhost, localnets et/ou aux adresses IP spécifiques de vos clients.

*) Pour les serveurs Microsoft Windows :

  • Les serveurs Windows devant utiliser un DNS récursif ouvert peuvent utiliser le pare-feu Windows pour restreindre l’accès au service DNS et empêcher que celui-ci ne soit exploité.

        Règles/paramètres pour le trafic DNS TCP/UDP entant :
        *Local IP*: any
        *Remote IP - /These IPs:/*  Ajoutez toutes vos IP sûres (autres
        serveurs de votre réseau).

  • Si le serveur possède un domaine Windows Active Directory, vous devrez ajouter les IP sources qui utilisent ce service.

*) Pour un serveur Windows utilisant un serveur DNS Plesk : (autorisant localhost et localnets) 

  • Connectez-vous à votre serveur dédié.
  • Du menu Démarrer, cliquez sur Exécuter et saisissez la commande suivante :
         notepad "%plesk_dir%dns\etc\named.user.conf"
  • Modifiez le fichier pour permettre la récursivité pour « localnets » au lieu de « tout ».
  • Sauvegardez et fermez le fichier. Les options seront comme ceci :
         options { allow-transfer {  localhost; localnets; }; allow-recursion { localhost; localnets; }; listen-on-v6 { none; }; version none; additional-from-cache no; };
  • Redémarrez le service « Named ». À partir du compte administrateur, allez dans le menu Démarrer, faire <<exécuter>>  et entrez << cmd >> et finalement, dans l’invite de commande saisissez la commande suivante :
         net stop named && net start named

*) Pour les serveurs Linux utilisant BIND : (autorisant localhost, localnets et des adresses IP spécifiques)

  • Modifiez le fichier /etc/named.conf en changeant les variables suivantes dans les sections « acl "trusted" » « options{ » :

    recursion yes;
    acl "trusted"{
    192.168.0.0/16; // change IPs as required
    64.15.128.0/19; // change IPs as required
    localhost;
    localnets;
    };

    options{
    ...
    allow-query { trusted; }; // trusted could be replaced by any only if necessary
    allow-transfer { trusted; };
    allow-recursion { trusted;} ;
    allow-query-cache { trusted; }; // for BIND 9.4+
    additional-from-cache no;
    ...
    };

Références :

  1. http://www.securitepublique.gc.ca/cnt/rsrcs/cybr-ctr/2013/tr13-002-fr.aspx
Vous avez d’autres questions ? Envoyer une demande

0 Commentaires

Cet article n'accepte pas de commentaires.
Réalisé par Zendesk