为已知恶意域名提供到蜜罐服务器的 DNS 重定向

为已知恶意域名提供到蜜罐服务器的 DNS 重定向

当前在 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 中

答案1

还没有找到一个好方法来消除必须在其自己的区域中加载每个域的麻烦,但是使用以下 rndc 命令可以消除在出现格式错误的条目时导致服务器失败的担忧。

rndc reconfig

完全重启/重新加载服务器仍会导致启动失败。

答案2

编辑:抱歉,我没看清楚你的问题。我提出和你一样的建议。也许你可以包含一个从数据库生成的文件?

我有一个 dropDomain 文件,其中包含:

$TTL 3600       ; 1 hour
@               IN SOA  xxxxxxxx.fr. dnsmaster.xxxxxxxx.fr. (
                2009112001 ; serial 20yymmdd+nn
                                900        ; refresh (15 minutes)
                                600        ; retry (10 minutes)
                                86400      ; expire (1 day)
                                3600       ; minimum (1 hour)
                                )
                        NS      dns1.xxxxxxxx.fr.
                        NS      dns2.xxxxxxxx.fr.
                        MX      0       smtp.xxxxxxx.fr.

*                       A       127.0.0.1

; vim:filetype=bindzone

然后我只需在 named.conf.local 中的列表中添加域:

# Master pour les zones que l'on ne veut plus resoudre (pirates, virus, prise en main a distance...)
zone "zzzzzzz.com" { type master; file "/etc/bind/dropDomain.tld"; allow-query { any; }; };
zone "yyyyyyy.com" { type master; file "/etc/bind/dropDomain.tld"; allow-query { any; }; };
zone "ttttttt.com" { type master; file "/etc/bind/dropDomain.tld"; allow-query { any; }; };

我不需要在区域文件中定义它,它是通用的。

答案3

理论$INCLUDE你可以通过将黑洞列表作为根提示文件的一部分(例如通过)并将该文件从更改为来hint避免加载时间过长master。最后一点是必要的,以防止你的服务器下载真实的来自互联网的根提示。

例如named.ca

a.root-servers.net.  IN A ....
m.root-servers.net.  IN A ....
$INCLUDE blackhole.zone

然后在blackhole.zone

$ORIGIN example.com.
@ IN 192.168.0.99
* IN 192.168.0.99

$ORIGIN example.net.
@ IN 192.168.0.99
* IN 192.168.0.99

; ad-infinitum

没有必要为zone每个黑洞区域设置 NS 记录或单独的声明 - 您实际上是在将虚假的权威数据插入根区域的本地副本。只需确保偶尔下载真正的根区域即可!

named-checkzone然后只需按照@syn 的建议在每次重新加载和/或重新启动之前运行即可。

注意:我还没有测试过这个。

答案4

您是否考虑过 BIND 的替代方案?我还没有使用过,但有 MySQL 驱动的替代方案,带有 Web 前端,例如带有 Poweradmin 的 PowerDNS。这可能会使更新更不容易出错和有风险。PowerDNS 甚至有一个工具可以将 BIND 区域文件转换为 SQL 以进行迁移。

另外,我可以问一下这个名单是否公开吗?我自己对此非常感兴趣。

相关内容