我可以通过输入 IP 地址来避免 DNS 欺骗吗?

信息安全 网络 网页浏览器 dns dns 欺骗
2021-08-22 04:42:05

问题在标题中。我一直在阅读有关 DNS 欺骗的信息。如果我要保存我认为敏感的网站的 IP 地址,然后在我使用可疑连接时输入 IP 地址以防止自己受到 DNS 欺骗攻击,该怎么办?它会起作用吗?为什么或者为什么不?

4个回答

这不适用于许多网站。许多网站使用虚拟主机,它们从单个网络服务器托管多个域的网站。在这种情况下,他们知道您来自哪个站点的唯一方法是通过您的浏览器在HostHTTP 请求的标头中发送的主机名。

执行此操作的方法是将这些条目专门添加到您的/etc/hosts(或在 Windows 上\Windows\System32\drivers\etc\hosts)文件中,并像往常一样继续键入域。

不幸的是,即使这样也是不切实际的。您不仅可以禁用基于 DNS 的负载平衡和基于位置的 DNS 结果(如果您旅行)等功能,还可以在站点更改 IP 地址时让自己受到攻击。攻击者考虑尝试获取大型站点可能已放弃的 IP 地址并非没有道理。

TL;DR 这个

  • 很不方便,
  • 可以禁用有用的基于 DNS 的功能
  • 并没有真正增加太多实际的安全性,并且
  • 引入尽可能多的新攻击向量,因为它关闭

假设foo.com有 IP 地址11.11.11.11

使用 DNS 欺骗,您担心foo.com无法正确解析为11.11.11.11,因为攻击者欺骗您认为其 IP 地址是22.22.22.22. 在这种情况下,您的问题是您拥有的域记录没有指向您真正想要的 IP 地址。

现在,假设您总是输入11.11.11.11以避免被 DNS 欺骗的可能性。现在假设foo.com刚刚移动11.11.11.1133.33.33.33您突然遇到了相反的问题:您拥有的 IP 地址与您想要的域不对应。(在这种情况下,您可能会受到能够将 IP 重新分配给11.11.11.11特定主机的人的攻击。)这是您可以使用 DNS解决的管理问题。如果主机更改了 IP 地址,除非您检查其 DNS 记录,否则您如何才能发现它的移动位置?

另一个(次要)问题是 Web 服务器期望获得一个Host标头,该标头指定您尝试访问的主机名。Web 服务器可能在一个 IP 地址上托管多个域(例如,11.11.11.11可能同时响应foo.combar.com,并且它需要知道您真正想要哪个域)。如果你11.11.11.11在地址栏中输入,你的浏览器会说你想要.Host: 11.11.11.11而不是Host: foo.com. 这可以通过手动指定 HTTP 字段(或获取/制作为您执行此操作的浏览器扩展)来克服。

回应所说的一切。

我认为您正在倒退解决这个问题。如果 DNS 记录被欺骗,为什么要尝试逐个覆盖站点?找到一个值得信赖的、安全的 openDNS 提供商并设置您的机器以始终将 DNS 解析到该服务器,而不是您所连接的网络想要为您提供的任何服务器。要添加另一层锡箔纸,您可以在 EC2 或类似设备上设置您自己的 DNS 服务器,并始​​终解决该问题。

如果您以某种方式知道主机 IP 地址并且不想依赖 DNS,只需将其添加到您的 HOST 文件中。如果您碰巧有许多机器来维护这些 DNS 设置,您将需要一种方法来更新所有这些文件。XCopy 通常可以很好地解决这个问题,没有重新发明 DNS ......

如果您的主机没有通过 VPN 持续连接,另一种维护多个 HOST 文件的方法是设置您自己的私有 DNS 服务器,并为所有区域启用 DNSSec。如果您采用这种方法,您应该禁用递归名称解析,这样您就不会无意中毒害您的缓存或保存来自给您错误信息的人的“被黑”DNS 条目。

我建议不要使用所有这些解决方案,因为网站被黑客入侵(SQL 注入等)是可能的并且很常见,并且一些网站管理员使用 DNS 更新来处理该问题,而您的 PC 将无法获得更新。

再说一次,您可能会通过有条件地将递归查询转发给您不“关心”的域来找到一个共同的中间立场。