DNS 区域中的本地主机

DNS 区域中的本地主机

我们的 ISP 还托管我们的外部 DNS。默认情况下,它们包含 localhost 的条目。

例如:localhost.example.com.86400 IN A 127.0.0.1

当我要求他们删除它时,他们给我找麻烦并说这只是 Bind 的工作方式。

我尝试研究一下为什么要包含这个条目,但结果不尽如人意。我确实发现至少有一个地方认为这是一个可能的 XSS 攻击媒介。它似乎相当常见,所以我在 Alexa 的前 20 个网站域名上进行了查找,大多数网站都没有这样的条目,但有几个有。其他几个网站有一个条目,但它们没有指向 127.0.0.1,而是指向另一个全球可路由的 IP 地址。

那么,为什么我要在我的域的区域中拥有 locahost?没有它会有什么问题吗?有没有关于这方面的最佳实践?这确实是我不知道的默认绑定吗?

谢谢

答案1

localhost.example.com有时会包含在内部 DNS 服务器中,以防止“localhost”请求泄漏到互联网(例如,当 John Smithhttp://localhost/在他的浏览器中输入并且由于某种原因他的解析器没有查找 hosts 文件时,附加他的搜索路径(example.com)并开始询问名称服务器将其解析为什么)。

您不必拥有 localhost 条目(如果您的 ISP 认为这是“BIND 的工作方式”,那么他们要么被误导了,要么就是白痴:BIND 提供区域文件中的内容,如果他们删除该localhost行,它将停止提供该记录)。作为一个免费示例,localhost.google.com无法解析,我敢打赌该域的 NS 正在运行 BIND。

我从未想过 XSS 向量,但它确实令人担忧:localhost在公共 DNS 中有一个条目意味着任何被黑客入侵的机器都可能“在你的域中”(通过在 127.0.0.1 上运行 Web 服务器)并可能做各种恶意的事情。这可能是删除该条目的充分理由。

答案2

假设您的内部名称解析能够正确处理名称解析,则任何针对 localhost 的 DNS 请求都不应发送到您的外部 DNS 提供商,因此这根本不是问题。

一个理由为什么有人会这样做,我能想到的,是如果有人曾经使用过一个 web 创作工具,该工具搞砸了对 http://localhost 的绝对引用,但这假设你的 ISP 也托管在他们的 DNS 盒上,并且可能性很小。

然而,RFC 1537 指定:

关于是否要将本地域名附加到其中,已经进行了广泛的讨论。结论是“localhost。”是最好的解决方案;理由如下:

  • “localhost” 本身在某些系统上被使用并且有望工作。

  • 将 127.0.0.1 转换为“localhost.my_domain”可能会导致某些软件在它不想连接的时候使用环回接口连接到自身。

请注意,所有包含主机的域都应具有“localhost”A 记录。

因此严格来说,您的 ISP 包含 localhost 是正确的,但使用完全限定名称是不正确的。

答案3

我不确定重点是什么...默认情况下,外部地址将被 hosts 文件覆盖,该文件几乎总是将 localhost 映射到 127.0.0.1。

不过,默认的 BIND 区域文件确实包含 localhost 区域。从来没想过这个。

相关内容