域名系统(DNS)是互联网的基础之
一,然而大多数不懂网络的人可能并不知道他们每天都在使用它来工作、查看电子邮件或在智能手机上浪费时间。
当互联网还非常、非常小的时候,人们很容易将特定的IP地址与特定的计算机对应起来,但随着越来越多的设备和人加入到不断发展的网络中,这种简单的情况就没法持续多久了。现在仍然可以在浏览器中输入一个特定的IP地址来到达一个网站,但当时和现在一样,人们希望得到一个由容易记忆的单词组成的地址,也就是我们今天所认识的那种域名(比如)。在20世纪70年代和80年代早期,这些名称和地址是由一个人指定的,她是斯坦福大学的ElizabethFeinler,她在一个名为HOSTS.TXT的文本文件中维护着一个主列表,记录了每一台连接互联网的计算机。
随着互联网的发展,这种局面显然无法维持下去,尤其是因为Feinler只处理加州时间下午6点之前的请求,而且圣诞节也要请假。年,南加州大学的研究人员PaulMockapetris受命在处理这个问题的多种建议中提出一个折中方案。但他基本上无视了所有提出的建议,而是开发了自己的系统,他将其称为DNS。虽然从那时起,现今的它显然发生了很大的变化,但在基本层面上,它的工作方式仍然与将近40年前相同。
将名字与数字相匹配的DNS目录并不是整个藏在互联网的某个黑暗角落。截至年底,它记录了超过3.32亿个域名,如果作为一个目录确实会非常庞大。就像互联网本身一样,该目录分布在世界各地,存储在域名服务器(一般简称为DNS服务器)上,这些服务器都会非常有规律地相互沟通,以提供更新和冗余。
当你的计算机想要找到与域名相关联的IP地址时,它首先会向递归DNS服务器(也称为递归解析器)提出请求。递归解析器是一个通常由ISP或其他第三方提供商运营的服务器,它知道需要向其他哪些DNS服务器请求解析一个网站的名称与其IP地址。实际拥有所需信息的服务器称为权威DNS服务器。
每个域名可以对应一个以上的IP地址。事实上,有些网站有数百个甚至更多的IP地址与一个域名相对应。例如,你的计算机访问所到达的服务器,很可能与其他国家的人在浏览器中输入相同的网站名称所到达的服务器完全不同。
为了解决这个问题,DNS信息在许多服务器之间共享。但最近访问过的网站的信息也会在客户端计算机本地缓存。你有可能每天使用好几次。你的计算机不是每次都向DNS名称服务器查询的IP地址,而是将这些信息保存在你的计算机上,这样它就不必访问DNS服务器来解析这个名称的IP地址。额外的缓存也可能出现在用于将客户端连接到互联网的路由器上,以及用户的互联网服务提供商(ISP)的服务器上。有了这么多的缓存,实际上对DNS名称服务器的查询数量比看起来要少很多。
一般来说,当你连接到互联网时,你使用的DNS服务器将由你的网络提供商自动建立。如果你想看看哪些服务器是你的主要名称服务器(一般是递归解析器,如上所述),有一些网络实用程序可以提供关于你当前网络连接的信息。是一个很好的工具,它提供了很多信息,包括你当前的DNS服务器。
但要记住,虽然你的ISP会设置一个默认的DNS服务器,但你没有义务使用它。有些用户可能有理由避开他们ISP的DNS——例如,有些ISP使用他们的DNS服务器将不存在的地址的请求重定向到带有广告的网页。
如果你想要一个替代方案,你可以将你的计算机指向一个公共DNS服务器,以它作为一个递归解析器。最著名的公共DNS服务器之一是谷歌的,它的IP地址是8.8.8.8和8.8.4.4。Google的DNS服务往往是快速的,虽然对Google提供免费服务的别有用心的动机有一定的质疑,但他们无法真正从你那里获得比他们从Chrome浏览器中获得的更多信息。Google有一个页面,详细说明了如何配置你的电脑或路由器连接到Google的DNS。
如上所述,对IP地址的初始请求是向递归解析器提出的。递归解析器知道它需要请求哪些其他DNS服务器来解析一个网站()的名称与其IP地址。这种搜索会传递至根服务器,它知道所有顶级域名的信息,如、、以及所有国家域名,如(中国)和.uk(英国)。根服务器位于世界各地,所以系统通常会将你引导到地理上最近的一个服务器。
一旦请求到达正确的根服务器,它就会进入一个顶级域名(TLD)名称服务器,该服务器存储二级域名的信息,即在你写在、、之前的单词(例如,的信息是“linux”)。然后,请求进入域名服务器,域名服务器掌握着网站的信息和IP地址。一旦IP地址被找到,它就会被发回给客户端,客户端现在可以用它来访问网站。所有这一切都只需要几毫秒的时间。
因为DNS在过去的30多年里一直在工作,所以大多数人都认为它是理所当然的。在构建系统的时候也没有考虑到安全问题,所以黑客们充分利用了这一点,制造了各种各样的攻击。
DNS反射攻击可以用DNS解析器服务器的大量信息淹没受害者。攻击者使用伪装成受害者的IP地址来向他们能找到的所有开放的DNS解析器请求大量的DNS数据。当解析器响应时,受害者会收到大量未请求的DNS数据,使其不堪重负。
DNS缓存投毒可将用户转移到恶意网站。攻击者设法在DNS中插入虚假的地址记录,这样,当潜在的受害者请求解析其中一个中毒网站的地址时,DNS就会以另一个由攻击者控制的网站的IP地址作出回应。一旦访问了这些假网站,受害者可能会被欺骗,泄露密码或下载了恶意软件。
DNS资源耗尽攻击可以堵塞ISP的DNS基础设施,阻止ISP的客户访问互联网上的网站。攻击者注册一个域名,并通过将受害者的名称服务器作为域名的权威服务器来实现这种攻击。因此,如果递归解析器不能提供与网站名称相关的IP地址,就会询问受害者的名称服务器。攻击者会对自己注册的域名产生大量的请求,并查询不存在的子域名,这就会导致大量的解析请求发送到受害者的名称服务器,使其不堪重负。
DNS安全扩展是为了使参与DNS查询的各级服务器之间的通信更加安全。它是由负责DNS系统的互联网名称与数字地址分配机构(ICANN)设计的。
ICANN意识到DNS顶级、二级和三级目录服务器之间的通信存在弱点,可能会让攻击者劫持查询。这将允许攻击者用恶意网站的IP地址来响应合法网站的查询请求。这些网站可能会向用户上传恶意软件,或者进行网络钓鱼和网络欺骗攻击。
DNSSec将通过让每一级DNS服务器对其请求进行数字签名来解决这个问题,这就保证了终端用户发送进来的请求不会被攻击者利用。这就建立了一个信任链,这样在查询的每一步,请求的完整性都会得到验证。
此外,DNSSec可以确定域名是否存在,如果不存在,它就不会让该欺诈性域名交付给寻求域名解析的无辜请求者。
随着越来越多的域名被创建,越来越多的设备继续通过物联网设备和其他“智能”系统加入网络,随着更多的网站迁移到IPv6,将需要维持一个健康的DNS生态系统。大数据和分析的增长也带来了对DNS管理的更大需求。SIGRed:蠕虫病毒DNS漏洞再次出现
最近,随着WindowsDNS服务器缺陷的发现,全世界都看到了DNS中的弱点可能造成的混乱。这个潜在的安全漏洞被称为SIGRed,它需要一个复杂的攻击链,但利用未打补丁的WindowsDNS服务器,有可能在客户端安装和执行任意恶意代码。而且该漏洞是“可蠕虫传播”的,这意味着它可以在没有人为干预的情况下从计算机传播到计算机。该漏洞被认为足够令人震惊,以至于美国联邦机构被要求他们在几天时间内安装补丁。
截至本报告撰写之时,DNS正处于其历史上最大的一次转变的边缘。谷歌和Mozilla共同控制着浏览器市场的大部分份额,他们正在鼓励向DNSoverHTTPS(DoH)的方向发展,在这种情况下,DNS请求将被已经保护了大多数Web流量的HTTPS协议加密。在Chrome的实现中,浏览器会检查DNS服务器是否支持DoH,如果不支持,则会将DNS请求重新路由到谷歌的8.8.8.8。
这是一个并非没有争议的举动。早在上世纪80年代就在DNS协议上做了大量早期工作的PaulVixie称此举对安全来说是“灾难”:例如,企业IT部门将更难监控或引导穿越其网络的DoH流量。不过,Chrome浏览器是无所不在的,DoH不久就会被默认打开,所以让我们拭目以待。
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。