bel*_*zar 6 domain-name-system bind dns-firewall rpz
由于 OpenDNS 现在需要一个在 pro 包中才能打开过滤功能,预算紧张,我们需要免费的 DNS 过滤。
阅读有关如何使用 bind 阻止域的链接后,我将 SquidGuard 黑名单和我需要的类别中的连接域收集到一个大列表中。然后我将它输入到这个 python 脚本中,生成一个包含大约 200 万个区域的文件。
named-checkconf 可以很好地解析它,但是重新加载 named 需要将近 10 分钟,然后它不会解决任何问题,并且服务器会减慢速度以进行爬行。删除包含导致命名再次正常工作。
将 BIND9 设置为有效地用作 DNS 防火墙的正确方法是什么?如果还可以阻止任何解析为可以解决整个问题的特定 IP 地址的域。
我以非权威身份运行绑定,只是一个缓存服务器。
这对于当前的技术来说已经过时了。在 BIND 世界中,响应策略区 (RPZ) 是当今 DNS 防火墙的同义词。
RPZ 区域是一个普通的 DNS 区域,但用于定义服务器的策略操作。区域“后缀”无关紧要,因为这不是真正的 DNS 域。它只是一个包含特殊格式指令列表的区域文件。
options {
...
response-policy { zone "whatever.anytld";} };
};
Run Code Online (Sandbox Code Playgroud)
记录的左侧定义匹配规则,记录类型和右侧定义要采取的操作。请注意以下示例的左侧没有尾随点。
$ORIGIN whatever.anytld.
; destination IP rewrite
baddomain1.example.com A 198.51.100.1
*.baddomain1.example.com A 198.51.100.1
; send them to an existing A record
baddomain2.example.com CNAME mywebserver.example.org.
*.baddoman2.example.com CNAME mywebserver.example.org.
; NXDOMAIN it
baddomain3.example.com CNAME .
*.baddomain3.example.com CNAME .
; reply with NODATA
baddomain4.example.com CNAME *.
*.baddomain4.example.com CNAME *.
Run Code Online (Sandbox Code Playgroud)
等等。您可以对此做很多事情,包括可能影响无辜共享托管站点的更严厉的措施:按名称阻止名称服务器,按 IP 阻止名称服务器,对返回记录的 IP 地址而不是名称执行操作等。
RPZ 会做很多事情,这并不意味着作为详尽的文档。推荐阅读包括适用于您的 BIND 版本的 BIND ARM 的第 6 章(本答案底部),以及在线 Zytrax 书籍的第 9 章。
为了节省您的时间,我根据我的个人经验 Cliff 笔记:
IXFR
。ixfr-from-differences
在您的主人上启用以促进这一点。如果使用 BIND 9.9 或更高版本来防止基于通知的 DoS 尝试,请使用基于密钥的区域传输。NS
2014 年流行的基于记录的攻击,因为默认情况下 RPZ 旨在尝试权威查找,而不是将您的记录劫持“背叛”到上游名称服务器源。
qname-wait-recurse no
是在 BIND 9.10 中添加的,并且可能允许您为此目的使用 RPZ。我一直想试验一下。qname-wait-recurse no
有效,仍然需要一种无需额外配置即可用于离线攻击域的记录类型。我已经与 Paul Vixie 讨论过这个问题,我们可能会在 RPZ 格式规范的未来版本中看到它。NXDOMAIN
和NODATA
操作将AUTHORITY
在回复部分泄露您的 RPZ 区域的名称。假设人们会知道它的名字。BIND ARM 第 6 章链接: