3 votes

Comment configurer le serveur MacOS pour empêcher le transfert de zones DNS ?

La documentation de MacOS Server 10.12.6 indique qu'il faut empêcher les transferts arbitraires de zones à partir de notre serveur DNS, et que le moyen d'y parvenir est de mettre en place un pare-feu sur le port 53 pour toute personne ne faisant pas partie de notre réseau local, avec des exceptions spécifiques pour nos serveurs DNS secondaires.

Ce qu'ils ne mentionnent pas, c'est que le port 53 est l'endroit où les tous Le trafic DNS va, donc le pare-feu de ce port ferme également nos services DNS pour tous ceux qui sont en déplacement. Oui, nous avons des connexions VPN ; non, elles ne sont pas appliquées et nous ne voulons pas commencer à le faire.

La question qui se pose alors est la suivante 1) comment demander au serveur de faire la distinction entre les transferts et les simples requêtes DNS ; 2) si c'était simple, pourquoi la documentation d'Apple ne dit-elle pas de le faire ? que ? J'ai cherché et trouvé les instructions pour faire cela avec le bon vieux BIND n'importe où sauf sur un Mac - et c'est le même fichier que la documentation m'a dit d'éditer il y a deux semaines pour résoudre un problème de sécurité différent.

/Applications/Server.app/Contents/ServerRoot/private/etc/named.conf

La prochaine étape consiste à modifier le fichier, à essayer d'attaquer mon propre serveur et, en cas d'échec, à marquer l'opération comme terminée. Dans ce cas, je peux revenir et répondre à ma propre question. Mais cela nécessite de trouver comment faire une attaque par transfert de zone - et cela me ramène à la case départ si je suis les instructions de BIND vanille et que cela ne fonctionne pas. Quelqu'un a une idée ?

1voto

klanomath Points 63400

Préface : le dossier /Applications/Server.app/Contents/ServerRoot/private/etc/named.conf mentionné dans votre question est no le fichier de configuration utilisé par le serveur MacOS. Au lieu de cela, le fichier est situé à l'adresse suivante /Library/Server/named/named.conf .

Le fichier dans ServerRoot est le fichier named.conf par défaut, plus ou moins vide. Lors de la configuration initiale, en lançant Server.app pour la première fois, le fichier named.conf de ServerRoot est copié dans le fichier /Library/Server/named/ .


Les autorisations d'accès aux différentes fonctions du serveur DNS sont déterminées par des listes de contrôle d'accès (ACL). L'acl pré-configuré dans le serveur MacOS est le suivant com.apple.ServerAdmin.DNS.public .

En fonction de vos réglages dans le panneau principal de DNS, l'ACL com.apple.ServerAdmin.DNS.public est peuplé de réseaux :

  • Si les recherches sont effectuées pour tous les clients :

    enter image description here

    l'ACL correspondante dans named.conf ressemble à ceci :

    acl "com.apple.ServerAdmin.DNS.public" {
        any;
    };
  • Si des recherches sont effectuées pour certains clients (exemple uniquement) :

    enter image description here

    l'ACL correspondante dans named.conf ressemble à ceci :

    acl "com.apple.ServerAdmin.DNS.public" {
        172.16.0.0/16;
        localhost;
        localnets;
    };

    La seule ACL disponible dans named.conf après la configuration initiale est com.apple.ServerAdmin.DNS.public .

Par défaut, cette liste de contrôle autorise les recherches dans la base de données vue pour tous les réseaux membres :

view "com.apple.ServerAdmin.DNS.public" { 
    zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update {
            none;
        };
    };

et permet également les transferts de zones dans le view > zone [nom_de_la_zone] > allow-transfers pour tous les réseaux membres.

...
    zone "test.home" IN {
        type master;
        file "db.test.home";
        allow-transfer {                      
            com.apple.ServerAdmin.DNS.public; 
        };
        allow-update {
        none;
        };
...

Pour séparer les clients de consultation des clients de transfert de zone (AKA slaves), il suffit de créer une nouvelle ACL "slaves" (exemple) :

acl "com.apple.ServerAdmin.DNS.public" {
    172.16.0.0/16;
    localhost;
    localnets;
};
acl "slaves" {
    172.16.1.8/32;  #first DNS slave
    172.16.1.18/32; #second DNS slave
};

Pour limiter le transfert de zone d'une zone particulière aux seuls esclaves, modifiez la directive allow-transfer ACL to slaves :

...
    zone "test.home" IN {
        type master;
        file "db.test.home";
        allow-transfer {       
            slaves;            
        };
        allow-update {
        none;
        };
...

N'incluez pas les flèches accidentellement et relancez le service DNS par la suite !


Une approche plus avancée et plus sûre consiste à utiliser des secrets/clés partagés, ce qui est expliqué ici : Utilisation de TSIG pour permettre des transferts de zone sécurisés entre serveurs Bind 9.x . Je n'ai pas réussi à le faire fonctionner dans Sierra.


Pour vérifier si les transferts de zone sont possibles vers des hôtes arbitraires, utilisez le client (attaquant) :

dig @dns_server_ip example.org axfr

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X