DNS服务面临的安全隐患主要包括:DNS欺骗(DNS Spoffing)、拒绝服务(Denial of service,DoS)攻击、分布式拒绝服务攻击和缓冲区漏洞溢出攻击(Buffer Overflow)。
1. DNS欺骗
DNS欺骗即域名信息欺骗是最常见的DNS安全问题。当一个DNS服务器掉入陷阱,使用了来自一个恶意DNS服务器的错误信息,那么该DNS服务器就被欺骗了。DNS欺骗会使那些易受攻击的DNS服务器产生许多安全问题,例如:将用户引导到错误的互联网站点,或者发送一个电子邮件到一个未经授权的邮件服务器。网络攻击者通常通过两种方法进行DNS欺骗。
(1)缓存感染
黑客会熟练的使用DNS请求,将数据放入一个没有设防的DNS服务器的缓存当中。这些缓存信息会在客户进行DNS访问时返回给客户,从而将客户引导到入侵者所设置的运行木马的Web服务器或邮件服务器上,然后黑客从这些服务器上获取用户信息。
(2)DNS信息劫持
入侵者通过监听客户端和DNS服务器的对话,通过猜测服务器响应给客户端的DNS查询ID。每个DNS报文包括一个相关联的16位ID号,DNS服务器根据这个ID号获取请求源位置。黑客在DNS服务器之前将虚假的响应交给用户,从而欺骗客户端去访问恶意的网站。
(3)DNS重定向
攻击者能够将DNS名称查询重定向到恶意DNS服务器。这样攻击者可以获得DNS服务器的写权限。
2.拒绝服务攻击
黑客主要利用一些DNS软件的漏洞,如在BIND 9版本(版本9.2.0以前的 9系列)如果有人向运行BIND的设备发送特定的DNS数据包请求,BIND就会自动关闭。攻击者只能使BIND关闭,而无法在服务器上执行任意命令。如果得不到DNS服务,那么就会产生一场灾难:由于网址不能解析为IP地址,用户将无方访问互联网。这样,DNS产生的问题就好像是互联网本身所产生的问题,这将导致大量的混乱。
3、分布式拒绝服务攻击
DDOS 攻击通过使用攻击者控制的几十台或几百台计算机攻击一台主机,使得服务拒绝攻击更难以防范:使服务拒绝攻击更难以通过阻塞单一攻击源主机的数据流,来防范服务拒绝攻击。Syn Flood是针对DNS服务器最常见的分布式拒绝服务攻击。SYN Flood攻击利用的是IPv4中TCP协议的三次握手(Three-Way Handshake)过程进行的攻击。大家知道协议规定,如果一端想向另一端发起TCP连接,它需要首先发送TCP SYN 包到对方,对方收到后发送一个TCP SYN+ACK包回来,发起方再发送TCP ACK包回去,这样三次握手就结束了。我们把TCP连接的发起方叫作"TCP客户机(TCP Client)",TCP连接的接收方叫作"TCP服务器(TCP Server)"。
值得注意的是在TCP服务器收到TCP SYN request包时,在发送TCP SYN+ACK包回TCP客户机前,TCP服务器要先分配好一个数据区专门服务于这个即将形成的TCP连接。一般把收到SYN包而还未收到ACK包时的连接状态成为半开连接(Half-open Connection)。在最常见的SYN Flood攻击中,攻击者在短时间内发送大量的TCP SYN包给受害者,这时攻击者是TCP客户机,受害者是TCP服务器。根据上面的描述,受害者会为每个TCP SYN包分配一个特定的数据区,只要这些SYN包具有不同的源地址(这一点对于攻击者来说是很容易伪造的)。这将给TCP服务器系统造成很大的系统负担,最终导致系统不能正常工作。
4.缓冲区漏洞溢出攻击
黑客利用DNS服务器软件存在漏洞,比如对特定的输入没有进行严格检查,那幺有可能被攻击者利用,攻击者构造特殊的畸形数据包来对DNS服务器进行缓冲区溢出攻击。如果这一攻击成功,就会造成DNS服务停止,或者攻击者能够在DNS服务器上执行其设定的任意代码。例如, 前一阵子针对 Linux 平台的 BIND的攻击(e.g. Lion worm)程序, 就是利用某些版本的 BIND 漏洞, 取得root 权限, 一旦入侵完成之后, 入侵者就可以完全控制整个相关的网络系统, 影响非常严重。主要包括:
(1) 更改MX记录,造成邮件被截获、修改或删除。
(2)更改A记录,使您的WWW服务器的域名指向黑客的具有同样WWW内容的主机,诱使访问者登录,获取访问者的密码等相关信息。添加A记录,使黑客的主机拥有被相信的域名,以此来入侵通过启用域名信任机制的系统。
(3)利用这台主机作为攻击其他机器的“跳板”。
1. 选择安全没有缺陷的DNS版本:
BIND主要分为三个版本:
(1)v4,1998年多数UNIX捆绑的是BIND4,已经被多数厂商抛弃了,除了OpenBSD还在使
用。OpenBSD核心人为BIND8过于复杂和不安全,所以继续使用BIND4。这样一来BIND8/9
的很多优点都不包括在v4中。
(2)v8,就是如今使用最多最广的版本,其详细内容可以参阅“BIND 8+ 域名服务器安
全增强”<http://security.nsfocus.com/showQueryL.asp?libID=530>
(3)v9,最新版本的BIND,全部重新写过,免费(但是由商业公司资助),BIND9在2000年十月份推出, 根据调查v9版本的BIND是最安全的,它的最新安全版本在其官方网站:http://www.isc.org/ 下载下载源代码安装即可。例如使用Linux系统针对拒绝服务攻击只要将BIND 9升级为版本9.2.1即可。
2.保持DNS服务器配置正确、可靠
这一点相对困难。Linux上的域名服务由named守护进程控制,该进程从主文件:/etc/named.conf中获取信息。它包括一组将主机名称映射为IP地址的各种文件。Linux 下主要DNS配置文件见表一、二、三:
![]() |
表-1 DNS主要配置文件 点击看大图 |
![]() |
表-2 named配置文件族 点击看大图 |
named.conf时DNS中的核心它的配置 见表三:
![]() |
表-3 named.conf文件的配置 点击看大图 |
可以看到DNS配置文件是一个复杂的系统。伴随DNS建立出现的许多问题都会引起相同的结果,但起因却不同。但大多数问题是由于配置文件中的语法错误而导致的。DNS是一组文件构成的,所以需要不同工具检查对应文件。一个配置存在缺陷的DNS服务器会存在很大的安全漏洞。这里可以通过一些工具:nslookup、dig、named-checkzone、host、named-checkconf、dlint 等对DNS配置文件进行检查。其中安装BIND软件包时自动安装的工具包括:nslookup、dig、named-checkzone、host、named-checkconf。dlint是一个专门检查DNS配置文件开放源代码软件。可以在
http://www.domtools.com/dns/dlint.shtml下载。
分页: [1] [2] [3] [4]
- 上一篇:甲骨文联合Sun推OLTP服务器
- 下一篇:如何选择“称职”的高端防火墙