有人可以使用与我相同的DNS服务器劫持我的域吗?


47

当我注册新域时,通过在registar的设置中为其分配域名服务器,将其发送给托管服务提供商。例如,对于Digital Ocean,我输入以下内容:

ns1.digitalocean.com
ns2.digitalocean.com
ns3.digitalocean.com

然后,我将域设置添加到服务器的A记录中。在我看来,同一托管服务提供商上的其他任何人都可以使用我拥有的域添加A记录。

有什么可以防止这种情况发生的吗?如果2个使用相同域名服务器的不同服务器尝试通过A记录为其分配一个域,那么当您在浏览器中输入该域时,该域实际上将在哪里解析?如何防止同一DNS服务器上的域名冲突?


7
数字海洋阻止了它,一方面。只需尝试不拥有的域输入A记录。
迈克尔·汉普顿

4
问题是,他们如何知道谁拥有域?是先来先服务吗?所以谁先添加A记录,就可以使用域?
伊兰·加尔佩林

16
@EranGalperin您好!我是DigitalOcean的员工。将域添加到他们的帐户的第一个人可以为其设置记录,但是在冲突时,我们确实有建立所有权的程序。
雅各布

1
像这样的问题就是为什么更大的DNS提供者(例如Network Solutions)也是DNS注册商。他们可以一次处理两个步骤,并确保一切保持同步。
Barmar 2015年

正如@Barmar所说,大多数注册服务商还提供DNS托管,这可以避免您所描述的问题,即使这种情况似乎不太可能且无法解决。
Fred Thomsen

Answers:


59

永远不要介意下面的评论部分,也不要介意编辑历史记录中的先前答案。与朋友约一个小时的交谈(感谢@ joeQwerty,@ Iain和@JourneymanGeek),以及一些轻松的黑客攻击之后,我们陷入了问题和整体状况的深处。首先,很抱歉造成您的粗暴行为,并完全误解了这种情况。

让我们逐步完成该过程:

  1. wesleyisaderp.com假设您在NameCheap.com上购买。
  2. Namecheap作为您的注册服务商将在其中填充NS记录。假设您实际上要在Digital Ocean上托管DNS区域。
  3. 您将闪亮的新域的NS记录指向ns1.digitalocean.comns2.digitalocean.com
  4. 但是,假设我能够确定您已经注册了该域,此外,您已经将NS记录更改为Digital Ocean's。然后,我打败了您到Digital Ocean帐户,并在我的帐户中添加了wesleyisaderp.com区域。
  5. 您尝试在*您的*帐户中添加区域,但是Digital Ocean表示该区域已经存在于他们的系统中!哦,不!
  6. 我CNAME wesleyisaderp.comwesleyisbetterthanyou.com
  7. 随之而来的是狂欢。

我和一些朋友刚刚播放了这个确切的场景,是的,它可以工作。如果@JoeQwerty购买了一个域并将其指向Digital Ocean域名服务器,但是我已经将该区域添加到我的帐户中,那么我就是该区域的主人,可以根据需要进行处理。

但是,考虑到有人必须首先将该区域添加到他们的DNS帐户中,然后您必须将NS记录指向该同一主机的名称服务器,以免发生任何麻烦。此外,作为域所有者,您可以随时切换NS记录,并将分辨率移离不良区域主机。

至少可以说,发生这种情况的可能性很小。据说,从统计学上讲,您可以洗净52张扑克牌,并获得其他人从未有过的命令,也没有其他人会得到的命令。我认为这里也存在同样的道理。有人利用它的可能性非常低,并且存在更好的捷径,以至于它可能不会在野外偶然发生。

此外,如果您在注册服务商处拥有域名,并且碰巧有人在与您相撞的Digital Ocean之类的提供商上建立了一个区域,我确定您是否提供所有权证明,他们会询问制造域名的人。他们的帐户区域中将其删除,因为由于他们不是域名所有者,因此没有理由将其存在。

但是A记录呢

第一个拥有区域的人将是控制该区域的人,例如Digital Ocean。同一DNS基础结构上不能有多个相同的区域。因此,例如,使用上面的愚蠢名称,如果我将wesleyisaderp.com作为Digital Ocean上的区域,则Digital Ocean的DNS基础结构上没有其他人可以将其添加到他们的帐户中。

这是有趣的部分:实际上,我确实已经将wesleyisaderp.com添加到了我的Digital Ocean帐户!继续尝试将其添加到您的。它不会伤害任何东西。

因此,您无法将A记录添加到wesleyisaderp.com。都是我的

但是关于...

正如@Iain在下面指出的那样,我在上面的第4点实际上太冗长了。我根本不需要等待,也不需要计划或计划。我可以在一个帐户中创建数千个区域,然后坐下来等待。从技术上讲。如果我拥有成千上万个域,然后等待它们进行注册,然后希望它们使用我在其上设置区域的DNS主机...也许我可以做点坏事?也许?但是可能不是吗?

向数字海洋和NameCheap致歉

请注意,Digital Ocean和NameCheap不是唯一的,并且与这种情况无关。这是正常现象。他们在所有方面都是无罪的。我只是使用它们,因为这是给出的示例,并且它们是非常知名的品牌。


2
我想,如果您真的想与某人打交道,则可以设置具有非常长的TTL的an AMXRR,指向您控制的主机,并锤击常见的公共DNS服务器(例如Google的服务器)。缓存中毒的一种变体...
CVn

4
通过能够更改指向ns服务器的指向来显示域所有权也是很简单的,因此即使有人这样做,也可以在客户服务良好的情况下相对快速地清除它。
JamesRyan 2015年

3
@JamesRyan TXT记录用于证明这种情况下的所有权。
user9517支持GoFundMonica 2015年

