[DNS] Quelques bonnes pratiques pour les DNS AD (2ème partie)

Configurer le nettoyage des zones DNS

Nous avons vu dans l'article précédent quelques éléments de base pour la configuration du serveur DNS et des zones DNS intégrées Active Directory.

Nous allons poursuivre avec quelques recommandations sur la gestion du service DNS afin de garder des zones à jour et de réduire les risques liés aux caches DNS.

Nous allons commencer par configurer le nettoyage des zones DNS. Il est possible de définir deux valeurs afin de gérer le nettoyage.

  • Intervalle de non-actualisation : période pendant laquelle l'enregistrement ne peut être mis à jour depuis la date de la dernière actualisation
  • Intervalle d'actualisation : période pendant laquelle l'enregistrement peut être mis à jour.

Pour définir les paramètres de nettoyage, faites un clic droit sur le nom du serveur depuis la console de gestion de DNS (DNSMgmt.msc). Sélectionnez l'option « Définir le vieillissement/ Nettoyage pour toutes les zones… »

Sélectionnez la case « Nettoyer les enregistrements de ressources obsolètes », puis cliquez sur OK.

Sélectionnez la case « Appliquer ces paramètres aux zones existantes intégrées à Active Directory », sinon à défaut il vous faudra remettre les paramètres sur chaque zone.

 

Une fois le paramètre défini, faites un clic droit sur le nom du serveur, puis « propriétés ». Dans la partie avancée, sélectionnez l'option « Activer le nettoyage automatique des enregistrements obsolètes ».

 

Il vous faudra redémarrer le service DNS après les modifications.

 

 

Vous pourrez suivre les événements de nettoyage depuis l'observateur d'événement en surveillant les ID 2501.

Eviter les transfert de zone

Evitez d'activer le transfert de zone DNS ou si vous devez l'utiliser, protégez le trafic avec IPSEC https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee649192(v=ws.10)?redirectedfrom=MSDN .

 
Protéger le cache DNS contre la pollution

 

Lorsque vous envoyer une requête de résolution DNS à votre serveur DNS sur un enregistrement dont il ne fait pas autorité, il mettra la réponse dans le cache pour une durée équivalente à la durée de vie de l'enregistrement. Pendant cette période, si le serveur DNS reçoit une autre demande pour le même nom, il utilisera le cache et ne sera pas obligé de rechercher une réponse sur Internet.

Vous avez la possibilité d'afficher le cache du serveur DNS, depuis la console de gestion du DNS (DNSMgmt.msc) en activant l'affichage détaillé dans le menu « affichage ».

Après avoir activé l'option, vous devriez voir le cache de votre serveur DNS dans le dossier « Recherches mises en cache ».

Il est possible d'effacer le cache DNS depuis la console de gestion de DNS.

La commande PowerShell clear-DnsServerCache permet également d'effacer le cache DNS sur un serveur. 

La commande Show-DnsServerCache permet de lire le cache du serveur DNS.

Le petit script ci-dessous permet d'effacer les caches sur tous les contrôleurs de domaines.

$dcs=Get-ADDomainController -Filter *

foreach ($dc in $dcs)

{

Clear-DnsServerCache -ComputerName $dc.hostname -Force

}

 

La pollution du cache ou l'empoisonnement représente un risque pouvant entraîner des problèmes. Un attaquant peu par exemple rediriger certaines url sur une adresse piraté, en utilisant un scénario du type Man In The Middle.

Il est recommandé de ne pas désactiver la protection du cache contre la pollution. Pour vérifier que l'option est bien activée, vous pouvez ouvrir les propriétés du serveur DNS depuis la console de gestion des services DNS, puis dans la partie avancée, vérifiez que l'option de serveur « Sécuriser le cache contre la pollution » est bien activé.

La commande PowerShell suivante permet de vérifier si la protection contre la pollution du cache est activée sur le serveur désigné :

(Get-DnsServerCache -ComputerName lab2016dc1).enablePollutionProtection

 

Depuis une mise à jour sur Windows server 2008, concernant une vulnérabilité d'empoisonnement des caches DNS, le système utilise un pool de socket aléatoire avec 2500 possibilités pour le port source. Il est possible de modifier la taille du pool entre 0 et 10000, plus le chiffre est élevé et plus le risque de d'empoisonnement du cache DNS est faible. La valeur par défaut est de 2500.

Pour comprendre le principe, lorsque le serveur DNS a besoin de résoudre un nom dont il ne fait pas autorité, il va avoir besoin d'interroger un autre DNS. La réponse reçue fera office de réponse valable pendant la durée de vie et sera stockée dans le cache.  Par défaut un attaquant pourrait envoyer une demande de résolution de nom et en même temps envoyé des paquets de réponses DNS pour la même question en truquant la réponse. Pour réduite ce risque, le serveur DNS envoi une requête à un autre serveur DNS en utilisant un port source aléatoire et comme port de destination, le port 53, bien connu. La réponse du serveur devra lui parvenir sur le port en incluant l'ID de transaction. Il sera difficile à un attaquant de prédire le port source s'il varie aléatoirement et provoquer un empoisonnement de la zone DNS.

Si l'option de pool de socket est activée par défaut, il est possible de modifier la taille du pool. Par défaut de 2500, il est possible d'aller jusqu'à 10000.

Il n'est pas recommandé de désactiver cette protection.

La commande suivante permet de voir la taille du pool de socket :

DnsCmd /info /SocketPoolSize

 

La commande suivante permet de modifier la taille du pool de socket

 

Dnscmd /config /SocketPoolSize 3000

 

Vous trouverez plus d'information dans les liens suivants :

https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2008/ms08-037?redirectedfrom=MSDN

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee649174(v=ws.10)?redirectedfrom=MSDN

Il est également possible de modifier la durée de persistance des enregistrements dans le cache DNS. Cette valeur est un pourcentage de la durée de vie TTL de l'enregistrement. Pendant cette période, l'enregistrement ne pourra être écrasé par une nouvelle valeur. La commande suivante permet de consulter la valeur actuelle de persistance dans le cache.

dnscmd /info CacheLockingPercent

Il n'est pas recommandé de modifier cette valeur qui est de 100%, mais si vous souhaitez tout de même le faire ou si vous souhaitez rétablir la valeur par défaut, vous pouvez utiliser la commande suivante.

Dnscmd /config /CacheLockingPercent 100

 

 

 

Il est recommandé pour le rôle serveur DNS :

  • D'utiliser des serveurs DNS sur un OS supporté et maintenu à jour
  • D'utiliser des zones intégrées Active Directory n'acceptant que les mises à jour sécurisés
  • De configurer le vieillissement et le nettoyage des zones
  • D'éviter les transferts de zone et si c'est indispensable d'utiliser IPSEC pour le sécuriser
  • De ne pas désactiver le round robin
  • De ne pas désactiver la protection contre la pollution du cache DNS, de ne pas réduite la valeur SocketPoolSize et conserver la durée de verrouillage du cache à 100%

 

Nous verrons dans des prochains articles, qu'il est possible de renforcer encore plus la sécurité des services DNS.

Theme: 

Systeme: 

Annee: 

Type: