《DNS攻击防范科普系列4》--遭遇DNS缓存投毒该怎么办?

简介:         在《DNS攻击防范科普系列》的前几讲中,我们介绍了常见的DNS攻击、以及防范DDoS攻击、保障操作安全的方法。今天我们给大家带来的是对DNS缓存投毒攻击的防范。首先我们先来说说什么是“DNS缓存投毒”。

        在《DNS攻击防范科普系列》的前几讲中,我们介绍了常见的DNS攻击、以及防范DDoS攻击、保障操作安全的方法。今天我们给大家带来的是对DNS缓存投毒攻击的防范。首先我们先来说说什么是“DNS缓存投毒”。

DNS缓存投毒介绍
_

        缓存投毒(DNS cache poisoning),又称DNS缓存污染(DNS cache pollution),是指一些刻意制造(投毒)或无意中制造(污染)出来的DNS数据包,让DNS缓存服务器缓存了错误的域名解析记录。
        DNS缓存投毒工作方式是:由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非常容易被篡改,通过对UDP端口53上的DNS查询进行监听,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器(NS,Name Server)给查询者返回错误结果。
为了减少网络上的流量,一般的DNS缓存服务器都会把域名数据缓存起来,待下次有其他DNS客户端要求解析同样的域名时,可以立即提供服务。当缓存服务器缓存了错误的域名数据时,DNS客户端在请求这些域名时就会得到错误的结果。

DNS缓存投毒原理
        目前DNS采用UDP协议传输查询和应答数据包,采用简单信任机制,对首先收到的DNS应答数据包仅进行原查询包发送IP地址、端口和ID的确认,而不会对数据包的合法性做任何分析,若匹配,则接受其为正确应答数据包,继续DNS解析过程,并且丢弃后续到达的所有应答数据包。这就使得攻击者可以仿冒权威DNS服务器向缓存DNS服务器发送伪造应答包,力争抢先完成应答以污染DNS缓存。若攻击者发送的伪造应答包在权威名字服务器发送的正确应答包之前到达缓存DNS服务器,并与原查询包IP地址、端口、ID相匹配,就能够成功污染DNS缓存。
下面我们来看看几种投毒类型:
1、通过随机响应包造成投毒的“生日攻击”
在 2008 年之前,所有DNS请求包都使用固定源端口53发送解析请求。因此,除了ID之外,欺骗DNS回复所需的所有信息都是有限的。用这种弱点攻击 DNS 被称为“生日悖论”,平均需要256次来猜测ID。为了使攻击成功,伪造的DNS回复必须在合法权威DNS服务器响应之前到达缓存DNS服务器。如果伪造响应首先到达,它将由缓存DNS缓存,并且直到其生存时间(TTL)到期,递归DNS不会向权威DNS请求解析相同的域名。
2、Kaminsky缓存投毒
2008年,在Black Hat上有人公布了一种新型缓存投毒的原理。其中基本的随机猜测技术不变。该攻击利用了 DNS 响应包的AUTHORITY SECTION字段,因为 DNS 响应可以是直接应答(请求的直接IP地址)或引用(对给定区域具有权威性的服务器)。基本思想是攻击者选择他们希望攻击的域,然后向目标解析器查询尚未被解析器缓存的子域(查询不存在的子域是一个很好的选择,因为不存在的子域记录是没有被DNS服务器缓存的)。由于子域不在缓存中,因此DNS递归服务器向该域的权威服务器发送查询。正是在这一点上,攻击者用大量伪造的响应来淹没正常应答,每个伪造的响应都有不同的伪造ID号。如果攻击者成功注入伪造响应,则递归DNS服务器将为权威服务器缓存错误的IP。对受感染域的递归DNS服务器的未来 DNS 查询将导致所有请求被转发到攻击者控制器权威解析器,使攻击者能够提供恶意响应,而无需为每个新 DNS 记录注入假条目。

