![使用 Bind 过滤 DNS 转发响应](https://linux22.com/image/1551052/%E4%BD%BF%E7%94%A8%20Bind%20%E8%BF%87%E6%BB%A4%20DNS%20%E8%BD%AC%E5%8F%91%E5%93%8D%E5%BA%94.png)
我有哪些选项可以阻止包含特定 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
因为它经常被垃圾邮件阻止列表之类的服务使用。