La récursivité DNS n'est pas sécurisée, mais nécessaire pour les applications internes?

16

Dans la gestion d'un Windows Server 2008, le serveur héberge DNS (est un serveur de noms) pour certains domaines, ainsi que l'hébergement de certaines applications accessibles au public.

Une analyse de sécurité a indiqué que la configuration DNS n'est pas sécurisée, car elle permet des requêtes récursives.

La désactivation des requêtes récursives a été tentée, mais plusieurs problèmes se sont produits (les e-mails envoyés à partir des applications locales n'ont pas été remis et une application s'exécutant localement qui se connecte à un site tiers n'a pas pu résoudre le nom de domaine pour la connexion, etc.). Il semble donc que les requêtes DNS qui proviennent du serveur lui-même dépendent de requêtes récursives pour fonctionner.

Existe-t-il un moyen de désactiver les requêtes récursives par le DNS hébergé sur le serveur tout en permettant aux requêtes DNS provenant du serveur de fonctionner? Je me demande si nous pouvons désactiver les requêtes récursives sur le serveur DNS local et définir le DNS sortant dans les paramètres réseau sur quelque chose d'externe (comme 8.8.8.8), de sorte que les requêtes DNS sortantes y arrivent en premier et que le DNS de ce serveur ne se termine que jusqu'à être interrogé pour les domaines qu'il héberge réellement localement.

Merci pour votre temps!

ilasno
la source

Réponses:

11

C'est une bonne idée de ne pas fournir de fonctionnalité de recherche récursive à l'ensemble d'Internet, donc la configuration de votre serveur DNS pour répondre uniquement aux requêtes pour lesquelles il fait autorité est une bonne chose TM .

Sur la surface , il ressemble à la conclusion que vous avez atteint dans votre dernier paragraphe est un bon: Configurer propres paramètres TCP / IP du serveur d'utiliser un serveur DNS qui est autorisé à fournir des recherches récurrentes. Le processus du serveur DNS n'utilise pas les serveurs DNS configurés dans les paramètres TCP / IP sur la carte réseau de l'ordinateur serveur pour quoi que ce soit en particulier. Au lieu de cela, il transfère les demandes (ou utilise des indications de racine) en fonction de la configuration du serveur DNS.

Lorsque les applications exécutées sur le serveur tentent d'interroger des domaines, le serveur DNS exécuté sur cette machine fait autorité pour la demande, en fin de compte, se rendra au processus du serveur DNS exécuté sur cette machine et la requête recevra une réponse.

Evan Anderson
la source
14

Existe-t-il un moyen de désactiver les requêtes récursives par le DNS hébergé sur le serveur tout en permettant aux requêtes DNS provenant du serveur de fonctionner?

Pas avec le serveur DNS de Microsoft, il n'y en a pas.

Avec le serveur DNS de l'ISC, BIND, on pourrait créer des points de vue. Le serveur DNS de Microsoft ne dispose pas d'un tel mécanisme. Ainsi, pour toute instance donnée de serveur DNS Microsoft, il faut choisir s'il s'agit d'un serveur DNS à contenu public ou d'un serveur DNS proxy site-local . Il ne peut pas héberger les choses et prétendre être différents types de serveurs pour différents clients DNS.

Le service / outil de test de sécurité est tout à fait juste. Il est recommandé de ne pas fournir de service proxy - tout type de service proxy: que ce soit un service proxy HTTP, un service proxy DNS ou un service de soumission SMTP - au reste d'Internet en dehors de son propre site. Beaucoup devriez avoir des serveurs distincts : un serveur DNS contenu la publication de vos données DNS public, sur vos noms de domaine que vous avez enregistrés, à tout le monde sur Internet; et un serveur DNS proxy local, qui fait le gros travail de résolution des requêtes au nom des ordinateurs de votre réseau local / organisation, qui n'est accessible qu'aux machines de votre organisation / sur votre réseau local. Avec le serveur DNS de Microsoft, ce n'est pas particulièrement facile.

Ce serait particulièrement difficile si votre machine était également un contrôleur de domaine. Vous déclarez que cette machine est directement accessible depuis tout Internet. Si une telle machine est un contrôleur de domaine, vous devez repenser votre organisation réseau maintenant . Vous exposeriez énormément de services internes au public, pas seulement un service DNS proxy. Travaillons donc sur la présomption que ce n'est pas un contrôleur de domaine.

Puisqu'il ne s'agit pas d'un contrôleur de domaine et qu'il s'agit simplement d'un serveur membre , vous n'avez pas besoin que le client DNS sur la machine utilise le propre serveur DNS de la machine (ou, initialement, le serveur DNS d'un autre contrôleur de domaine) pour le proxy. Service DNS, c'est le cas pour les contrôleurs de domaine. Si vous l'aviez fait, vous ne seriez pas en mesure de désactiver le service DNS proxy sur le serveur DNS de la machine. Heureusement, ce n'est pas un contrôleur de domaine, et son client DNS peut utiliser une autre machine pour le service DNS proxy, pas lui-même.

