云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云解析_腾讯企业云盘_9元

小七 141 0

DNSSEC:复杂性和考虑因素

这篇博文是我们之前介绍DNSSEC的后续文章。如果您不熟悉DNSSEC,请先阅读。DNSSEC是DNS的扩展:它为DNS记录提供了一个信任系统。这是对互联网核心组件之一的重大改变。在这篇文章中,我们将研究DNSSEC的一些并发症,以及CloudFlare计划如何减少它们可能产生的负面影响。主要问题是区域内容暴露、密钥管理以及对DNS反射/放大攻击的影响。区域内容曝光DNS被分成更小的部分,称为区域。区域通常以域名开始,并包含与子域相关的所有记录。每个区域由一个管理器管理。例如,cloudflare.com网站是包含的所有DNS记录的区域cloudflare.com网站及其子域(如。网站, api.cloudflare.com网站).DNS中没有子域的目录服务,所以如果你想知道api.cloudflare.com网站如果存在,则必须询问DNS服务器,并且该DNS服务器将最终询问cloudflare.com网站是否api.cloudflare.com网站存在。DNSSEC的情况并非如此。在某些情况下,启用DNSSEC可能会暴露其他情况下被遮挡的区域内容。并不是每个人都关心子域的保密性,而且区域内容可能已经很容易猜到了,因为大多数站点都有一个"www"子域;然而,子域有时被用作登录门户或网站所有者希望保密的其他服务。网站所有者可能不想透露这一点。"secretbackdoor.example.com网站"存在是为了保护该站点不受攻击者的攻击。DNSSEC可以公开子域的原因与区域的签名方式有关。历史上,DNSSEC用于标记静态区域。静态区域是给定域的完整记录集。DNSSEC签名记录使用密钥签名密钥(KSK)和区域签名密钥(ZSK)在中心位置创建,并发送到权威服务器进行发布。这组记录允许权威服务器回答任何问题,包括关于不存在的子域的问题。与标准DNS不同,当子域不存在时,服务器返回一个未签名的NXDOMAIN(不存在的域)响应,DNSSEC保证每个答案都有签名。这是通过一个称为NextSECure(NSEC)记录作为不存在证据的特殊记录来完成的。NSEC记录可以用来表示:"子域X和子域Y之间没有子域。"通过填补区域中每个域之间的空白,NSEC提供了一种用静态记录回答任何查询的方法。NSEC记录还列出了每个名称中存在的资源记录类型。对于静态签名区域,根据定义,有固定数量的记录。由于每个NSEC记录指向下一个,这将导致NSEC记录的有限"环"覆盖所有子域。任何人都可以通过跟踪一个NSEC记录到下一个NSEC记录来"漫游"一个区域,直到他们知道所有子域。此方法可用于显示该区域中的所有名称,可能会暴露内部信息。假设有一个启用DNSSEC的区域称为example.com网站,包含子域public.example.com网站以及secret.example.com网站. 添加NSEC记录将显示所有子域的存在。询问NSEC的记录example.com网站给出以下内容:example.com网站.NSEC公司public.example.com网站. 一个NS SOA TXT AAAA RRSIG NSEC DNSKEY要求public.example.com网站给出以下NSEC记录:公共示例.com. NSEC公司secret.example.com网站. 一个TXT AAAA RRSIG NSEC要求secret.example.com网站给出以下NSEC记录:secret.example.com网站. NSEC公司example.com网站. 一个TXT AAAA RRSIG NSEC第一个是区域顶部/顶点,上面写着example.com网站"存在,下一个名称是"public.example.com网站". 这个public.example.com网站记录上说下一个名字是"secret.example.com网站"揭示了一个私有子域的存在。"的"secret.example.com网站"说下一个记录是"example.com网站"完成子域链。因此,通过几个查询,任何人都可以知道区域中的完整记录集。从技术上讲,DNS记录不应该是秘密的,但在实践中,它们有时被认为是机密的。子域已经被用来将某些东西(例如公司登录页)保密一段时间,突然暴露区域文件的内容可能是意外的,也可能是不受欢迎的。在DNSSEC之前,发现区域中名称内容的唯一方法是查询它们,或者尝试从某个权威服务器执行区域传输。区域传输(AXFR)经常被阻止。NSEC的替代方案NSEC3被引入来解决区域枚举问题,但是甚至NSEC3也可以用来揭示子域的存在。.ch下的大多数域使用NSEC3NSEC3记录类似于NSEC记录,但是NSEC3提供了域名哈希的有符号间隙,而不是没有答案的域名间隙。这是为了防止区域枚举。因此,NSEC3链表示包含example.com网站"和"www.example.com网站"可以是(为清楚起见,每个NSEC3记录在3行上):231SPNAMH63428R68U7BV359PFPJI2FC.example.com网站. NSEC3 1 0 3 ABCDEF美国海军陆战队NKDO8UKT2STOL6EJRD1EKVD1BQ2688DM一个NS SOA TXT AAAA RRSIG DNSKEY NSEC3PARAMNKDO8UKT2STOL6EJRD1EKVD1BQ2688DM.example.com网站. NSEC3 1 0 3 ABCDEF美国海军陆战队231SPNAMH63428R68U7BV359PFPJI2FC一个TXT AAAA RRSIG其中231SPNAMH63428R68U7BV359PFPJI2FC是example.com网站而NKDO8UKT2STOL6EJRD1EKVD1BQ2688DM是。这让人想起密码数据库的工作方式。NSEC3记录的第一行包含经过哈希处理的区域的"名称",哈希循环数和哈希中使用的salt是第一行"3 ABCDEF"上的最后两个参数。"10"代表摘要算法(1表示SHA-1),如果区域使用选择退出(0表示否)。第二行是"区域中的下一个哈希名称",第三行列出名称处的类型。您可以看到第一个NSEC3记录中的"下一个名称"与第二个NSEC3记录上的名称相匹配,并且该记录上的"下一个名称"完成了该链。对于NSEC枚举,您可以通过开始猜测域中可能的名称来创建域的完整列表。如果区域有大约100个域名,则需要大约100个请求来枚举整个区域。对于NSEC3,当您请求一个不存在的记录时,将返回一个签名的NSEC3记录,其中下一个区域按hash的字母顺序排序。通过检查下一个候选查询名是否符合其中一个已知的间隙,任何人都可以在大约100个查询中发现完整的链。有许多工具可以为您完成此计算,包括nmap的插件。使用与区域中所有有效名称相对应的哈希值,可以使用字典攻击来找出真实名称。短名称很容易被猜测,通过使用字典,较长的名称可以显示为存在的,而不必向权威的名称服务器提供大量猜测。像HashCat这样的工具使得这在软件中很容易实现,比特币的普及大大降低了特定硬件的哈希价格。有一个新兴的家庭手工业的设备建立计算加密哈希。特斯拉密码破解器(下图)只是这些现成设备的一个例子。特斯拉密码破解器因为散列是廉价的,所以当按设计使用NSEC3时,区域隐私只得到轻微的改善;名称获得的保护量与其不可使用性成正比。简而言之,NSEC类似于显示明文密码,NSEC3类似于显示Unix风格的密码文件。这两种技术都不太安全。在NSEC3中,子域是私有的,因为很难猜测。此漏洞可通过RFCs4470和4471中引入的技术来减轻(https://tools.ietf.org/html/rfc4470以及https://tools.ietf.org/html/rfc4471)被称为"DNSSEC善意谎言";这是由Dan Kaminsky实现的,用于演示目的。当一个不存在的域的请求进来时,不提供下一个实域的NSEC3记录,而是按字母顺序显示下一个哈希的NSEC3记录。这并不会破坏NSEC3的保证,即在NSEC3响应和问题之间没有哈希符合字典顺序的域。如果签名可以实时计算以响应问题,则只能实现NSEC3或NSEC"善意谎言"。传统上,DNS解析的静态区域记录是离线创建的,所有带有签名的记录都存储在区域文件中。这个文件然后被一个实时的DNS服务器读取,允许它回答关于区域的问题。拥有一个内部逻辑量最小的DNS服务器可以节省CPU资源并最大限度地增加可以回答的查询数量。为了做DNSSEC的善意谎言,服务器必须有可用的密钥来执行签名的动态生成。这是对DNS服务器传统操作实践的一个重大改变,因为DNS权威服务器本身需要对传入的查询执行加密操作。这种对实时签名的需求在分布式环境中带来了其他几个安全问题。密钥管理DNSSEC被设计为在各种模式下运行,每种模式都提供了不同的安全性、性能和便利性权衡。实时签名解决了区域内容暴露问题,以换取不太安全的密钥管理。最常见的DNSSEC模式是静态区域的脱机签名。这使得签名系统可以通过将私钥保存在未连接到网络的计算机上而得到高度保护,免受外部威胁。当DNS信息不经常改变时,这种操作模式可以很好地工作。另一种常见的操作模式是集中在线签名。如果您在受限访问的专用DNS签名系统中对数据进行签名,它允许DNS数据快速更改和发布。一些运营商在他们的主DNS服务器上运行DNS签名。与静态区域的脱机签名一样,此模式遵循