DNS缓存污染(投毒)
们在之前上网冲浪时偶然会遇到这种情况: 访问某个之前浏览过的网站时,但网站所展示的并非我们之前看到过的样子,不能说完全不同,只能说毫不相干。那么,它的dns缓存有可能就是污染了。
DNS缓存污染具体是什么
它其实是一种网络攻击,攻击者会篡改递归DNS服务器中的DNS缓存,使得用户访问的域名被解析到错误的IP地址,返回恶意的域名解析结果,从而导致用户被重定向到攻击者控制的恶意网站。这种攻击会破坏DNS系统的完整性,使得用户无法正常访问其所期望的网站。
正常流程:客户端发送请求到暂存缓存服务器,找不到向dns服务器发送查询,找到后,存到缓存服务器,缓存服务器再向客户端返回结果,客户端进入正常网
被污染的后流程:客户端发送请求到暂存缓存服务器,找不到向dns服务器发送查询 1.攻击者抢先发送大量伪造的dns reply报文给缓存服务器,抢先命中(Query ID)并置入缓存,缓存服务器向客户端返回错误结果,客户端进入恶意网页 2.攻击者窃取合法域名的响应,然后修改并发送伪造的响应,将其缓存在递归DNS服务器中
如何防范?
DNSSEC是一种安全扩展机制,通过数字签名验证域名解析结果的真实性,可以防止DNS缓存污染(投毒)攻击。域名拥有者使用私钥对DNS记录进行签名,而递归DNS服务器使用公钥验证签名的有效性。提供对域名解析的完整性和认证。
在以上流程图中,根域名(Root)拥有根DNSSEC密钥(KSK),顶级域名(Top-Level Domain)拥有自己的DNSSEC密钥(KSK),而域名A(Domain A)拥有专属的DNSSEC密钥(ZSK)。每个密钥都用于对相应的域名资源记录(Resource Records)进行签名,确保其完整性和真实性。
通过使用数字签名和链式信任的方式,DNSSEC提供了一种可靠的方法来验证域名解析结果的有效性,从而大大增强了DNS的安全性。 消息的数字签名和验证流程: