有人可以使用与我一样的DNS服务器劫持我的域名吗?

当我注册一个新域名时,我通过在注册商的设置中为其分配域名服务器,将其发送给我的托pipe服务提供商。 例如,数字海洋,我input以下内容:

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

然后我在我的服务器的Alogging中添加域设置。 我想到,在同一托pipe服务提供商的其他人可以添加一个我拥有的域的Alogging。

有什么可以防止这种情况发生吗? 如果使用相同域名服务器的两台不同服务器尝试通过Alogging为自己分配一个域,那么当您在浏览器中input域名时,域名实际上会在哪里parsing? 什么防止在同一台DNS服务器上的域名冲突?

    你不介意下面的评论部分,也不介意编辑历史中的以前的答案。 和朋友聊了一个小时后(感谢@joeQwerty,@ Iain和@JourneymanGeek),还有一些快速的黑客攻击,总的来说,我们已经把你的问题和情况都弄清楚了。 对不起,粗暴和误解的情况一开始就完全。

    我们一步一步来看看这个过程:

    1. 你买了wesleyisaderp.com ,比如NameCheap.com。
    2. Namecheap作为您的注册商将是您填写您的NSlogging的地方。 假设您真的想要在Digital Ocean上托pipeDNS区域。
    3. 你把你的shiny的新域名的NSlogging指向ns1.digitalocean.comns2.digitalocean.com
    4. 但是,假设我能够确定您已经注册了该域名, 而且您已经将您的NSlogging更改为Digital Ocean的 。 然后我打你到一个数字海洋帐户,并添加到我自己的区域wesleyisaderp.com。
    5. 您尝试在*您的*帐户添加区域,但数字海洋说,该区域已经存在于他们的系统! 哦,不!
    6. 我CNAME wesleyisaderp.com wesleyisbetterthanyou.com
    7. 欢闹随之而来。

    有些朋友和我只是玩了这个确切的场景,是的,它的工作原理。 如果@JoeQwerty购买域名并将其指向Digital Ocean域名服务器,但我已经将该域名添加到我的帐户,那么我是域名主服务器,可以使用我想要的。

    然而,考虑到有人必须先将区域添加到他们的DNS帐户,然后你必须把你的NSlogging指向同一主机的名称服务器,以防发生任何恶意事件。 此外,作为域所有者,您可以随时切换NSlogging,并将分辨率从不良区域主机移开。

    这种情况发生的可能性有点低。 据说在统计上,你可以洗牌52副扑克牌,并得到一个没有其他人曾经得到的命令,没有其他人会永远。 我想这里也有同样的推理。 有人利用这个机会的可能性非常低,现在有更好的捷径,它可能不会在意外发生。

    此外,如果您在注册服务商拥有一个域名,而且某个人碰巧与像Digital Ocean这样的供应商build立了联系,那么我确信,如果您提供所有权certificate,他们会询问制作该域名的人因为没有理由存在,因为他们不是域名所有者。

    但是Alogging呢

    例如数字海洋上的第一个人将成为控制它的人。 在同一个DNS基础结构上不能有多个相同的区域。 例如,如果使用上面的愚蠢的名字,如果我把wesleyisaderp.com作为数字海洋上的一个区域,那么Digital Ocean的DNS基础设施上的其他人都不能将其添加到他们的帐户中。

    以下是有趣的部分:我其实已经将wesleyisaderp.com添加到了我的数字海洋帐户! 继续尝试将其添加到你的。 它不会伤害任何东西。

    因此,您无法向wesleyisaderp.com添加Alogging。 这全是我的。

    但是呢…

    正如@Iain指出的,上面的第4点实际上太冗长了。 我不必等待,也不必计划或计划。 我可以在一个帐户中创build数千个区域,然后坐下来等待。 技术上。 如果我做了成千上万的域名,然后等待他们注册,然后希望他们使用DNS设置我的区域的主机…也许我可以做一些有点不好? 也许? 但可能不是?

    数码海洋与名字的歉意

    请注意,Digital Ocean和NameCheap并不是唯一的,与此情况无关。 这是正常的行为。 他们在各方面都是无可指责的。 我只是用它们,因为这是给出的例子,他们是非常知名的品牌。

    除了卫斯理的出色答案外,我想补充一点,已经有一个解决scheme来防止这种情况发生。 这就是所谓的DNSSEC。

    基本的是这样的:

    • 你注册你的域名(我将在这里与着名的wesleyisaderp.com一起去,只是因为。)
    • 您可以向注册服务商注册名称服务器,通常通过您使用用户名/密码组合身份validation的Web界面。
    • 您还可以创build一个公钥/私钥对,然后以DNSKEYlogging的forms将您的公钥上传到您的注册服务商。 (这就是注册服务商如何设置顶级域根服务器的信任链 – 在本例中是.com的根服务器。)再次,当您使用自己的用户名login时/密码组合,所以它连接到你的域名,而不是别人的。
    • 你去名称服务器,你input你的logging,你用你的私钥签名产生的区域文件。 或者,如果您有一个到您的DNS托pipe服务的Web界面,您将私钥上传给他们,以便他们可以签署区域文件给他们。
    • 当Wesley非常粗鲁地试图劫持你的域名和CNAME到wesleyisbetterthanyou.com ,他的logging将不会被.com域名服务器接受,因为他们没有用正确的密钥进行签名。 如果您的DNS托pipe提供商是聪明的,他们会检查这个权利,甚至不会允许他尝试添加logging到该域名,除非他有正确的私钥。
    • 当你input自己的logging时,他们将被右键签名,所以他们会工作。
    • 你现在可以坐下来嘲笑卫斯理。

    (在Wesley所描述的原始案例中,主要的错误是Digital Ocean在允许某人为其设置DNSlogging之前没有validation域名的所有权,但不幸的是,他们并不孤单,至less有一个瑞典注册商的问题相同。)

    只要您声明DigitalOcean的域名拥有权(即将其与您的帐户相关联),您就可以罚款,然后再通知注册服务商使用其名称服务器。

    如果有人已经将您的域名与他们的账户相关联,那么在DigitalOcean域名服务器成为权威之前,您将会发现它。 如果发生这种情况,请与DigitalOcean讨论如何将其从帐户中删除。

    根据最佳实践,{ns1,ns2,ns3} .DigitalOcean.com不会充当其他地方托pipe的域的recursionparsing器。 如果他们这样做,并且DigitalOcean托pipe的服务器使用这些服务器作为通用的parsing器,那么将会有一个更大的问题。 尽pipe这是众所周知的不好的做法,但find托pipe服务提供商可能并不难,因为托pipe服务提供商可能会出错。

    我认为这个问题意味着没有人应该使用这样的名字服务器(如Digital Ocean's)作为他们的parsing器,因为任何人都可以为其上的现有域名制作一个域名服务器。 控制域名的争夺是无关紧要的,因为域名所有权可以被容易地certificate,但是有人可以例如将任何不在数字海洋上托pipe的现有域名引导到任何他们想要的地方。

    底线:不要信任任何托pipe服务的DNS服务器,这些服务器不需要域名所有权的certificate(例如通过上面build议的方法可以轻松快速地完成:通过在域上添加具有特定值的TXTlogging这就是Microsoft O365和Google所做的)。