Cependant, le client DNS sur la machine du serveur membre doit toujours utiliser un serveur DNS proxy interne . Vous ne pouvez pas simplement le pointer vers un serveur DNS externe comme ceux fournis par votre FAI, Google ou toute autre partie qui ne connaît pas toutes les données DNS qu'Active Directory utilise sur votre réseau local . Vous pouvez cependant pointer le client DNS de la machine vers le serveur DNS sur un ou plusieurs de vos contrôleurs de domaine. C'est assez simple, et c'est ce que vous faites - après tout - déjà sur tous vos postes de travail sur votre LAN. Le client DNS sur votre serveur membre doit simplement être configuré comme le sont les clients DNS sur tous vos postes de travail .

Étant donné que le client DNS de votre machine n'utilise pas le serveur DNS exécuté sur la machine pour le service DNS proxy, vous configurez simplement le serveur DNS de Microsoft pour qu'il ne fournisse à quiconque aucun service DNS proxy sous quelque forme que ce soit.

Lectures complémentaires

JdeBP
la source
Excellente rédaction.
Nic
J'apprécie l'information, merci! Je travaille avec une infrastructure plus petite ici, donc la solution présentée est exagérée pour ce scénario.
ilasno
Juste une note rapide que cela n'est plus vrai depuis Server 2016 - Windows prend désormais en charge le DNS à cerveau divisé , y compris une option pour restreindre la recherche récursive en fonction de l'adresse du client. Cependant, la mise en place d'un serveur indépendant pour les demandes publiques reste l'option la plus simple.
Bob
5

Comme Evan l'a déclaré dans sa réponse, vos applications doivent utiliser le composant client DNS sur le serveur, qui est totalement indépendant du composant serveur DNS. Le composant serveur DNS peut être configuré pour ne pas effectuer de récursivité, ce qui lui permet de répondre aux requêtes qui lui sont soumises uniquement pour les zones DNS pour lesquelles il fait autorité.

Les applications peuvent utiliser les serveurs DNS configurés dans les propriétés TCP / IP de la carte réseau appropriée, qui peuvent être configurés pour utiliser tous les serveurs DNS qui effectueront la récursivité (tels que les serveurs DNS de Google). Les serveurs DNS configurés dans les propriétés TCP / IP de la carte réseau appropriée n'ont pas besoin de pointer vers le serveur DNS exécuté sur ce même serveur.

joeqwerty
la source
0

J'ai récemment eu le même problème et notre serveur DNS était utilisé pour des attaques d'amplification. Mais je dois continuer la récursivité pour nos autres serveurs internes.

Si vous avez un routeur Cisco, voici une solution possible. J'ai déplacé notre DNS externe vers un routeur Cisco 7200VXR et l'ai configuré pour répondre uniquement à des zones DNS spécifiques. Il interrogera les serveurs DNS internes afin que vous n'ayez pas à tout saisir à deux endroits.

Voici un extrait de la configuration Cisco que j'ai utilisée:

ip dns view default
 dns forwarder 192.168.0.xx (internal DNS server)
 domain round-robin

ip dns view-list default
 view default 1
  restrict name-group 1

ip dns name-list 1 permit abc.com
ip dns name-list 1 permit def.com
ip dns name-list 1 permit anyotherdomainthatyouhost.com
ip dns name-list 1 permit 3.2.1.in-addr.arpa (needed for reverse PTR lookups)

interface fastethernet0/0 (the interface where the IP address is that will host DNS)
 ip dns view-group default
 ip address 1.2.3.4 secondary (use the public facing IP you will use to host DNS)

ip dns server

N'oubliez pas non plus d'autoriser les paquets DNS dans le routeur avec une liste d'accès, telle que:

permit udp any host 1.2.3.4 eq domain
Brain2000
la source