系统域名是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
DNS服务器如何工作
域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址:
TCP/IP中的IP地址是由四段以“.”分开的数字组成,记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。
虽然因特网上的节点都可以用IP地址惟一标识,并且可以通过IP地址被访问,但即使是将32位的二进制IP地址写成4个0~255的十位数形式,也依然太长、太难记。
因此,人们发明了域名(Domian Name),域名可将一个IP地址关联到一组有意义的字符上去。用户访问一个网站的时候,既可以输入该网站的IP地址,也可以输入其域名,对访问而言,两者是等价的。
例如:微软公司的Web服务器的IP地址是207.46.230.229,其对应的域名是www.microsoft.com,不管用户在浏览器中输入的是前者还是后者,都可以访问其Web网站。
一个公司的Web网站可看作是它在网上的门户,而域名就相当于其门牌地址,通常域名都使用该公司的名称或简称。
例如上面提到的微软公司的域名,类似的还有:IBM公司的域名是www.ibm.com、Oracle公司的域名是www.oracle.com、Cisco公司的域名是www.cisco.com等。
当人们要访问一个公司的Web网站,又不知道其确切域名的时候,也总会首先输入其公司名称作为试探。但是,由一个公司的名称或简称构成的域名,也有可能会被其他公司或个人抢注。
甚至还有一些公司或个人恶意抢注了大量由知名公司的名称构成的域名,然后再高价转卖给这些公司,以此牟利。
像Internet本身一样,该目录分布在世界各地,存储在域名服务器(通常简称为DNS服务器)上,这些域名服务器都非常定期地相互通信以提供更新和冗余。
按照ISO-3166标准制定的国家域名,一般由各国的NIC(Network Information Center,网络信息中心)负责运行。我国域名体系分为类别域名和行政区域名两套。
形式:权威DNS服务器与缓存域名服务器
域名服务器通常会有两种形式:权威域名服务器,以及缓存域名服务器。
当您的计算机要查找与域名关联的IP地址时,它首先向递归DNS服务器(也称为递归解析器)发出请求。
权威域名服务器
下列情况需要有权威域名服务器:想要向全世界提供DNS信息,并对请求给出权威应答。注册了类似 exampleorg的域,而需要将IP指定到其下的主机名上。
某个IP地址块需要反向DNS项(IP 到主机名)。备份服务器,或常说的从(slave) 服务器,会在主服务器出现问题或无法访问时来应答查询请求。
缓存域名服务器
下列情况需要有缓存域名服务器:本地的DNS服务器能够缓存,并比直接向外界的域名服务器请求更快地得到应答。当有人查询www.FreeBSDorg时,解析器通常会向上级ISP的域名服务器发出请求,并获得回应。
如果有本地的缓存DNS服务器,查询只有在第一次被缓存DNS服务器发到外部。其他的查询不会发向局域网外,因为它们已经有在本地的缓存了。
DNS如何提高效率
DNS按层次结构进行组织,有助于使事情快速,顺畅地运行。为了说明这一点,让我们假设您访问某xxx.com。
如上所述,对IP地址的初始请求是向递归解析器发出的。递归解析器知道需要使用哪些其他DNS服务器来解析具有其IP地址的站点(xxx.com)的名称。
该搜索将导致一个根服务器,该服务器了解有关顶级域名的所有信息,例如.com,.net,.org以及所有国家/地区域名,例如.cn(中国)和.uk(英国)。
根服务器遍布世界各地,因此系统通常会将您引导到地理位置最接近的服务器。
请求到达正确的根服务器后,它会转到顶级域(TLD)名称服务器,该服务器存储第二级域的信息,即到达co.org.net前的二级子域名。
然后,将请求转到域名服务器,该服务器保存有关站点及其IP地址的信息。一旦发现IP地址,它将被发送回客户端,客户端现在可以使用它来访问网站。
所有这些仅需几毫秒。由于DNS已经使用了30多年,因此大多数人都将其视为理所当然。构建系统时也没有考虑安全性,因此黑客充分利用这一点,从而产生了各种攻击。
攻击一:DNS反射攻击
DNS反射攻击用来自DNS解析器服务器的大量邮件淹没受害者。攻击者使用DNS解析器,然后请求大型DNS文件来淹没受害者的IP。
所以当解析程序做出响应时,受害者会收到大量未请求的DNS数据,这些数据淹没了他们的计算机。
攻击二:DNS缓存中毒
可将用户转移到恶意网站。攻击者设法将错误的地址记录插入DNS中,因此当受害者请求中毒站点的地址解析时,DNS会使用由黑客控制的另一个站点的IP地址进行响应。
一旦进入这些假冒网站,受害者可能会被诱骗放弃密码或遭受恶意软件下载。
攻击三:DNS资源耗尽
因此,如果递归解析器无法提供与站点名称关联的IP地址,它将询问受害者的名称服务器。
(图片转自Docin,非商业用途仅供交流,勿转)
攻击者针对其域生成大量请求,并将其扔向不存在的子域以进行引导,这导致大量解析请求被攻击到受害者的名称服务器,从而使请求不堪重负。
攻击四:SIGRed可蠕虫攻击的DNS漏洞
最近,人们发现Windows DNS服务器中的漏洞可能会导致DNS的各种混乱,称为SIGRed的潜在安全漏洞需要复杂的攻击链,但可以利用未打补丁的Windows DNS服务器在客户端上安装和执行恶意代码。
该漏洞利用程序是“可蠕虫化的”,这意味着它可以在计算机之间传播,而无需人工干预。该漏洞足够令人震惊,以至于美国联邦机构反应过来时,也只有几天的时间来火速安装补丁。
前面说了这么多关于DNS的运行原理和被攻击的原理,那么DNS将如何被防护呢?接下来介绍一种DNS的防护措施和原理:
防护措施:DNSSec
互联网名称与数字地址分配机构意识到DNS顶级,二级和三级目录服务器之间的通信存在漏洞,可能使攻击者劫持查找。
这将使攻击者可以使用恶意站点的IP地址响应对合法站点的查找请求。这些网站可能会将恶意软件上传给用户,或者进行网络钓鱼和欺骗攻击。
DNSSec的保护方式则是通过让每个级别的DNS服务器对其请求进行数字签名来解决此问题,从而确保最终用户发送的请求不会接收到攻击者的欺瞒性命令。这将创建信任链,以便在查找的每个步骤中,都可以验证请求的完整性。
此外,DNSSec可以确定域名是否存在,如果不存在,则不会将该欺诈性域名交付给寻求解析域名的无辜请求者。