DNS域维护和安全

一、DNS域维护

  域维护是指通过DNS协议来在主域名服务器和从域名服务器之间维护同一个zone文件。

  DNS中有两种域维护手段,一种是全量传输AXFR(full zone transfer),另一种是增量传输IXFR(incremental zone transfer)。

     1,全量传输AXFR

  全量传输时,从域名服务器从主域名服务器上请求zone文件,poll的时间间隔由SOA记录中的refresh标签定义。请求zone文件的过程是从域名服务器向主域名服务器发送查询来实现,如果主域名服务器中SOA记录中的序列号(serial number标签定义)大于从域名服务器SOA记录的序列号,从域名服务器就会向主域名服务器发送全量传输请求。所以主域名服务器一旦改变了zone文件,则需要增加它该zone中的序列号。

整个SOA记录的完整格式见下图:

  通常情况下,序列号sn遵循“年+月+日+编号”的格式,如图中的2003080803表示该zone是2003年8月8日的第三次更新。

  全量传输时在TCP的53端口上进行。

  2,增量传输(IXFR)

  传递非常大的zone文件是非常耗资源的(时间、带宽等),尤其是只有zone中的一个记录改变的时候,没有必要传递整个zone文件,增量传输是允许主域名服务器和从域名服务器之间只传输那些改变的记录。

  需要注意的是,不是所有的域名服务器都支持增量传输,当不支持增量传输时,主从间就采用全量传输的方式。

  3,通告(NOTIFY)

  从上面的分析中可以看出,从服务器每隔refresh时间向主服务器发送请求,只有主服务器的SOA中的序列号大于从服务器的序列号才传输,但是如果这个时间间隔比较大的话(比如12个小时),快速变化的网络环境可能不允许有如此大时间的差异。

  所以在实现了通告消息的DNS集群中,DNS主服务器的zone文件发生改变后,它立即向从服务器发送一个NOTIFY消息,告诉从服务器我的zone文件发生改变了,接着从服务器马上对比两者的序列号,再采用上面介绍的全量传输或者增量传输的方法请求zone文件。

  BIND本身支持通告,通告的配置是在named.conf中的zone中的option中配置,配置指令是notify, also-notify和notify-source。

  4,动态更新

  每次需要更新zone文件的时候都需要停止域名服务器并重启,这样当zone文件很多的时候域名服务器重启时加载zone文件需要很多的时间。所以需要有一种不停止查询服务而且快速更新zone文件地方机制,这种机制主要有两种:

     一种是允许外部进程在服务器运行的时候更新zone文件;

  另外一种是将zone中的资源记录RR存储在数据库中,每次查找zone中记录的时候动态读取;

二、DNS安全

  像其他的任何公共服务一样,DNS也会受到各种各样的安全威胁。DNS服务器会受到什么样的安全威胁?聪明的人们又是怎么应对这些威胁的。

  为了了解DNS受到的安全威胁和响应的应对措施,首先需要了解一下DNS的正常数据流。如下图所示:

  

  上图中的每个数据流都会受到响应的安全威胁:

  1)zone文件受到的威胁可能有:文件被无意或有意篡改或删除。这种威胁是较好应对的,最主要的方法是制定很好的系统管理策略,zone文件和其他的配置文件需要严格而安全的读写权限

  2)3)动态更新和域传输受到的威胁可能有:未授权的更新、zone文件在传输过程中被篡改(经常是把域名篡改为别的IP)。这种威胁通常的应对方法是TSIG(Transaction SIGnature)策略(这个策略定义在RFC2845中)。TSIG策略中会计算出一个key,这个key是通过单向散列(能轻松地从输入得出值,但很难通过值猜出输入)计算出来的,然后传输zone文件的双方在传输过程中都带上这个key,如果key不对就拒绝传输。

  4)5)远程查询受到的威胁可能有:cache污染(IP欺骗、数据拦截或错误的master主机地址)。cache污染是指cache中内容可能将您的域名重定向到了一个错误的服务器。这种威胁通常的应对方法是域名系统安全扩展(DNSSEC, Domain Name System Security Extensions),它是为DNS客户端(解析器)提供的的DNS数据来源,数据完整性验证,但不提供或机密性和认证的拒绝存在扩展集。


你可能感兴趣的:(DNS域维护和安全)