一、DNS的解析过程
1.递归解析
递归解析是一种由DNS客户端(通常是用户的应用程序,如一个浏览器)向本地DNS解析器发出解析请求,然后本地DNS解析器负责查询最终结果并将结果返回给客户端,而中间的所有查询请求都由本地DNS解析器代替客户端完成。参考上图的整个流程
2.迭代解析
迭代解析是一种由DNS客户端逐步请求各级DNS服务器,并通过每级回应获得下级服务器地址,直到获得最终的IP地址。与递归解析不同,迭代解析的每一级查询都是由客户端发出,不依赖本地DNS解析器进行递归查询。上图中的本地DNS服务器进行的就是迭代解析,如果终端使用迭代解析,就可以不需要本地dns服务器。
二、DNS安全技术
1.DNSSEC
DNSSEC(Domain Name System Security Extensions,即域名系统安全扩展)是一组协议,为DNS提供源身份验证和数据完整性。其主要目的是通过使用数字签名,防止数据在DNS传输过程中被篡改或伪造,从而增强DNS的安全性。
2.DoH
DNS over HTTPS (DoH) 是一种将DNS查询通过HTTPS协议发送的技术。这种方法使用HTTPS的加密和认证特性来保护DNS查询和响应。
3.DoT
与DoH类似,DoT与DoH的差别在于,DoT把DNS的Payload直接放在在TLS协议的上层。
4.HttpDNS
HttpDNS实际上不能算DNS,它提供了一种非标准的域名解析方式。初略看,与DoH有很大的相似性,但是实际上,这两种技术的设计目的差别很大。DoH,是一个通用服务,用于增强DNS本身的安全性。HTTPDNS是一个非标准的服务,通常只解析业务需要用到的几个域名。通常用于手机App、桌面客户端、嵌入式设备等场景。
三、常见的DNS威胁
1.DNS 缓存污染
DNS缓存广泛存在于全球各地开放的DNS服务器中,DNS缓存的的设计有两个目的:
- 加速DNS查询的响应时间
- 减少DNS查询请求对DNS服务器的压力
当用户对某个域名发起解析请求时,DNS服务器首先会在自身DNS缓存中查看是否有对应的结果,如果命中结果,会直接告知客户端,无需进行全球解析查询。但是DNS协议在设计时,没有相关的记录完整性认证机制,如果攻击者篡改了上游DNS服务器的结果,那么最终会把错误的结果缓存起来。
缓解及防御措施:DNSSEC。
使用DNSSEC可以有效防止DNS缓存被污染,但是,实际上DNSSEC性价比非常低。因为现阶段,https已经是主流,如果DNS解析结果不对,最终能够在https握手阶段能够被检测出来。现在大部分DNS服务的运营商都支持DNSSEC,但是实际使用DNSSEC的域名却很少。
2.DDoS攻击
DDoS攻击通过向DNS服务器发送大量请求,耗尽资源使服务器无法响应合法请求。通常只能部署DDoS防护系统,限制同时连接数及流量来解决。
3.随机非存在域名攻击
通过递归服务器查询合法域名的随机子域名来进行攻击。本质上是一种缓存穿透攻击,因为请求的域名不存在,递归服务器最终会把解析请求发送到权威DNS服务。
- 对于权威DNS服务器,如果本身记录量比较少,可以考虑全缓存的方式,全部记录放入内存,如果记录量很大,可以使用布隆过滤器。
- 对于递归解析服务器,只能把这种情况当成DDos来处理
4.子域名劫持
子域名劫持涉及攻击者接管DNS提供商中配置错误的未使用子域名,从而用来托管恶意内容或者进行钓鱼攻击。举个例子:现在很多服务都是托管在云上面,如果一个子域名曾经使用过,并且对外提供了服务,在下线服务的时候没有移除相应的DNS记录,同一个云上的其他用户就有可能使用原服务相同的公网IP。此时,此用户就可以在此域名下搭建一些恶意功能,比如钓鱼、偷Cookies等。
域名所有者需要通过各种管理及技术的手段,保证服务下线时,域名解析也同时移除。
5.DNS劫持
DNS劫持是通过篡改DNS服务器配置或添加虚假DNS条目,将用户请求重定向到假冒网站或恶意服务器。随着Https的普及,这种攻击方式的危害性大大下降,如果做不到修改权威服务器上的解析,这种攻击的有效范围就很小。
- 加强对DNS服务器的访问控制和监控,防止配置篡改。
- 定期检查DNS配置和记录的完整性与准确性。
6.中间人攻击
中间人攻击通常用于劫持DNS通信,在DNS请求和响应之间插入,使攻击者能够读取、修改或注入虚假DNS数据。也有一些运营商,出于某种目的,会支持DNS流量,但是其提供的硬件资源不够,引起DNS解析异常缓慢甚至超时,严重影响用户体验。
- 使用加密协议(如DoT或DoT)确保DNS通信的安全性。
四、DNS客户端安全性增强方法
1.对于客户端软件供应商
- 使用加密协议,可以有效保护终端到本地DNS服务器之前的安全性。OpenDNS,Google DNS,Cloudflare等都有推荐加密DNS协议
- 使用HttpDNS。目前的云服务提供商都有提供HttpDNS服务,客户端软件中用到的域名可以通过HttpDNS来解析,以达到绕过传统DNS协议的目的,可以规避所有针对DNS协议的攻击。
2.对于客户端用户
- 使用加密协议,常用的浏览器Chrome ,Edge,Firefox等都支持设置安全DNS
- 本地搭建DNS代理,把DNS请求代理到DoH或DoT来进行解析,可以让不支持安全DNS的软件使用到安全DNS。企业内部也可以使用此方式提供统一的DNS服务。
给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图 。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
2️⃣视频配套资料&国内外网安书籍、文档
① 文档和书籍资料
② 黑客技术
因篇幅有限,仅展示部分资料
4️⃣网络安全面试题
5️⃣汇总
所有资料 ⚡️ ,朋友们如果有需要全套 《网络安全入门+进阶学习资源包 》,扫码获取~