4
@韦斯利这是正确的。我们有一个适当的程序来处理与我们的DNS服务发生区域冲突的情况。
雅各布

7
一种更可能发生的怪异情况是,该域先前已在Digital Ocean注册并使用,然后失效/未更新但该区域未从digitalocean中删除。后来有人将其作为“新”域抢购(不知道它先前是所有者),然后尝试在Digital Ocean上创建区域。只有在DNS主机定期清除其不再是名称服务器的区域时,才可以防止这种情况。(没有上述解决冲突的方法)
Ashley

32

除了Wesley的出色回答,我还要补充一点,已经有一种解决方案可以防止这种情况。它称为DNSSEC。

基本内容是这样的:

  • 您注册了您的域名(我会wesleyisaderp.com在这里使用显赫的名称)。
  • 您通常通过使用用户名/密码组合进行身份验证的Web界面向注册商注册名称服务器。
  • 您还创建了一个公用/专用密钥对,并将公用密钥以DNSKEY记录的形式上载到您的注册商。(这是注册服务商可以为顶级域的根服务器建立信任链的方式-在这种情况下,是的根服务器.com。)同样,当您使用自己的用户名/密码登录时,您可以上传该信任链。组合,因此它连接到您的域而不是其他人的域。
  • 您转到名称服务器,输入记录,然后使用私钥对生成的区域文件进行签名。或者,如果您具有DNS托管服务的Web界面,则可以将私钥上载到它们,以便他们可以对它们签名区域文件。
  • 当Wesley如此粗鲁地尝试劫持您的域并将其CNAME劫持时wesleyisbetterthanyou.com,.com根域服务器将不会接受他的记录,因为它们没有使用正确的密钥签名。如果您的DNS托管提供商很聪明,他们将立即进行检查,并且除非他拥有正确的私钥,否则他们甚至不会允许他尝试向该域添加记录。
  • 当您输入自己的记录时,它们将通过右键进行签名,因此它们将起作用。
  • 您现在可以高枕无忧了。

(在最初的案例中,是Wesley所描述的,主要错误是Digital Ocean在允许某人为其设置DNS记录之前未验证域的所有权。不幸的是,他们并不孤单;我知道至少一个具有相同问题的瑞典注册商。)


1
奇怪的是,任何非DNSSEC DNS区域托管提供商在允许创建区域之前如何验证所有权?我还使用Amazon Route53进行了尝试,可以创建任何想要的区域。
韦斯利

他们可能不会,这将需要延迟的试验和错误检查。只是猜测,使用一些(烟屏)ux技巧仍然可能发生错误删除。
Sampo Sarrala 2015年

@Wesley我还没有考虑机械原理。但是至少,可以对whois记录进行某种检查,或者使用廉价SSL证书卖方可以进行的检查。如果他们能做到,为什么不能托管公司?
珍妮D说恢复莫妮卡

1
@JennyD方便,主要是!这种类型的域劫持非常罕见且可检测,因此,在发生这种情况时,对其进行修复要比使每个合法用户跳过圈来阻止它更容易。
duskwuff

@duskwuff当便利和安全冲突时,通常通常会赢得便利...我同意域劫持很可能很少-但是简单的错误又没有邪恶的意图呢?IMAO,不要进行任何形式的检查是DNS托管者的ck顾。
珍妮D说恢复莫妮卡2015年

6

只要您在DigitalOcean声明域名所有权(即将其与您的帐户相关联),然后告诉注册服务商使用其域名服务器,就可以了。

如果有人已经将您的域与他们的帐户相关联,您将在DigitalOcean域名服务器成为权威之前先进行查找。如果发生这种情况,请与DigitalOcean谈谈如何使该人退出其帐户。

按照最佳做法,{ns1,ns2,ns3} .DigitalOcean.com不能充当其他地方托管的域的递归解析器。如果他们这样做了,并且如果由DigitalOcean托管的服务器将这些服务器用作通用解析器,则将存在更大的问题。尽管众所周知,这是所有不好的做法,但找到错误的托管服务提供商可能并不难,这为滥用提供了可能性。


因此,如果DigitalOcean对该域尚无权威,并且多个潜在客户都声称拥有该域,那么DigitalOcean怎么知道哪个潜在客户在说实话?他们是否将授予第一个创建记录的访问权限和更新NS记录的期限以证明对域的控制权?还是他们要为每个潜在客户提供不同的权威服务器子集以放入NS记录中?
kasperd 2015年

2
@kasperd将合法所有者的点记录在NS想要记录的任何地方,然后配置例如TXT记录以证明他们是所有者,因为它包含服务提供商提供给他们的唯一信息。诚然有些麻烦,但在极少数情况下可能会发生这种情况,要比所有人都拥有所有权之前先拥有所有权要容易一些。
user9517支持GoFundMonica

@kasperd尽管人们有时确实有理由掩盖该信息,但whois记录通常会标识合法所有者。无论如何,如果您告诉DO将域与您的帐户相关联,以便使其具有权威性,则DO可能会给冒充者一个时间表来更新注册商,或在DO处放弃域关联。合法所有者可能需要稍等一下,仅此而已。
mc0e 2015年

0

我认为这个问题意味着没有人可以使用这样的名称服务器(例如Digital Ocean的名称服务器)作为其解析程序,因为任何人都可以为其上的现有域创建名称服务器。可以很容易地证明域所有权,因此争夺域控制权无关紧要,但事实是有人可以例如将尚未在Digital Ocean上托管的任何现有域定向到他们想要的任何位置。

底线:不信任不需要域名所有权证明的任何托管服务的DNS服务器(例如,通过上述建议的方法轻松快捷地完成操作:首先在域上添加具有特定值的TXT记录,例如Microsoft O365和Google所做的)。

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.