有必要全面提升BINDDNS服务器的安全性能
扫描二维码
随时随地手机看文章
(文章来源:站长之家)
互联网上DNS服务器的事实标准就是ISC的BIND,BillManning对in-addr域的调查发现,有95%的域名服务器(2的2000次方个服务器中)使用的是各种版本的“bind”。这其中包括了所有的DNS根服务器,而这些根服务器对整个服务器的正常运转起着至关重要的作用。
DNS服务面临的安全隐患主要包括:DNS欺骗(DNSSpoffing)、拒绝服务(Denialofservice,DoS)攻击、分布式拒绝服务攻击和缓冲区漏洞溢出攻击(BufferOverflow)。
DNS欺骗即域名信息欺骗是最常见的DNS安全问题。当一个DNS服务器掉入陷阱,使用了来自一个恶意DNS服务器的错误信息,那么该DNS服务器就被欺骗了。DNS欺骗会使那些易受攻击的DNS服务器产生许多安全问题,例如:将用户引导到错误的互联网站点,或者发送一个电子邮件到一个未经授权的邮件服务器。网络攻击者通常通过两种方法进行DNS欺骗。
黑客会熟练的使用DNS请求,将数据放入一个没有设防的DNS服务器的缓存当中。这些缓存信息会在客户进行DNS访问时返回给客户,从而将客户引导到入侵者所设置的运行木马的Web服务器或邮件服务器上,然后黑客从这些服务器上获取用户信息。
入侵者通过监听客户端和DNS服务器的对话,通过猜测服务器响应给客户端的DNS查询ID。每个DNS报文包括一个相关联的16位ID号,DNS服务器根据这个ID号获取请求源位置。黑客在DNS服务器之前将虚假的响应交给用户,从而欺骗客户端去访问恶意的网站。攻击者能够将DNS名称查询重定向到恶意DNS服务器。这样攻击者可以获得DNS服务器的写权限。
黑客主要利用一些DNS软件的漏洞,如在BIND9版本(版本9.2.0以前的9系列)如果有人向运行BIND的设备发送特定的DNS数据包请求,BIND就会自动关闭。攻击者只能使BIND关闭,而无法在服务器上执行任意命令。如果得不到DNS服务,那么就会产生一场灾难:由于网址不能解析为IP地址,用户将无方访问互联网。这样,DNS产生的问题就好像是互联网本身所产生的问题,这将导致大量的混乱。
DDOS攻击通过使用攻击者控制的几十台或几百台计算机攻击一台主机,使得服务拒绝攻击更难以防范:使服务拒绝攻击更难以通过阻塞单一攻击源主机的数据流,来防范服务拒绝攻击。SynFlood是针对DNS服务器最常见的分布式拒绝服务攻击。SYNFlood攻击利用的是IPv4中TCP协议的三次握手(Three-WayHandshake)过程进行的攻击。大家知道协议规定,如果一端想向另一端发起TCP连接,它需要首先发送TCPSYN包到对方,对方收到后发送一个TCPSYN+ACK包回来,发起方再发送TCPACK包回去,这样三次握手就结束了。我们把TCP连接的发起方叫作"TCP客户机(TCPClient)",TCP连接的接收方叫作"TCP服务器(TCPServer)"。
值得注意的是在TCP服务器收到TCPSYNrequest包时,在发送TCPSYN+ACK包回TCP客户机前,TCP服务器要先分配好一个数据区专门服务于这个即将形成的TCP连接。一般把收到SYN包而还未收到ACK包时的连接状态成为半开连接(Half-openConnection)。在最常见的SYNFlood攻击中,攻击者在短时间内发送大量的TCPSYN包给受害者,这时攻击者是TCP客户机,受害者是TCP服务器。根据上面的描述,受害者会为每个TCPSYN包分配一个特定的数据区,只要这些SYN包具有不同的源地址(这一点对于攻击者来说是很容易伪造的)。这将给TCP服务器系统造成很大的系统负担,最终导致系统不能正常工作。
黑客利用DNS服务器软件存在漏洞,比如对特定的输入没有进行严格检查,那幺有可能被攻击者利用,攻击者构造特殊的畸形数据包来对DNS服务器进行缓冲区溢出攻击。如果这一攻击成功,就会造成DNS服务停止,或者攻击者能够在DNS服务器上执行其设定的任意代码。例如,前一阵子针对Linux平台的BIND的攻击(e.g.Lionworm)程序,就是利用某些版本的BIND漏洞,取得root权限,一旦入侵完成之后,入侵者就可以完全控制整个相关的网络系统,影响非常严重。