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+ 域名服务器安
全增强”<security.nsfocus/showQueryL.asp?libID=530>
(3)v9,最新版本的BIND,全部重新写过,免费(但是由商业公司资助),BIND9在200
0年十月份推出, 根据调查v9版本的BIND是最安全的,它的最新安全版本在其:/ 下载下载源代码安装即可。例如使用Linux系统针对拒绝服务攻击只要将BIND 9升级为版本9.2.1即可。
2.保持DNS服务器配置正确、可靠
这一点相对困难。Linux上的域名服务由named守护进程控制,该进程从主文件:/f中获取信息。它包括一组将主机名称映射为IP地址的各种文件。Linux 下主要DNS配置文件见表一、二、三:
表-1 DNS主要配置文件
表-2 named配置文件族
f时DNS中的核心它的配置 见表三:
表-f文件的配置
可以看到DNS配置文件是一个复杂的系统。伴随DNS建立出现的许多问题都会引起相同的结果,但起因却不同。但大多数问题是由于配置文件中的语法错误而导致的。DNS是一组文件构成的,所以需要不同工具检查对应文件。一个配置存在缺陷的DNS服务器会存在很大的安全漏洞。这里可以通过一些工具:nslookup、dig、named-checkzone、host、named-checkconf、dlint 等对DNS配置文件进行检查。其中安装BIND软件包时自动安装的工具包括:nslookup、dig、named-checkzone、host、named-checkconf。dlint是一个专门检查DNS配置文件开放源代码软件。可以在
www.domtools/dns/dlint.shtml下载。
详细DNS服务器工作状态
在维护DNS服务器时,网管员希望知道到底是哪些用户在使用DNS服务器,同时也希望能对DNS状态查询做一个统计。这里我们可以使用dnstop查询DNS服务器状态:
软件下载和安装:
运行软件:
如果想查看通过eth0的DNS网络流量可以使用命令
在运行dnstop的过程中,可以敲入如下命令: s,d,t,1,2,3, ctrl+r,ctrl+x,以交互方式来显示不同的信息。
1-(TLD)记录查询的顶级域名,
2-(SLD)记录查询的二级域名,
3-(SLD)记录查询的三级域名,
s-(Source)记录发送dns查询的客户端ip地址表,
d-(Destinations)记录dns查询的目的服务器的ip地址表 ,
t-(Query Type)记录查询详细类型。
ctrl+r-重新纪录。
ctrl+x-退出。更详细信息可以查看man dnstop。
下面以使用最为广泛的Unix类DNS软件BIND为例,介绍如何配置一个安全DNS服务器。本文以RHEL 4.0为工作平台。
1. 隔离DNS服务器
首先应该隔离BIND服务器,不应该在DNS服务器上跑其他服务,尽量允许普通用户登陆。减少其它的服务可以缩小被攻击的可能性,比如混合攻击。
2. 隐藏BIND的版本号
通常软件的BUG信息是和特定版本相关的,因此版本号是黑客寻求最有价值的信息。黑客
使用dig命令可以查询BIND的版本号,然后黑客就知道这个软件有那些漏洞。因此随意公开版本号是不明智的。隐藏BIND版本号比较简单,修改配置文件:/f,在option部分添加version声明将BIND的版本号信息覆盖。例如使用下面的配置声明,当有人请求版本信息时,迫使nmaed显示:“Unsupported on this platform ”
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论