首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

企业开源域名服务安全防护策略及实战-1

企业开源域名服务安全防护策略及实战-1

企业开源 DNS 服务应用概述在 Internet 上域名与 IP 地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识 IP 地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器。DNS 是域名系统 Domain Name System 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。DNS 命名用于 Internet 等 TCP/IP 网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。因为,用户在上网时输入的网址,是通过域名解析系解析找到相对应的 IP 地址,这样才能上网。其实,域名的最终指向是 IP。
DNS 是一个分层级的分散式名称对应系统,看起来有点像电脑的目录树结构。在最顶端的是一个“.”(root),然后其下分为好几个基本类别名称,如 com、org、edu 等。再下面是组织名称,如 sun、yale 等。继而是主机名称,如 eng、cs、ntu 等。如图 1 所示的 DNS 域名空间的分层结构:
图 1.DNS 域名空间的分层结构值得一提的是,因为当初 Internet 是从美国发起的,所以当时并没有国域名称。但随着后来 Internet 的蓬勃发展,DNS 也加进了诸如 cn、jp、au 等国域名称。所以一个完整的 DNS 名称就好像是这样的  而整个名称对应的就是一个 IP 地址了。在开始的时候 root 下面只有六个组织类别:
  • edu:教育学术单位
  • org:组织机构
  • net:网路通讯单位
  • com:公司企业
  • gov:政府机关
  • mil:军事单位
不过自从组织类别名称开放以後各种各样五花八门的名称也相继出现,但无论如何取名的规则最好量适合网站性质。除了原来的类别资料由美国的 NIC(Network Information Center)管理之外,其它在国域以下的类别分别由该国的 NIC 管理。
DNS 系统的组成DNS 系统基于客户机 / 服务器模式,从概念上说它主要由三个部分组成:
(1)域名空间:域名空间中的记录标识一组主机并提供它们的有关信息。域中的每一个节点都有它的有关信息的数据库。查询命令试图从这个数据库中提取适当的信息。简单地说,域名空间是所有不同类型信息的列表,这些信息是域名、IP 地址、邮件别名和那些在 DNS 系统中能查到的内容。
(2)域名服务器:保持并维护域名空间中的数据的程序。每个域名服务器含有一个域名空间子集的完整信息,并保存其它有关部分的信息。一个域名服务器拥有它控制范围的完整信息。控制的信息按区进行划分,区可以分布在不同的域名服务器上,以便为每个区提供服务。每个域名服务器都知道所有负责其他区的域名服务器。如果来了一个请求,它请求给定域名服务器负责的那个区的信息,那么这个域名服务器只是简单地返回信息。但是,如果请求是不同区的信息,那么这个域名服务器就要与控制该区的相应服务器联系。
(3)解析器:解析器是简单的程序或子程序库,它从服务器中提取信息以响应对域名空间内主机的查询。
DNS 是一个很复杂的概念,下表列出了常用的 DNS 术语:
  • 域:代表网络一部分的逻辑实体或组织。
  • 域名:主机名的一部分,它代表包含这个主机的域。它可以和域交换使用。
  • 主机:网络上的一台计算机。
  • 节点:网络上的一台计算机。
  • 域名服务器:提供 DNS 服务的计算机,它将 DNS 名字转化为 IP 地址。
  • 解析:把一个域名转化为与其相应的 IP 地址的过程。
  • 解析器:从域名服务器中提取 DNS 信息的程序或库子程序。
  • 反向解析:将给出的 IP 地址转化为其相应的 DNS 名字。
  • 欺骗:使网络看上去好象具有不同的 IP 地址或域名的行为。
DNS 服务器的类型DNS 域名服务器是用来存储主机 - 域名映射信息的,这些服务器具体又可以分为 3 类:
(1)主 DNS 服务器(primary name server):它是特定域所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对其管辖域的任何查询。
(2)辅助 DNS 服务器(secondary name server):它可从主服务器中复制一整套域信息。区文件是从主服务器中复制出来的,并作为本地磁盘文件存储在辅助服务器中。这种复制称为“区文件复制”。在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询。因此,辅助域名服务器也称作权威性服务器。配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。
(3)高速缓存服务器(caching-only server):可运行域名服务器软件,但是没有域名数据库软件。它从某个远程服务器取得每次域名服务器查询的结果,一旦取得一个,就将它放在高速缓存中,以后查询相同的信息时就用它予以回答。高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。对于高速缓存服务器只需要配置一个高速缓存文件,但最常见的配置还包括一个回送文件,这或许是最常见的域名服务器配置。
DNS 的工作原理DNS 基于 C/S(Client/Server,客户机 / 服务器)模式,因而分为 Client 和 Server 两种角色。Client 扮演询问的角色,也就是向 Server 询问一个 Domain Name,而 Server 必须要回答此 Domain Name 所对应的真正 IP 地址。而当地的 DNS 先会查自己的资料库。如果自己的资料库没有,则会往该 DNS 上所设的其他 DNS 进行求助询问,依此得到答案之后,将收到的答案存起来,并回答客户。
DNS 服务器会根据不同的授权区(Zone),记录所属该网域下的各名称资料,这个资料包括网域下的次网域名称及主机名称。在每一个名称服务器中都有一个高速缓存区(Cache),这个 高速缓存区的主要目的是将该名称服务器所查询出来的名称及相对的 IP 地址记录在高速缓存区中,这样当下一次还有另外一个客户端到次服务器上去查询相同的名称时,服务器就不用在到别台主机上去寻找,而直接可以从缓存区中找到该名称记录资料,传回给客户端,以加速客户端对名称查询的速度。
举个例子,当 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 服务器信任的主机对区数据进行添加、删除和替换。
返回列表