我已经使用 Bind 9 在 Ubuntu 20.04 LTS 上设置了一个 DNS 转发服务器。我需要实现 DNS 白名单,但是,我找不到任何解释如何设置的教程。我尝试查看有关响应策略区域 (RPZ) 的信息,但它们似乎仅用于黑名单。我也尝试查看“DNS 和 BIND 第 5 版”,但没有找到任何描述白名单的章节。
有人能给我一个教程链接,向我解释如何实现白名单,或者在下面向我解释如何设置白名单吗(和/或发布一个链接,其中包含要放入我的 DNS 服务器的文件/设置的 repo)?提前谢谢了。
PS 尽管我更喜欢如何在 BIND 上实现这一点,但如果有关于如何设置 DNS 转发器和白名单的详尽教程,我愿意接受其他 DNS 软件实现。
答案1
使用 RPZ 应该可以做到这一点,因为 RPZ 既有基于 qname(包括通配符)进行阻止的方法,也有在阻止条目中打洞的方法。
通配符条目的工作方式的具体细节使您想要的行为稍微复杂一些,因为它们只匹配不存在的名称。
例如,如果您只想明确允许foo.example.com
以下条目,则如下所示:
* IN CNAME . ; block names in the root that have no entry in rpz
*.com IN CNAME . ; block names in com that have no entry in rpz
*.example.com IN CNAME . ; block names in example.com that have no entry in rpz
foo.example.com IN CNAME rpz-passthru. ; allow foo.example.com
即,使用 RPZ 您不仅需要列出允许的名称,而且还需要在指向这些允许的名称的每个步骤下为通配符设置块条目。
当然可以将您想要允许的特定名称列表转换为这样的 RPZ 区域,并且此 RPZ 区域应该可以在 BIND 或任何其他支持 RPZ 的解析器实现中工作。
当然也有非 RPZ 解决方案,但我不认为 BIND 有其他真正可行的选择。我
想到的另一个选择是基于 CDB 或 LMDB 数据库查找的规则dnsdist
(DNS 反向代理)。
答案2
DNS 白名单并不像使用前一百万个域名那么简单。Web 开发人员在需要在新服务器中托管 API 时会使用模糊域名。只需检查 netflix.com 的 html 代码,您就会发现至少有三个额外的域名。
我们将 DNS 白名单作为服务来实现,其中包括对热门网站的定期索引、添加和删除域的 API 以及代理服务器。
该项目的目标是保护最终用户免受网络钓鱼攻击并阻止出站勒索软件通信。