DNS风险分析及安全防护研究(三):DNS缓存投毒及防御策略

在前面章节中,我们简单介绍了DNS系统在协议、软件以及结构中脆弱性,并对DNSSEC协议、去中心化结构等安全增强进行了讨论,接下来针对DNS安全所面临的外部攻击威胁和相应的防御策略做下讨论。

1.DNS缓存投毒攻击

在目前各种DNS攻击手段中,DNS缓存投毒(DNS Cache Poisoning)是比较常见也是危害较大的一种,它通过使用虚假域名解析数据替代DNS服务器缓存中主机记录的真实IP地址信息,从而诱导用户访问错误站点,达成攻击目的。

1.1传统DNS缓存投毒

DNS系统采用树状分形结构,在标准解析链条中,递归服务器在接收到客户主机发起的解析请求后,会发起全球迭代查询,最终在域名授权的权威服务器获得最终的解析记录。为了缩短解析时间,提高域名解析和web访问的速度,DNS系统引入了缓存机制。递归服务器从权威服务器请求到查询结果后,除了告知客户主机外还会将结果保存在自身缓存中一段时间,这就是DNS缓存(DNS Cache)。DNS缓存投毒攻击就是通过污染DNS缓存,用虚假的IP地址信息替换DNS服务器中真实IP地址信息,达成攻击效果。

目前DNS采用UDP协议传输和应答数据包,采用简单的信任机制,对首先收到的应答数据包仅进行发送IP地址、端口和随机查询ID的确认,而不会对数据包的合法性进行验证,如果数据包确认就会将其作为正确应答数据包,继续DNS解析过程,丢弃后续到达的所有数据包。这个过程所存在的缺陷,为攻击者仿冒权威服务器向缓存DNS服务器发送伪造应答包提供了机会。如果攻击者抢先在权威服务器之前将伪造的应答数据包发送到DNS服务器,并与原查询包IP地址、端口和随机查询ID匹配,就能成功污染DNS缓存,使得在该缓存有效期内,将使用该缓存服务器的客户主机对该域名的访问请求至受攻击者控制的IP地址。
在这里插入图片描述

传统DNS缓存投毒攻击有较大的局限性,必须等待原DNS缓存失效,缓存DNS服务器重新向权威服务器发起请求时发动攻击。然而当前大多数缓存DNS服务器的DNS缓存TTL设置时间较长,导致攻击者可以利用的攻击时间很短,攻击成功率很低。然而新型的Kaminsky攻击克服了这一缺陷,大幅提升了攻击成功率,使得DNS缓存投毒攻击的破坏性大幅上升。

1.2 Kaminsky 缓存投毒攻击

传统DNS缓存投毒,污染的目标是域名所对应的IP地址信息,而Kaminsky攻击所针对的目标则上升到了域名授权的权威域名服务器。

与传统DNS缓存投毒攻击不同,Kaminsky攻击发送给缓存DNS服务器的域名主机并不是真实的,而是使用随机序列与目标域名的组合。

如24678.example.com,其中example.com是目标域名,而24678为随机生成序列。显然24678.example.com的域名主机记录在DNS服务器中是不存在,缓存DNS在接收到这个域名请求后需要进行迭代请求。

攻击者会抢先在权威服务器之前将伪造的应答数据包发送值缓存服务器中,在伪造的应答数据包中,资源记录部分与正确应答包的结果是一样的,比如24678.example.com的DNS的IP地址、UDP端口号、应答结果是NXDOMAIN。但除此之外,攻击者还伪造了一个example.com的ns记录,将其指向攻击者控制的服务器。这条ns记录也会被写入缓存DNS服务器的缓存中,在DNS缓存时间有效内,对example.com的所有域名查询都被发送到攻击者控制的服务器上。
在这里插入图片描述

与传统DNS缓存投毒相比,Kaminsky攻击不受DNS缓存TTL的限制,其所污染的目标不再局限于域名对应的IP地址信息,而是域名主机的NS记录,破坏力更高,危害性更强。

2.DNS缓存投毒攻击的防御策略

针对DNS缓存投毒攻击,目前有几种比较可行的防御策略:

(1)Bind软件采用源端口随机性较好的较高版本,源端口的随机性可以有效降低攻击成功概率,增加攻击难度。

(2)增加权威服务器数量,目前国内外权威服务器数量得到明显提升,但仍需进一步加强。

(3)在DNS应答数据包验证方面,除原查询包IP地址、端口和随机查询ID外,增加其他可认证字段,增强认证机制。

(4)改进现有DNS协议框架,可以在DNS服务器上配置DNSSEC,或引入IPv6协议机制。

(5)UDP端口随机化,不再使用固定的53端口,在UDP端口范围内随机选择端口,可以使ID号和端口号的组合空间扩大6万多倍,降低缓存投毒的命中率。

(6)及时刷新DNS,重建DNS缓存,或者根据服务器性能适当减小缓存记录的TTL值。

(7)可以限制DNS动态更新,设置静态的DNS映射表,可以保护重要网站不被攻击。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DNS(Domain Name System)是互联网中用于将域名转换为IP地址的系统,它存在以下安全隐患: 1. DNS欺骗:攻击者可以通过欺骗DNS服务器或者缓存服务器,将用户访问的域名解析到错误的IP地址,从而引导用户访问恶意网站或者恶意服务器。 2. DNS缓存污染:攻击者可以通过向DNS服务器发送虚假的DNS响应报文,将错误的DNS信息缓存在本地DNS缓存中,从而引导用户访问恶意网站或者恶意服务器。 3. DNS拒绝服务攻击:攻击者可以通过向DNS服务器发送大量的DNS请求,占据DNS服务器的资源,从而导致DNS服务器无法正常提供服务,影响用户的正常访问。 4. DNS攻击:攻击者可以通过向DNS服务器发送大量的虚假DNS响应报文,从而污染DNS服务器的缓存,引导用户访问恶意网站或者恶意服务器。 5. DNS重放攻击:攻击者可以通过重复发送相同的DNS请求报文,导致DNS服务器重复响应,从而占据DNS服务器的资源,影响DNS服务器的正常工作。 为了保障DNS安全性,我们可以采取以下措施: 1. 使用防火墙和入侵检测系统:可以对DNS服务器进行监控和防护,及时发现和防止潜在的安全攻击。 2. 加强DNS服务器的安全配置:可以采用加密传输、访问控制等技术手段,提高DNS服务器的安全性。 3. 定期更新DNS软件和补丁:可以及时修补DNS软件中存在的漏洞,提高DNS服务器的安全性。 4. 使用DNS防护服务:可以使用第三方DNS防护服务,提高DNS服务器的安全性,避免DNS攻击的发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值