3 votos

¿Cómo configurar el servidor MacOS para evitar la transferencia de zonas DNS?

La documentación de MacOS Server 10.12.6 dice que debemos evitar las transferencias arbitrarias de zonas fuera de nuestro servidor DNS, y que la forma de hacerlo es cortafuegos el puerto 53 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 todo El tráfico DNS va, por lo que el firewall de ese puerto también cierra nuestros servicios DNS para cualquier persona en el camino. Sí, tenemos conexiones VPN; no, no se aplican y no queremos empezar.

Así que la pregunta se convierte en: 1) ¿Cómo podemos indicar al servidor que distinga entre las transferencias y las simples solicitudes de DNS? 2) Si eso fuera sencillo, ¿por qué la documentación de Apple no dice que hay que hacer que ? He buscado por ahí y he encontrado las instrucciones para hacer esto con el viejo BIND en cualquier sitio menos en un 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 ese caso puedo volver y responder a mi propia pregunta. Pero esto requiere averiguar cómo hacer un ataque de transferencia de zona, y me deja de nuevo en el punto de partida si sigo las instrucciones de BIND vainilla y no funciona. ¿Alguien tiene alguna idea?

1voto

klanomath Puntos 19587

Prefacio: el expediente /Aplicaciones/Servidor.app/Contenidos/ServidorRoot/privado/etc/named.conf mencionado en su pregunta es no el archivo de configuración utilizado por el servidor de MacOS. En su lugar, el archivo se encuentra en /Librería/Servidor/named/named.conf .

El archivo en ServerRoot es el archivo named.conf por defecto más o menos vacío. En la configuración inicial, al lanzar Server.app por primera vez, el named.conf de ServerRoot se copia en /Librería/Servidor/nombre/ .


Los permisos de acceso a diversas funciones del servidor DNS se determinan mediante ACL. La ACL preconfigurada 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 está poblada de redes:

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

    enter image description here

    la ACL respectiva en named.conf tiene el siguiente aspecto:

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

    enter image description here

    la ACL respectiva en named.conf tiene el siguiente aspecto:

    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 permite por defecto realizar búsquedas en el ver sección 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 las transferencias de zona en el vista > zona [nombre_de_la_zona] > 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 (también conocidos como esclavos), simplemente cree una nueva ACL "esclavos" (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 concreta sólo a los esclavos, modifique la directiva allow-transfer ACL a los esclavos:

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

No incluya las flechas accidentalmente y vuelva a lanzar el servicio DNS después.


Un enfoque más avanzado y seguro es el uso de secretos/claves compartidas que se explica aquí: Uso de TSIG para permitir transferencias de zona seguras entre servidores Bind 9.x . Sin embargo, no he conseguido que esto funcione en Sierra.


Para comprobar si las transferencias de zona son posibles a hosts arbitrarios utilice en el cliente (atacante):

dig @dns_server_ip example.org axfr

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X