Come impostare macOS Server per impedire il trasferimento della zona DNS?

2

La documentazione di macOS Server 10.12.6 dice che dovremmo impedire trasferimenti arbitrari di zone fuori dal nostro server DNS e che il modo per farlo è la porta del firewall 53 per chiunque non sulla nostra LAN, con specifiche eccezioni per i nostri server DNS secondari .

Ciò che non menzionano è che la porta 53 è dove va il traffico DNS all , quindi firewalling quella porta spegne anche i nostri servizi DNS per chiunque si trovi sulla strada. Sì, abbiamo connessioni VPN; no, non sono applicati e non vogliamo iniziare.

Quindi la domanda diventa: 1) come si ordina al server di distinguere tra trasferimenti e semplici richieste DNS precedenti; 2) se fosse semplice, perché la documentazione Apple non dice di che ? Mi sono messo a tastare e ho trovato le istruzioni per farlo con un semplice vecchio BIND ovunque tranne un Mac, ed è lo stesso file che la documentazione mi ha detto di modificare due settimane fa per correggere un diverso problema di sicurezza.

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

Il mio prossimo passo è modificare il file, provare ad attaccare il mio server e, se fallisce, contrassegnalo come fatto. Nel qual caso posso tornare e rispondere alla mia domanda. Ma questo richiede di capire come eseguire un attacco di trasferimento di zona e mi riporta al punto di partenza se seguo le istruzioni di BIND di vaniglia e non funziona. Qualcuno ha qualche idea?

    
posta Jeff Porten 30.10.2017 - 04:14
fonte

1 risposta

1

Prefazione: il file /Applications/Server.app/Contents/ServerRoot/private/etc/named.conf menzionato nella tua domanda è not il file di configurazione usato da il server macOS. Invece il file si trova in /Library/Server/named/named.conf .

Il file in ServerRoot è il file named.conf predefinito più o meno vuoto. Alla configurazione iniziale durante l'avvio di Server.app per la prima volta, ServerRoot named.conf viene copiato in / Library / Server / named / .

Le autorizzazioni di accesso a varie funzionalità del server DNS sono determinate dagli ACL. L'acl precompattata nel server macOS è com.apple.ServerAdmin.DNS.public .

A seconda delle impostazioni nel pannello principale del DNS, l'ACL com.apple.ServerAdmin.DNS.public viene popolato con le reti:

  • Se le ricerche sono preformate per tutti i client:

    ilrispettivoACLinnamed.confassomigliaaquesto:

    acl"com.apple.ServerAdmin.DNS.public" {
        any;
    };
    
  • Se le ricerche sono preformate per alcuni client (solo per esempio):

    ilrispettivoACLinnamed.confassomigliaaquesto:

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

    L'unica ACL disponibile in named.conf dopo l'impostazione iniziale è com.apple.ServerAdmin.DNS.public .

Questo ACL di default consente le ricerche nella sezione visualizza per tutte le reti membro:

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

e consente anche i trasferimenti di zona nella vista > zona [zone_name⁣] > permetti-trasferimenti sezione per tutte le reti membro.

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

Per separare i client di ricerca dai client di trasferimento di zona (slave AKA) è sufficiente creare un nuovo ACL "slave" (esempio):

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

Per limitare un trasferimento di zona solo per una determinata zona agli slave, modifica l'ACL della direttiva allow-transfer agli slave:

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

Non includere le frecce accidentalmente e riavvia il servizio DNS in seguito!

Un più avanzato e amp; approccio sicuro è quello di usare segreti / chiavi condivisi che è spiegato qui: Utilizzo di TSIG per abilitare i trasferimenti di zona sicuri tra i server Bind 9.x . Però non ho fatto in modo che funzionasse in Sierra.

Per verificare se i trasferimenti di zona sono possibili per gli host arbitrari, utilizzare sul client (di attacco):

dig @dns_server_ip example.org axfr
    
risposta data 01.12.2017 - 05:44
fonte

Leggi altre domande sui tag