水平分割 DNS 有多重要?

信息安全 dns ip
2021-09-03 19:59:34

拆分 DNS根据源 IP 返回不同的结果。

它通常被宣传为内部资源的重要安全措施,用于限制枚举和发现。

过去,我在拆分 DNS 方面遇到过很多问题,程序不正确地尊重 ttls。它们缓存解析很长时间,并且由于 DNS 不一致(即它取决于我的源 IP),它们会中断。例如,Windows 和 Chrome 对我来说都是有问题的。

我想知道拆分 DNS 的安全价值。DNS 只是将文本名称映射到 IP 地址。攻击者枚举主机名比枚举 IP 更容易吗?互联网地址需要保密吗?即使使用被源 IP 阻止的防火墙,拆分 DNS 仍然有价值吗?

拆分 DNS 提供多少真正的安全性?

3个回答

有针对性的攻击(即渗透网络)的第一部分是尽可能多地了解目标。公司在内部网络中使用与公共可用站点相同的域名是很常见的。主机名称描述其用途也很常见。

如果您不使用拆分 DNS,则意味着您将有关域内所有主机的信息发布在一个公共可用的地方。这些发布的信息将揭示主机的名称以及内部使用的 IP 地址,从而可以让攻击者深入了解公司的基础设施。

DNS 只是将文本名称映射到 IP 地址。

仅举一个例子,当攻击者知道内部主机的这些映射时,它可以做什么:

  • 访问公开可用的 DNS 信息,发现有一个名为 wiki.example.com 的主机,其 IP 地址为 10.1.2.3。鉴于主机的名称,这可能是一个内部 wiki,它可能提供有关该公司的有趣信息。让我们尝试获取那里发布的公司实习生信息。
  • 为此,攻击者设置了自己的网站 example.attacker。此服务器最初解析为攻击者控制的外部 IP 地址。该域的 DNS 服务器也由攻击者控制。该服务器的链接将包含一个有趣的网络钓鱼邮件或类似邮件,以便公司内部的人可以访问该站点。
  • 一旦该站点被访问并下载了一些脚本,攻击者就会将该站点的 IP 地址更改为从公司可见的该站点的 IP 地址,它喜欢攻击的站点的 IP 地址:即 example.attacker 现在将解析为相同的 IP 地址 10.1 .2.3 作为 wiki.example.com。这个技巧称为DNS 重新绑定
  • 已经从攻击者站点下载的脚本然后尝试访问 example.attacker。由于此站点现在解析为 10.1.2.3,此请求将访问内部服务器 wiki.example.com,但名称为 example.attacker。仅用于单个域的服务器通常会忽略请求的 Host 标头,因此站点的内容不仅可以通过使用 wiki.example.com 还可以通过 example.attacker 访问,只要两个名称解析到相同的 IP 地址即可。
  • 因为同源策略仅通过 DNS 名称而不是 IP 地址限制访问,来自原始 example.attacker 主机的已加载脚本现在可以与新的 example.attacker 主机站点(即 wiki.example.com)交互,从而获取来自本网站的信息并将这些信息转发给攻击者。

总而言之:你对你的目标了解得越多,你就能更好地妥协它。拆分 DNS 不是防止所有数据泄漏的最终解决方案,但它有助于保护至少部分数据。因此,它是纵深防御的一部分。

过去,我在拆分 DNS 方面遇到过很多问题,程序不正确地尊重 ttls。它们缓存解析很长时间,并且由于 DNS 不一致(即它取决于我的源 IP),它们会中断。

看起来您在受保护的公司网络和未受保护的互联网中使用相同的系统(笔记本电脑或移动设备?)。这是一个非常糟糕的主意,因为这为恶意软件进入公司网络提供了一个简单的载体,绕过了它们可能拥有的所有保护措施。安全的方法是让公司笔记本永远不直接连接到互联网,而只在外面使用 VPN,通过公司网络隧道传输所有内容,包括 DNS 查找。并且私有硬件不应连接到受保护的公司网络,而应在公司内部使用时包含在单独的网络中。如果以这种方式使用,您也不应该看到拆分 DNS 的问题,因为您永远不会在同一系统上的外部和内部 DNS 设置之间切换。

水平分割 DNS 是一个坏主意。它基本上使 DNSSEC 无法可靠地实施(有一些变通方法,但都不能令人满意)。

水平分割 DNS 的主要优势在于它可以隐藏内部网络,但同样可以通过创建子域并确保其 SOA 服务器无法从公共网络访问来实现。

因此,使用水平分割 DNS,您将拥有 payroll.bigcorp.com,使用安全子域,您将拥有 payroll.i.bigcorp.com。但是有了子域,您实际上可以有意义地使用 DNSSEC。

尚未讨论的拆分 DNS 的另一个好处是递归。最好禁止您的内部 DNS 服务器执行递归查找。他们可以获得利用漏洞的响应,从而使他们受到威胁。因此,将此任务卸载到单独的 DNS 服务器或面向公众的 DNS 服务器。这是一种深入应用防御并使您的基础架构更具弹性的好方法。