¿Cómo configurar el servidor macOS para evitar la transferencia de zona DNS?

2
La documentación de

macOS Server 10.12.6 dice que deberíamos evitar transferencias de zona arbitrarias fuera de nuestro servidor DNS, y que la forma de hacerlo es a través del puerto 53 de firewall para cualquier persona que no esté en nuestra LAN, con excepciones específicas para nuestros servidores DNS secundarios .

Lo que no mencionan es que el puerto 53 es donde se dirige el tráfico de DNS all , por lo que el puerto de cortafuegos de ese puerto también apaga nuestros servicios de DNS para cualquier persona en la carretera. Sí, tenemos conexiones VPN; No, no se aplican y no queremos comenzar.

Entonces, la pregunta se convierte en: 1) ¿cómo le ordenamos al servidor que haga una distinción entre las transferencias y las solicitudes de DNS antiguas? 2) Si eso fuera simple, ¿por qué la documentación de Apple no dice hacer eso ? Busqué y encontré las instrucciones para hacer esto con BIND en cualquier lugar que no fuera una Mac, y es el mismo archivo que la documentación me dijo que editara hace dos semanas para solucionar un problema de seguridad diferente.

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

Mi siguiente paso es editar el archivo, intentar atacar mi propio servidor y, si falla, marcarlo como hecho. En cuyo caso puedo volver y responder mi propia pregunta. Pero esto requiere descubrir cómo realizar un ataque de transferencia de zona, y me deja en el punto de partida si sigo las instrucciones VINALES de vainilla y no funciona. ¿Alguien tiene alguna idea?

    
pregunta Jeff Porten 30.10.2017 - 04:14

1 respuesta

1

Prefacio: el archivo /Applications/Server.app/Contents/ServerRoot/private/etc/named.conf mencionado en su pregunta es no el archivo de configuración utilizado por el servidor macOS En su lugar, el archivo se encuentra en /Library/Server/named/named.conf .

El archivo en ServerRoot es el archivo con nombre .conf predeterminado más o menos vacío. En la configuración inicial al iniciar Server.app por primera vez, ServerRoot named.conf se copia en / Library / Server / named / .

Los permisos de acceso a varias funciones del servidor DNS están determinados por las ACL. La acl pre-configurada en el servidor macOS es com.apple.ServerAdmin.DNS.public .

Dependiendo de su configuración en el panel principal de DNS, la ACL com.apple.ServerAdmin.DNS.public se llena con redes:

  • Si las búsquedas se realizan para todos los clientes:

    laACLrespectivaennamed.confseveasí:

    acl"com.apple.ServerAdmin.DNS.public" {
        any;
    };
    
  • Si las búsquedas se realizan para algunos clientes (solo ejemplo):

    laACLrespectivaennamed.confseveasí:

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

    La única ACL disponible en named.conf después de la configuración inicial es com.apple.ServerAdmin.DNS.public .

Esta ACL de forma predeterminada permite búsquedas en la sección ver para todas las redes miembros:

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

y también permite transferencias de zona en la vista > zone [zone_name⁣] > Permitir-transferencias sección para todas las redes miembros.

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

Para separar los clientes de búsqueda de los clientes de transferencia de zona (esclavos AKA) simplemente cree un nuevo "esclavo" de ACL (ejemplo):

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
};

Para restringir una transferencia de zona para una zona en particular solo a esclavos, modifique la ACL de la directiva de transferencia permitida a esclavos:

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

¡No incluya las flechas accidentalmente y reinicie el servicio DNS después!

Un más avanzado & El enfoque seguro es usar claves / secretos compartidos que se explican aquí: Uso de TSIG para habilitar transferencias de zona seguras entre servidores Bind 9.x . Aunque no conseguí que esto funcionara en Sierra.

Para verificar si es posible realizar transferencias de zona a hosts arbitrarios en el cliente (atacante):

dig @dns_server_ip example.org axfr
    
respondido por el klanomath 01.12.2017 - 05:44

Lea otras preguntas en las etiquetas