内网域名系统的安全保密风险研究
保密责任 重于泰山
1 引言 随着信息化的不断深入,机关、单位内网业务不断拓展,应用不断增多,为提高用户使用体验,越来越多的单位在内网中部署域名系统。 域名系统(Domain Name System,DNS)主要负责提供域名地址空间映射服务,将易于人类记忆的域名翻译为易于机器识别的IP地址。域名系统就像电话号码本,号码本上的联系人是域名,而联系方式就是IP地址。所有的上网行为,除非直接通过IP地址访问,浏览器第一步做的都是通过查询域名服务器将域名转换为IP地址,IP地址错了,后面的报文生成、TCP连接、网络包路由等都没有意义。在互联网中,域名系统是最重要的基础设施之一,确保其安全可靠是保障网络正常运行的关键点;但在内网中,由于更多的关注应用系统、安全保密设备、网络设备、终端设备等的安全,域名系统的安全性往往会被忽视,因此渐渐成为木桶效应的那块短板。 本文比较了内网域名系统和互联网域名系统的不同,分析了内网域名系统面临的主要安全保密风险,并提出了一些相应的安全保密措施。 2 域名系统 域名系统能实现域名与IP地址的快速映射与转换,为了保证网络中域名的唯一性,域名系统采用特殊的树状结构以实现域名层次的划分,每一个树形节点都有不同的子节点,每一个域名都是从当前节点读到根节点路径上所有节点标记的点分顺序连接的字符串,如图1对应的域名为“www.xxxxxx.org.cn.”。其中,最后的“.”(通常省略)为根域名,“.cn”为顶级域名,“.org”为二级域名,“.xxxxxx”为三级域名,“www”为主机名。上级域名服务器中维护着其名下所有次级域名的信息,如根域名服务器中维护所有顶级域名的域名和地址信息。
将域名解析为IP地址(域名解析)的过程是从根节点开始的,比如要查询“www.xxxxxx.org.cn”这个域名的IP地址,首先向根域名服务器查询“.cn”的地址,然后再向“.cn”顶级域名服务器查询“.org”的地址,之后继续向“.org”二级域名服务器查询“.xxxxxx”的地址,最后向“.xxxxxx”三级域名服务器查询“www”主机的IP地址,这个查询的过程,称为迭代查询,而这些存储着原始域名记录信息的域名服务器又称为权威域名服务器。 实际解析过程中,客户端并不直接向权威域名服务器查询域名,而是向部署在本地的域名服务器提交递归查询请求,由本地域名服务器代为完成上述查询过程,域名解析过程如图2所示。本地域名服务器又称递归解析服务器,一般由网络运营商部署、管理,其IP地址配置在客户端的DNS地址中。同时,为提高查询效率,递归解析服务器均开启缓存功能,将最近的查询结果存储在本地高速缓存中,收到查询请求后,先检查数据是否在高速缓存中,若是,则直接返回查询结果;若否,再继续原查询过程。存储在高速缓存中的数据,为了确保不是过时的数据,其生命周期受TTL(Time To Live)值控制,超过TTL的缓存数据,会被清理掉。
3 内网域名系统与互联网域名系统的区别 内网域名系统与互联网域名系统的主要区别包括部署规模不同、解析过程不同、可控程度不同、日志量不同等。 3.1 部署规模不同 互联网域名系统经过几十年的发展,已经从一个简单的查询系统,逐步发展成为一个复杂的生态系统。目前,全球已有超过1000万台DNS服务器,从本质上看,互联网域名系统是规模庞大的全球分布式数据库系统。 相对而言,内网域名系统则比较简单,无须解析海量的互联网域名,只需解析有限的内部域名。若是局域网,一般仅需部署主、辅2台DNS服务器。2台DNS服务器均是内网的权威域名服务器,以绝对的权威回答内网管辖域的任何查询。主DNS服务器的域信息存储在管理员构造的本地磁盘文件(区域文件)中,该文件包含着该DNS服务器具有管理权的域结构的最精确信息。辅DNS服务器用于为主服务器分担负载,其从主DNS服务器下载和更新区域文件。因为不需要本地DNS服务器作为递归解析服务器再向其他DNS服务器查询,因此内网域名系统一般把本地DNS服务器就设置为根服务器。内网若是规模特别大的广域网,也可以分级部署,在中心节点部署根域名服务器。 3.2 解析过程不同 互联网域名系统中,由广泛部署于互联网中的递归解析服务器为客户端提供查询服务,递归解析服务器从根域名开始,逐级查询,直至查询到目标域名。 内网域名系统的解析过程不需要那么复杂,客户端直接向主/辅DNS服务器发送查询请求,无论域名是否存在,都由主/辅DNS服务器直接返回权威解析数据,不需要再向其他DNS服务器进行查询,如图3所示(内网规模特别大,域名系统分级部署的除外)。同样,主/辅DNS服务器一般也会开启DNS缓存功能,域名已被缓存的,直接将缓存中的数据返回查询客户端。
3.3 可控程度不同 互联网域名系统采用中心化管理模式,一直由美国主导。其中最高一级的根域名服务器分布严重失衡,共有13个根域名服务器:1个主根域名服务器、9个辅根域名服务器放置在美国,2个辅根域名服务器分别放置在欧洲的英国和瑞典,1个辅根域名服务器放置在亚洲的日本。辅根域名服务器中的根区域文件需与主根域名服务器保持一致。第二级的顶级域名,包括“国家和地区顶级域名”“通用顶级域名”“新增通用顶级域名”等,除“国家和地区顶级域名”由各国网络信息中心负责管理外,其余的均由位于美国的国际互联网络名称及编号分配公司(Internet Corporation for Assigned Names and Numbers,ICANN)管理。虽然自2016年以来,美国政府形式上完全移交了管理权,不再承担相关审核和监督职责,但美国在专家、技术和产业上依然具有优势,ICANN等也将继续接受美国法律管辖,这种一家独大的中心化管理模式给整个互联网域名系统的稳定运行带来潜在隐患。 在互联网域名体系中,虽然“.cn”“.中国”等国家顶级域名由中国互联网信息中心(CNNIC)管理,但顶级域名在很大程度上还要受制于根域名,可控性仍比较差。与互联网域名系统的管理体制不同,内网域名系统的建设、管理均掌握在内网建设使用单位手中,无论是单级管理,还是两级甚至多级管理,各级域名服务器均在内网可控单位的管理之下,可控程度很高。 3.4 日志量不同 互联网域名系统在域名解析过程中会产生海量日志,因为用户主动发起的DNS查询,会连带产生大量的被动DNS查询。如当使用浏览器进入某个域名的网页时,后台可能会产生大量附加处理操作,会请求不同域名下的图片、视频、脚本等资源,而每次资源请求都会产生一次DNS查询。大量的查询导致产生海量日志。在某运营商的网络中,每天可以产生几十TB级的DNS日志。 内网域名系统的日志量要小得多,一方面内网的客户端数量规模有限,查询的主体要少得多;另一方面,内网中域名的数量有限,一般仅部署几个至几十个用于内部办公、业务工作的Web应用、网站等。同时,页面内容也远没有互联网丰富,被动查询较少。一般内网域名系统每天产生的日志量在MB级。 4 内网域名系统的安全保密风险 内网域名系统的不同特点决定了其安全问题也与互联网域名系统不同,下面分析了一些常见安全问题在内网域名系统中的安全保密风险情况。 4.1 缓存投毒 缓存投毒主要针对的是递归解析服务器,攻击者是利用递归解析服务器无法验证DNS数据真实性的特点,将虚假的DNS查询回复写入递归解析服务器的高速缓存中,同时为延长缓存中毒的时间,攻击者还会将回复TTL设得足够大,这样客户端向递归解析服务器查询有关域名信息时,会命中高速缓存的中毒信息,导致客户端收到错误的IP地址,访问到攻击者控制的服务器,造成用户数据泄露。在内网域名系统中,此种攻击方式只适用于多级部署且DNS服务器开启递归解析功能的情况,对于仅主、辅两台DNS服务器的单级部署方式,因为主、辅DNS服务器不需要向其他DNS服务器查询,因此一般不会缓存中毒。 4.2 DNS ID欺骗 域名解析采用基于UDP协议的数据报文进行通信,且请求报文和响应报文具有相同的数据结构,如图4所示。其中报文头部的ID是DNS查询应答的唯一标识,通常是随机生成的。当客户端发起DNS查询时,攻击者可以在DNS服务器应答前伪造同样ID的响应报文对客户端进行欺骗攻击,其危害和缓存投毒一样,都会使客户端访问到攻击者控制的服务器,但其攻击不如缓存中毒攻击持久。
DNS ID攻击需要获取客户端DNS请求报文头部的ID,采用穷举法显然效率不高,通过监听客户端网络数据包或者采取ARP欺骗的方式,更容易实现,特别是攻击者和客户端在同一个内网、同一个网段的情况下。 4.3 普通DDoS攻击 分布式拒绝攻击(DDoS)是网络中最常见的攻击方式,不仅域名系统,网络中所有服务器都深受其害。其具体攻击方式有多种,针对域名系统的DDoS攻击最基本方法就是利用大量正常的DNS查询请求来占用DNS服务器的网络带宽、CPU、内存等资源,使得其他合法的DNS查询得不到响应。普通DDoS攻击常常需要控制较多的傀儡主机完成饱和攻击,如果查询数量不足,不能覆盖住DNS服务器的资源,就无法攻击成功。由于内网中本身客户端数量就有限,再加上防护措施比较多,较难控制大量主机进行DDoS攻击。另外,DDoS攻击只会导致DNS服务器性能下降,延迟提高,但查询结果还是正确的,因此在内网中的安全保密风险较低。 4.4 DNS 放大攻击 通常的DNS响应报文只有几十个字节,但特定查询的DNS响应报文却可以很长,例如ANY类型、TXT类型或者EDNS0的DNS响应报文可以上千甚至几千个字节,响应报文的长度是通常请求报文的几十倍。DNS放大攻击就是利用了这一特性,向DNS服务器发送大量此类查询请求,DNS服务器将回复几十倍的应答流量,资源被更快地消耗。这种攻击可以看作是普通DDoS攻击的加强版,攻击者可以用更少的查询量、更快地攻瘫DNS服务器。同普通DDoS攻击一样,由于内网中可控制的主机数量有限,要成功完成此类攻击,有一定的难度。 4.5 DNS反射攻击和反射放大攻击 DNS反射攻击是利用DNS服务器的响应报文攻击客户端或递归解析服务器的攻击方式。攻击者利用傀儡主机向多个DNS服务器(反射体)发起大量的DNS查询请求,查询请求的源IP地址伪造为受害客户端或递归解析服务器的IP地址,这样DNS服务器返回的响应结果流量就会全部打到受害客户端或递归解析服务器上,迅速消耗其资源,导致无法提供服务。 DNS反射攻击通常结合DNS放大攻击一起使用,即反射放大攻击,发起大量伪造源IP地址的、会放大响应报文的DNS查询请求,以增强攻击效果,这种方式往往比普通DDoS攻击更有效。 由于反射攻击和反射放大攻击都需要足够多的反射体(即DNS服务器)来响应查询请求,而内网中DNS服务器的规模数量要比互联网中小得多,因此这两类攻击的在内网中发生的概率较低。 4.6 DNS日志泄露 DNS服务器日志中含有客户端请求域名解析的记录,一般包括日期、时间戳、请求源IP地址和端口号、请求域名、解析记录等信息。内网域名系统中,请求源IP地址就是客户端真实的IP地址,这样,DNS日志记录就提供了一个完整的存活主机列表。在内网中,各种扫描工具会被严格限制,如果能够访问到DNS服务器日志,就代替扫描工具拿到了存活主机列表,完成了网络渗透攻击的第一步。 互联网域名系统中,在使用IPv4的情况下,一是因为地址空间有限,客户端访问互联网时,会进行网络地址转换,因此递归解析服务器日志中的请求源IP地址并不是客户端的真实地址(IPv6环境下,IP地址不再是紧缺资源,客户端访问互联网不进行地址转换,递归解析服务器上存储的就是真实的客户端IP地址);二是域名解析是由递归解析服务器代替客户端向权威域名服务器查询的,因此权威域名服务器上的DNS日志,请求源IP地址为递归解析服务器的IP地址,不是客户端IP地址;三是互联网域名系统的DNS服务器中有海量的DNS日志,日志分析利用的难度比较大,因此安全保密隐患相对较低。 DNS协议设计之初没有过多考虑安全问题,为提高效率,几乎所有DNS流量都是基于明文传输的,没有采取保护措施。因此通过链路监听的方式,也可以分析出请求源IP地址、查询的域名等信息,甚至可以通过监听DNS响应报文,获取服务器的IP地址列表。 4.7 主/辅部署不当 内网域名系统通常以主/辅方式部署DNS服务器,当其中某一台服务器不能工作时,另一台服务器仍然可以提供解析服务。然而实际部署中,主、辅DNS服务器常常位于同一网段、同一防火墙后、同一物理地点,不能有效防止区域性突发事件造成的服务中断(例如网络中断、电力中断、防火墙拥塞等),具有潜在的可用性问题。在互联网域名系统中,域名系统是关键基础设施,无论是递归解析服务器,还是权威域名服务器,都部署了大量的辅服务器或镜像服务器,此方面的安全隐患较低。 4.8 匿名区域文件传输 区域传输用于主、辅DNS服务器之间的数据更新和备份。例如,当主DNS服务器上的权威记录发生变化时,辅DNS服务器通过区域传输的方式从主DNS服务器下载区域文件的完整副本,以保持数据一致。在具体实现上,区域传输采用客户端-服务器的形式进行,客户端发送一个axfr(异步完整区域传输)类型的DNS查询请求,通过TCP连接从服务器端获取完整的区域文件。 区域文件为域名服务器的敏感数据,应该严格保护,避免泄露,因此,异步完整区域传输应当仅允许在受信任的DNS服务器之间进行。但内网中,由于和外部网络隔离,此方面防范经常疏忽,DNS服务器常配置不当,任意匿名主机都可以利用异步完整区域传输获取完整区域文件,暴露网络中的信息,加快渗透攻击进程。 4.9 匿名区域文件更新 主DNS服务器的区域文件更新可通过运维主机编辑服务器上的区域文件完成,运维主机通过update请求完成对区域文件的修改。这个操作也应当仅允许在受信任的主机和DNS服务器之间进行,但内网中,有时为了便利操作,DNS服务器会开放配置,任意匿名主机都可以更新,这样攻击者可以通过构造恶意的update请求对区域文件进行任意修改,将域名解析地址更改为攻击者控制的IP地址,以便开展下一步窃密行为。 综上,本文列举了一些常见安全问题在内网域名系统中的安全保密风险情况,另外,还有一些老生常谈的DNS服务器操作系统配置不完善、DNS软件(Linux系统的BIND、Windows系统的DNS服务系统组件)配置不完善等风险,以及一些在内网域名系统出现概率非常低的安全保密风险,如相似域名欺骗、伪造DNS服务器、无效域名查询攻击等,就不再一一赘述。表1比较了内网域名系统和互联网域名系统一些安全保密风险发生的概率。
5 有关防护措施建议 为降低内网域名系统的安全保密风险,可以采取如下几种防护措施。 (1)合理的网络结构设计,在DNS服务器前部署防火墙、IPS等防护设备,对网络流量进行过滤、清洗;主DNS服务器和辅DNS服务器位于不同的网段,部署在不同防火墙后,条件允许的,放置在不同的楼宇;对网络合理进行分段,在网络中部署设备接入控制系统。 (2)部署DNS安全拓展协议(Domain Name System Security Extensions,DNSSEC),DNSSEC采用数字签名的方式解决了域名解析记录传输中的安全问题,可以有效防范缓存投毒和DNS ID欺骗等攻击。 (3)加强防火墙的配置,仅开放必要服务和端口,如DNS服务、TCP和UDP的53号端口(未修改DNS服务端口号的情况下)。 (4)DNS服务器应配置高性能的硬件,确保不被DDoS攻击轻易攻瘫;操作系统仅开放必要服务和端口,启用伪根目录,并部署入侵检测、防病毒软件等防护系统;严格限制对DNS日志、区域传输文件的访问权限。 (5)完善DNS软件的配置,包括及时更新版本、限制域名解析的源IP地址、隐藏DNS软件版本等。 6 结语 内网域名系统的安全保密风险问题常常被忽视,本文介绍了域名系统的原理,比较了内网域名系统和互联网域名系统的不同,分析了内网域名系统面临的主要安全保密风险,并给出了一些改进建议。 下一步,随着内网规模的不断扩大,特别是国家电子政务内网的建成、扩展,在电子政务内网中构建国家级可信内网域名体系的需求越来越迫切,内网域名系统会成为内网的核心基础设施,其安全问题将会越来越被关注。
来源:知乎@保密资质
|