举个例子,当 DNS 客户端向指定的 DNS 服务器查询网 Internet 上的某一台主机名称时,DNS 服务器会先在自己的高速缓存区中查询有无该条纪录,如果找到该条名称记录后,会从 DNS 服务器直接将所对应到的 IP 地址传回给客户端;如果查不到,则再次在本地资料库中找寻用户所指定的名称;如果 DNS 服务器在高速缓存区中和本地资料记录都查不到时,服务器才会向别的 DNS 服务器查询所要的名称。例如,本地的 DNS 服务器会向最接近(比如属于同一个 IP 地址段或者同一个 ISP)的 DNS 服务器去要求帮忙找寻该名称的 IP 地址。在另一台服务器上也有相同的动作的查询,当查询到后会回复原本要求查询的服务器,该 DNS 服务器在接收到另一台 DNS 服务器查询的结果后,先将所查询到的主机名称及对应 IP 地址记录到高速缓存区中,最后在将所查询到的结果回复给客户端。这样就成功地完成了一次标准的 DNS 查询 - 应答过程。
回页首
开源 DNS 服务构建面临的主要安全威胁分析
DNS 由于受当时条件限制,其系统设计存在很多缺陷:
单点故障:DNS 采用层次化的树形结构,由树叶走向树根就可以形成—个全域名(Fully Qualified Domain Name,FQDN),DNS 服务器作为该 FQDN 唯一对外的域名数据库和对内部提供递归域名查询的系统,因而其安全和稳定就存在单点故障风险。
无认证机制:DNS 没有提供认证机制,查询者在收到应答时无法确认应答信息的真假,就容易导致 DNS 欺骗。比如,提交给某个域名服务器的域名解析请求数据包被黑客截获,黑客可以将一个虚假的 IP 地址作为应答信息返回给请求者,那么原始请求者就误以为这是正确的 IP 地址而访问它,从而这样就导致了 DNS 欺骗。
访问量和维护量巨大以及远距离集中式数据库:如果部署中采用单个或者少数个名字服务器,则这些服务器不得不处理所有 DNS 查询消息,并保存所有因特网主机的记录,数据库会相当巨大,需要为每台新增的主机频繁更新,而且单台或者少数台名字服务器主机不可能在所有请求查询的客户主机附近,就可能导致相当大的延迟。
DNS(Berkeley Internet Name Domain)的漏洞:DNS 是域名软件,它在提供高效服务的同时也存在许多的安全性漏洞。现已证明在 DNS 版本 4 和 8 上存在缺陷,攻击者利用这些缺陷能成功地进行 DNS 欺骗攻击。构成严重威胁的漏洞主要有两种:一种是缓冲区溢出漏洞,严重的可以使攻击者在 DNS 服务器上执行任意指令。另一种是 DoS 漏洞,受攻击后 DNS 服务器不能提供正常服务,而且其所辖的子网无法正常工作。
DNS 面临的网络威胁是指 DNS 在实际的应用和部署中,不法用户或者黑客利用 DNS 协议或者软件设计的漏洞,可以通过网络向 DNS 发起的攻击,主要包括如下几种:
内部攻击:攻击者在非法或合法地控制一台 DNS 服务器后,可以直接操作域名数据库,修改指定域名所对应的 IP 为自己所控制的主机 IP,当客户发出对指定域名的查询请求后,将得到伪造的 IP 地址。
序列号攻击:DNS 协议格式中定义了用来匹配请求数据包和响应数据报序列 ID,欺骗者利用序列号伪装成 DNS 服务器向客户端发送 DNS 响应数据包,在 DNS 服务器发送的真实 DNS 响应数据报之前到达客户端,从而将客户端带到攻击者所希望的网站,进行 DNS 欺骗。
信息插入攻击:攻击者可以在 DNS 应答报文中随意添加某些信息,指示权威域名服务器的域名及 IP,那么在被影响的域名服务器上查询该域的请求都会被转向攻击者所指定的域名服务器上去,从而威胁到网络数据的完整性。
缓存中毒:DNS 使用超高速缓存,即当一个名字服务器收到有关域名和 IP 的映射信息时,它会将该信息存放在高速缓存中。当再次遇到相同的映射请求,能直接使用缓存中的结果,这种映射表是动态更新的,刷新也是有时限的,这样假冒者如果在下次更新之前成功地修改了 DNS 服务器上的映射缓存,就可以进行 DNS 欺骗或者 DDoS 攻击了。
信息泄漏:DNS 的缺省设置允许任何人进行区传送(区传送一般用于主服务器和辅服务器之间的数据同步,辅服务器可以从主服务器获取最新区数据文件的副本,也就可以获得整个授权区域内的所有主机信息 ),区传送可能会造成信息泄漏。一旦这些信息泄漏,攻击者就可以根据它轻松地推测主服务器的网络结构,并从这些信息中判断其功能或发现那些防范措施较弱的机器。
不安全的动态更新:随着动态主机配置协议(DHCP)的出现,客户计算机由 DHCP 服务器动态分配 IP 地址,使原来手工更新其 A(Address)记录和 PTR(反向解析)记录变得很难管理。因此在 RFC2136 标准草案中提出了 DNS 动态更新,使得 DNS 客户端在 IP 地址或名称出现更改的任何时候都可利用 DNS 服务器来注册和动态更新其资源记录。尽管 DNS 动态更新协议规定只有经过授权的主机才能动态更新服务器的 zone file,但是攻击者还是可以利用 IP 欺骗伪装成 DNS 服务器信任的主机对区数据进行添加、删除和替换。
回页首
实战一:DNS 服务安全配置
在使用 DNS 服务器之前,需要对与之相关的配置文件进行配置,因而首先需要了解这些基本文件,下面列表给出了几种主要的与 DNS 有关的文件:
/etc/name.conf 文件:它是 DNS 服务器的主文件,通过它可以设置一般的 name 参数,指向该服务器使用的域数据库的信息源。
/var/named/named.ca 文件:它是根域名配置服务器指向文件,通过它来指向根域名服务器,用于高速缓存服务器初始化。
/var/named/localhost.zone 文件:localhost 区文件,用于将名字 localhost 转换为本地回送 IP 地址(127.0.0.1)。
/var/named/localhost.zone 文件:localhost 区反向域名解析文件,用于将本地 IP 地址(127.0.0.1)转化为会送方 localhost 名字。
/var/named/name2ip.conf 文件:用户配置的正向解析文件,将主机名映射为 IP 地址。
/var/named/ip2name.conf 文件:用户配置的反向解析文件,将 ip 地址映射为主机名。
named.conf 主配置文件
在使用 named.conf 进行配置时,需要了解如下常用的配置语句,如表 1 所示。
原文转自:http://www.ibm.com/developerworks/cn/linux/1306_liyang_securedns/