使用 Bind 过滤 DNS 转发响应

使用 Bind 过滤 DNS 转发响应

我有哪些选项可以阻止包含特定 IP 地址或范围的 DNS 查询响应?

我正在阅读DNS 重新绑定攻击,并想知道如何才能阻止他们。

当攻击者尝试重新绑定攻击时,他们会试图欺骗浏览器,使其相信恶意内容来自127.0.0.1我的 LAN 或 LAN 内的地址。他们通过配置 DNS 服务器来提供欺诈性地址(当从恶意脚本内部查询时)。我希望通过阻止所有响应导致本地或 LAN 地址的转发 DNS 查询来防止这种情况。

我对本地网络使用 Bind9 区域,并使用转发器来解析外部地址。

Bind box 是我 NAT 路由器后面的 Debian 服务器。它运行 UFW 作为防火墙,并允许通过端口 53 传输 TCP/UDP。

答案1

可以使用该deny-answer-addresses功能让 Bind 过滤返回的地址。要使用此功能,请将以下内容添加到配置文件options的部分/etc/bind/named.conf.options

deny-answer-addresses { 192.0.2.0/24; } except-from { "example.net"; };

这将阻止任何 192.0.2.x 地址在响应除本地托管域之外的任何 DNS 查询时返回example.net

Bind 手册还建议使用以下命令过滤别名:

deny-answer-aliases { "example.net"; };

我在以下网址找到了一组建议的过滤器http://www.sput.nl/internet/dns-morons.html根据我自己的测试,似乎涵盖了最常见的 DNS 重新绑定攻击:

deny-answer-addresses {
    // Unconfigured
    0.0.0.0;
    // RFC 1918
    10.0.0.0/8;
    172.16.0.0/12;
    192.168.0.0/16;
    // RFC 3927
    169.254.0.0/16;
    // IPv6
    // :: to ::ffff:ffff:ffff.
    // Includes ::, ::1, IPv4-Compatible IPv6 Addresses ::/96,
    // and IPv4-mapped IPv6 addresses ::ffff:0:0/96
    ::/80;
    // IPv6 Link local
    fe80::/10;
    // RFC 6052
    64:ff9b::/96;
} except-from { "Your.Domain"; };
deny-answer-aliases { "Your.Domain"; };

排除它可能不是一个好主意,127.0.0.0/8因为它经常被垃圾邮件阻止列表之类的服务使用。

相关内容