如何设置macOS Server以防止DNS区域传输?


2

macOS Server 10.12.6文档说我们应该防止任意区域传输出我们的DNS服务器,并且这样做的方法是防火墙端口53给不在我们LAN上的任何人,我们的辅助DNS服务器有特定的例外。

他们没有提到的是53号港口在哪里 所有 DNS流量消失了,因此防火墙端口也会关闭我们的DNS服务。是的,我们有VPN连接;不,他们没有执行,我们不想开始。

那么问题就变成:1)我们如何指示服务器区分传输和普通的旧DNS请求; 2)如果这很简单,为什么Apple文档没有说要做 ?我四处寻找并发现使用普通旧BIND执行此操作的说明除了Mac之外 - 这与文档告诉我两周前编辑的文件相同,以修复不同的安全问题。

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

我的下一步是编辑文件,尝试攻击我自己的服务器,如果失败,请将其标记为已完成。在这种情况下,我可以回来回答我自己的问题。但这需要弄清楚如何进行区域转移攻击 - 如果我遵循香草BIND指令并且它不起作用,它会让我回到正方形。有人有主意吗?

Answers:


1

前言:文件 /Applications/Server.app/Contents/ServerRoot/private/etc/named.conf 在你的问题中提到的是 macOS服务器使用的配置文件。而是文件位于 /Library/Server/named/named.conf

ServerRoot中的文件或多或少是空的默认named.conf文件。首次启动Server.app时的初始配置将ServerRoot named.conf复制到 /库/服务器/命名/


对DNS服务器的各种功能的访问权限由ACL确定。 macOS服务器中预先配置的acl是 com.apple.ServerAdmin.DNS.public

取决于您在DNS主面板中的设置ACL com.apple.ServerAdmin.DNS.public 填充网络:

  • 如果为所有客户端执行查找:

    enter image description here

    named.conf中的相应ACL如下所示:

    acl "com.apple.ServerAdmin.DNS.public" {
        any;
    };
    
  • 如果为某些客户端执行查找(仅限示例):

    enter image description here

    named.conf中的相应ACL如下所示:

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

    初始设置后,named.conf中唯一可用的ACL是 com.apple.ServerAdmin.DNS.public

默认情况下,此ACL允许在中查找 视图 所有成员网络的部分:

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

并且还允许区域转移 视图> zone [zone_name⁣]>让 - 转让 所有成员网络的部分。

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

要将查找客户端与区域传输客户端(AKA从属服务器)分开,只需创建一个新的ACL“slave”(示例):

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

要将特定区域的区域传输限制为仅限从属,请将allow-transfer指令ACL修改为从属:

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

不要意外包含箭头,然后重新启动DNS服务!


更高级的&安全的方法是使用共享的秘密/密钥,这里解释: 使用TSIG在Bind 9.x服务器之间启用安全区域传输 。我没有让这个在塞拉利昂工作。


要检查区域传输是否可以在(攻击)客户端上使用任意主机:

dig @dns_server_ip example.org axfr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.