阻止BIND DNScaching中错误configuration的DNS条目

我使用自己的BIND DNScaching运行一个networking爬虫。 我们的代码使用我们的DNScaching解决,并使用Python的请求库进行GET请求。

问题是许多FQDNconfiguration错误,并指向RFC1918 IP地址或环回IP,如127.0.0.110.0.0.0/8 。 因此,我们的抓取工具正试图连接这些IP,并以来自数据中心的扫描报告结束。

我们对爬虫进行了更改,现在它首先parsing了FQDN的IP,如果IP处于私有/回送/保留范围内,则跳过它。

在用tcpdump嗅探之后,我发现仍然有stream量进入私有IP地址。 我想这是因为HTTPredirect,因为我们检查原始的FQDN,但是我们不检查redirect的主机,因为这部分发生在Python的请求库中。

有没有BIND的选项来阻止解决专用,回送或保留的IP地址? 我可以设置它返回某种“未解决”的错误?

编辑:我试图转储BINDcaching文件,并检查它,现在我确定这是因为HTTPredirect,但它不是很容易改变代码,我正在寻找一个快捷方式configurationBIND或我会阻止他们在防火墙。

使用BIND,您可以使用响应策略区域(RPZ)function来阻止指向某些地址的地址logging( A / AAAA )的parsing。

具体而言, RPZ-IPtypes的条目是相关的:

RPZ-IP

IP触发器是响应的“答案”部分中的A或AAAAlogging中的IP地址。 它们被编码为客户端IP触发器,除了rpz-ip的子域。

作为一个例子,手册使用这个:

 ; IP policy records that rewrite all responses containing A records in 127/8 ; except 127.0.0.1 8.0.0.0.127.rpz-ip CNAME . 32.1.0.0.127.rpz-ip CNAME rpz-passthru. 

关于手册中概述的configuration的总体思路是:

例如,你可以使用这个选项语句

 response-policy { zone "badlist"; }; 

和这个区域声明

 zone "badlist" {type master; file "master/badlist"; allow-query {none;}; }; 

与此区域文件

 $TTL 1H @ SOA LOCALHOST. named-mgr.example.com (1 1h 15m 30d 2h) NS LOCALHOST. ; [snip] ; IP policy records that rewrite all responses containing A records in 127/8 ; except 127.0.0.1 8.0.0.0.127.rpz-ip CNAME . 32.1.0.0.127.rpz-ip CNAME rpz-passthru. ; [snip] 

请仔细阅读详细信息,以了解整个设置以及RPZ区域内相当具体的语义! (它有正常的区域语法,但你可以看到一些特殊的名字有非常具体的含义。)

我想这是因为HTTPredirect,因为我们检查原始的FQDN,但是我们不检查redirect的主机,因为这部分发生在Python的请求库中。

我希望看到你改变你的代码后,刷新了BIND的DNScaching。 继续…

杀手在说“我想”。 你需要确定。 首先,用rndc dumpdb检查BINDcaching中是否有私有IP地址。 通过该文件查找罪犯。

如果有:刷新caching。 看看他们是否回来。 我不确定私人IP地址是否会作为HTTPredirect的结果存在于您的caching中。 对于一个可公开访问的网站来说,有很多HTTPredirect实例将访问者带入一个parsing为RFC 1918 IP地址的主机名,这是非常罕见的。 在公共区域私人IP地址… 不寒而栗

如果没有:那么到私有IP地址的stream量正在进入其他地方的应用程序。 也许是某种应用程序caching。 记忆中的东西,你不知道。 也许是一个完全不同的过程,毕竟这不是你的应用程序。

有没有BIND的选项来阻止解决专用,回送或保留的IP地址? 我可以设置它返回某种“未解决”的错误?

号码BIND解决,所以在你的情况下,你有一个理论上的竞争条件在哪里:你不需要IP地址,但要找出它是否是你不想要的IP地址,你必须得到它。 你想要的是一个反向的DNS RPZ,它不存在。

我错了。 是的,你可能会使用RPZ-IP作为杰出的HåkanLindqvist指出的。 看看这个: http : //ftp.isc.org/isc/bind9/cur/9.10/doc/arm/Bv9ARM.ch06.html#id2589969也upvote他的答案 。

在这种情况下,您需要将逻辑拉入应用程序,并更仔细地检查每个主机名,以防止本地caching,并且不允许抓取工具转到RFC 1918地址。

让我们来分解一下你所说的话:

…我们不检查redirect的主机…

所以检查redirect的主机,解决问题没有任何过度的工程。 =)