DNS区域中的本地主机


15

我们的ISP还托管我们的外部DNS。默认情况下,它们包括本地主机的条目。

例如:localhost.example.com。A 127.0.0.1中的86400

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

我已尝试进行一些研究,以了解为什么要包括在内,但找不到太多。我确实找到了至少一个认为这可能是XSS攻击媒介的地方。它的确似乎很普遍,因此我在alexa的前20个网站域上进行了查找,大多数都没有这样的条目,但是有几个条目。其他几个条目有一个条目,但没有指向127.0.0.1,而是指向另一个世界可路由的IP地址。

因此,无论如何,为什么我要在我的域的区域中拥有locahost?他们有没有什么问题?是否有与此相关的最佳实践?确实是我不知道的默认绑定对象吗?

谢谢


好问题。我以前从未听说过。
TomTom 2010年

我的ISP区域文件中甚至存在“回送”。WTF?
David Tonhofer 2014年

Answers:


13

localhost.example.com有时会包含在内部DNS服务器上,以防止“本地主机”请求泄漏到Internet(对于John Smith http://localhost/在其浏览器中键入以及由于任何原因,其解析程序不在主机文件中查找的情况,请附加其搜索路径(example.com) &开始询问名称服务器解析的内容。

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

XSS向量是我从未想过的东西,但它是一个令人担忧的问题:localhost在公共DNS中输入一个条目意味着任何被黑客入侵的计算机都可能在“您的域中”(通过在127.0.0.1上运行网络服务器)并且有可能各种各样的讨厌的东西。可能是摆脱该条目的足够充分的理由。


1
我个人认为这localhost.some.test只是没有正确结束点结尾的另一个受害者。localhost.(请注意圆点!)背后的原因很明确,但是在DNS区域中经常会忘记圆点。然后它突然冒出了自己的神秘生活。
poige

请参阅tools.ietf.org/html/rfc1537常见DNS数据文件配置错误,该错误表明localhost条目正确。
BillThor

1
不,rfc1537没有指定。它指定递归必须具有本地主机。区域和反向区域。没有任何地方说您的区域需要本地主机条目。
哈比

@BillThor 关于此其他答案的评论与RFC 1537及其后续版本(RFC 1912)有关-正如哈比(Habbie)提到的那样,我们应该拥有该区域 localhost.,但是在我们服务的每个区域中都有localhost 记录的做法已经落空了。的宠爱。(这个问题实际上使我在5年前
陷入

3

假设您的内部名称解析正确地处理了名称解析,那么对localhost的任何DNS请求都不应发送到您的外部DNS提供程序,因此这根本不是问题。

其中一个原因,为什么会有人这样做,我能想到的把我的头顶部,就是如果有人曾经使用Web开发工具,它搞砸了与绝对引用的负载的http://本地主机,但假设你ISP还在其DNS主机上托管,并且是一个很长的路要走。

但是,RFC 1537 确实指定了:

关于是否将本地域附加到本地域,已经进行了广泛的讨论。结论是“本地主机”。将是最好的解决方案;给出的原因是:

  • “本地主机”本身已被使用,并有望在某些系统上工作。

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

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

因此严格来说,似乎您的ISP包括本地主机是正确的,但使用全限定名是不正确的。


5
看起来RFC-1537已被RFC-1912淘汰,后者删除了该Note that ...语言(我想是为了回应潜在的XSS问题,我们从1996年就开始意识到该问题:) 1537说明了为什么它在BIND模板中。
voretaq7 2010年

您的意思是在example.com:localhost区域中应该有这样的条目。86400在A 127.0.0.1中; 注意时期
马修2010年

3
1912年第4.1版实际上是相当明确的:ietf.org/rfc/rfc1912.txt
Maximus

已有5年了,但值得澄清:RFC 1912的4.1明确指出该localhost 区域应该存在于服务器上(因此,如果它只是普通的“ localhost”而收到请求,则不会将其沿链条传递到下一个服务器)。与将它们包含localhost在say example.com的区域(创建区域localhost.example.com)相去甚远,这同样明确地表明,由于可能的意外副作用,您不应这样做。期望“本地主机”本身就是一个特殊的,神奇的,完全限定的域名。
voretaq7 2015年

0

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

但是,默认的BIND区域文件确实包含一个localhost区域。从来没有真正考虑过它。


这不是本地主机区域(除非该区域配置错误)。它也不是fqdn'localhost'。并且通常不会被本地hosts文件覆盖。
马修2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.