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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:         在《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

相关文章
|
1月前
|
域名解析 网络协议 安全
什么是DNS劫持攻击以及如何避免此类攻击
【10月更文挑战第28天】DNS劫持攻击是一种网络攻击方式,攻击者通过篡改用户的DNS设置,将合法网站的域名解析为恶意网站的IP地址,使用户在不知情的情况下访问钓鱼网站。攻击手段包括在用户系统植入恶意软件、利用路由器漏洞或破解DNS通信等。为防止此类攻击,应使用安全软件、定期检查DNS设置、重置路由器密码及避免访问不安全的网站。
167 1
|
21天前
|
存储 缓存 监控
后端开发中的缓存机制:深度解析与最佳实践####
本文深入探讨了后端开发中不可或缺的一环——缓存机制,旨在为读者提供一份详尽的指南,涵盖缓存的基本原理、常见类型(如内存缓存、磁盘缓存、分布式缓存等)、主流技术选型(Redis、Memcached、Ehcache等),以及在实际项目中如何根据业务需求设计并实施高效的缓存策略。不同于常规摘要的概述性质,本摘要直接点明文章将围绕“深度解析”与“最佳实践”两大核心展开,既适合初学者构建基础认知框架,也为有经验的开发者提供优化建议与实战技巧。 ####
|
1月前
|
存储 缓存 网络协议
如何防止DNS缓存中毒攻击(一)
DNS缓存中毒也称为DNS欺骗
50 10
|
1月前
|
缓存 网络协议 安全
如何防止DNS缓存中毒(Ⅱ)
服务器应该配置为尽可能少地依赖与其他DNS服务器的信任关系
43 10
|
1月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
93 4
|
1月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
73 2
|
1月前
|
缓存 网络协议 安全
如何防止DNS缓存中毒(Ⅱ)
防止DNS缓存中毒的方法包括:减少DNS服务器与其它服务器的信任关系;限制DNS服务器上的服务;使用最新版DNS;加强用户安全教育,如识别可疑网站,仅访问HTTPS网站等。部署SSL证书并选择符合国际Webtrust标准的CA机构,可进一步提高安全性。
45 1
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
71 2
|
2月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
76 0
|
2月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
62 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
    下一篇
    DataWorks