DNS缓存投毒应对方法
_

        防止DNS缓存投毒的最佳方法是实施加密和身份验证的安全方法DNSSEC。作为整个互联网的骨干和基石协议,DNS目前最常用的实施方式,是未加密的明文传输的方式。DNSSEC是一种较好的对DNS进行身份验证的方法,DNS服务器对DNS解析器的应答,采用DNSSEC的签名方式。然后DNS解析器使用签名来验证DNS响应,确保记录未被篡改。此外,它还提供从TLD到域权威区域的信任链,确保整个DNS解析过程是安全的。
        尽管有这些明显的好处,但DNSSEC的采用速度很慢。主要问题是DNSSEC设置很复杂,需要升级设备和系统、以及相应的服务,才能处理新协议。此外,由于DNS缓存投毒等攻击形式并没有得到相应的重视。DNSSEC也没有被提高到较高的优先级上进行实施。
        阿里云DNS致力于保障用户域名解析的安全性,我们非常重视用户的安全和隐私性保护。给大家透露一下,阿里云DNS对DNSSEC的支持已经在紧张的研发中了。待DNSSEC功能上线后,阿里云将更好的保护您的DNS服务器,助您有效应对缓存投毒攻击。

了解阿里DNS,请戳链接:https://www.aliyun.com/product/dns

相关文章
|
12天前
|
存储 缓存 安全
第二章 HTTP请求方法、状态码详解与缓存机制解析
第二章 HTTP请求方法、状态码详解与缓存机制解析
|
13天前
|
缓存 NoSQL Redis
Python缓存技术(Memcached、Redis)面试题解析
【4月更文挑战第18天】本文探讨了Python面试中关于Memcached和Redis的常见问题,包括两者的基础概念、特性对比、客户端使用、缓存策略及应用场景。同时,文章指出了易错点,如数据不一致和缓存淘汰策略,并提供了实战代码示例,帮助读者掌握这两款内存键值存储系统的使用和优化技巧。通过理解其核心特性和避免常见错误,可以提升在面试中的表现。
33 2
|
13天前
|
存储 缓存 NoSQL
优质推荐 | 企业级缓存技术解析,你必须知道的“9“大技术问题与常见误区
优质推荐 | 企业级缓存技术解析,你必须知道的“9“大技术问题与常见误区
54 0
|
7天前
|
缓存 网络协议 安全
什么是DNS缓存投毒攻击,有什么防护措施
DNS缓存投毒攻击,也称为域名系统投毒或缓存投毒,是一种网络安全威胁,其中攻击者通过向DNS服务器发送伪造的DNS响应,使DNS服务器错误地缓存这些响应。当受害者尝试解析某个域名时,DNS服务器会返回这些伪造的响应,从而将受害者重定向到攻击者控制的恶意网站或服务器。
|
7天前
|
域名解析 存储 缓存
【域名解析DNS专栏】DNS缓存机制详解:如何提升域名解析速度
【5月更文挑战第21天】本文探讨了DNS缓存机制的原理及优化方法。DNS缓存是存储已解析域名与IP地址的临时数据库,能减少网络延迟,减轻服务器负担并提升用户体验。优化策略包括增加缓存容量,设置合理过期时间,使用智能DNS服务及定期清理缓存。文中还提供了一个Python示例,展示如何通过缓存提升域名解析速度。
【域名解析DNS专栏】DNS缓存机制详解:如何提升域名解析速度
|
12天前
|
缓存 算法 Java
数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,万字解析
数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,万字解析
|
12天前
|
缓存 算法 前端开发
前端开发者必知的缓存淘汰策略:LRU算法解析与实践
前端开发者必知的缓存淘汰策略:LRU算法解析与实践
|
13天前
|
缓存 NoSQL 关系型数据库
【Redis】Redis 缓存重点解析
【Redis】Redis 缓存重点解析
29 0
|
13天前
|
缓存 NoSQL Redis
深度解析Redis的缓存双写一致性
【4月更文挑战第20天】
51 1
|
13天前
|
缓存 NoSQL Redis
Redis缓存名词解析
Redis缓存名词解析
22 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多