目前在 RHEL 5.4 上运行 BIND,并且正在寻找一种更有效的方式为大量(30,000+)禁止域列表提供 DNS 重定向到蜜罐服务器。
我们目前针对此要求的解决方案是在 named.conf 中包含一个包含每个被阻止域的区域主声明的文件。随后,这些区域声明中的每一个都指向同一个区域文件,该文件将该域中的所有主机解析为我们的蜜罐服务器。...基本上,这使我们能够捕获可能渗透到内部系统的恶意软件的任何“电话回家”尝试。
此配置的问题是加载所有 30,000 多个域以及域列表配置文件本身的管理需要大量时间……如果此文件中出现任何错误,BIND 服务器将无法启动,从而导致自动化的过程有点吓人。所以我正在寻找更有效且可能更不容易出错的东西。
named.conf 条目:
include "blackholes.conf";
blackholes.conf 条目示例:
zone "bad-domain.com" IN { type master; file "/var/named/blackhole.zone"; allow-query { any; }; notify no; };
blackhole.zone 条目:
$INCLUDE std.soa
@ NS ns1.ourdomain.com。
@ NS ns2.ourdomain.com。
@ NS ns3.ourdomain.com。在 192.168.0.99
* 在 192.168.0.99
还没有找到消除必须在其自己的区域中加载每个域的好方法,但是使用以下 rndc 命令消除了在出现格式错误的条目时导致服务器失败的担忧。
服务器完全重新启动/重新加载仍将导致启动失败。
编辑:对不起,我没有很好地阅读你的问题。我提议和你一样的事情。也许您可以包含从数据库生成的文件?
我有一个 dropDomain 文件:
然后我只需在 named.conf.local 的列表中添加域:
我不需要在区域文件中定义它,它是通用的。
从理论上讲,您可以通过将黑洞列表作为根提示文件的一部分(例如 via
$INCLUDE
)然后将该文件从 a 更改为 ahint
来避免缓慢的加载时间master
。最后一点是必要的,以防止您的服务器从互联网下载真正的根提示。例如在
named.ca
:然后在
blackhole.zone
:每个黑洞区域都不需要 NS 记录或单独
zone
的语句 - 您实际上是在将伪造的权威数据插入到根区域的本地副本中。只要确保您偶尔下载真正的根区域!named-checkzone
然后在每次重新加载和/或重新启动之前按照@syn 的建议运行。注意:我没有测试过这个。
您是否考虑过 BIND 的替代品?我还没有使用过,但是有一些 MySQL 驱动的 Web 前端替代方案,例如 PowerDNS 和 Poweradmin。这可能会使更新更不容易出错和冒险。PowerDNS 甚至有一个工具可以将 BIND 区域文件转换为 SQL 以进行迁移。
另外,我可以问一下该列表是否公开可用?我自己对这个很感兴趣。