目录
简介
DNS,域名系统,是一个分层和分布式系统,通过指定来分配域名并将这些名称映射到互联网资源。
DNS解析过程
- 应用程序请求解析域名,如果在本地DNS缓存中存在且未过期,直接返回。
- 如果不存在,请求本地DNS服务器(网络属性手动设置或自动获取),往往是ISP或公共的DNS服务器。
- 如果不存在,请求权威DNS服务器(网站自建或租用公共的),乃至顶级DNS服务器(通用顶级域名和国家顶级域名)。
- 如果不存在,请求根DNS服务器(逻辑上13组)。
常见资源记录类型
A:主机记录,将域名映射到对应的IPv4地址。
AAAA:IPv6主机记录,将域名映射到对应的IPv6地址。
CNAME:别名,请求到时继续解析别名。
NS:域名服务器记录,委托DNS区域(DNS zone)使用已提供的权威域名服务器。
TXT:文本记录,比如通过设置一些值,用来证明你是域名所有者。
MX:引导域名到该域名的邮件服务器列表。
主要传输协议
DNS-over-UDP/53 (“Do53”)
在 UDP 端口 53 上接受查询请求。此类查询包括从客户端以单个 UDP 数据包发送的明文请求,响应为 从服务器以单个 UDP 数据包发送的明文回复。
当应答的长度超过 512 字节并且客户端和服务器都支持 DNS 扩展机制 (EDNS) 时,可能会使用更大的 UDP 数据包。
DNS-over-UDP 的使用受到限制,其中包括缺乏传输层加密、身份验证、可靠传递和消息长度。
DNS-over-TCP/53 (“Do53/TCP”)
为 DNS 查询、回复,特别是区域传输指定了可选的 TCP 传输。 通过长响应的分段,TCP 允许更长的响应、可靠的传递和重用客户端和服务器之间的长期连接。
加密传输方式
DNS over HTTPS
DNS over TLS
DNS over QUIC
DNSCrypt
DNS缓存投毒与DNS污染
简介
简而言之,就是攻击者在网路上看到DNS解析请求,抢先返回一个假的DNS响应。
DNS劫持是一类旁观者攻击,攻击者借由其在网络拓扑中的特殊位置,发送比真实的DNS回应更早到达攻击目标的伪造DNS回应。 一部连上了互联网的电脑一般都会使用互联网服务提供商提供的递归DNS服务器,这个服务器通常都会将部分客户曾经请求过的域名暂存起来。缓存污染攻击就是针对这一特性,影响服务器的用户或下游服务。
旁观者攻击与中间人攻击中攻击者拥有对网络节点的完全控制权不同,攻击者在通信的“旁路”,只拥有对通信信道的普通访问权限,他能够读取网络流量并往其中注入新的信息,但不能修改或删除其它参与者发送的信息。这种攻击方式需要时间优势——攻击者必须处在网络中的特殊位置(例如互联网骨干网)。攻击者依赖于时间优势,确保受害者在收到合法的回应之前收到由他发送的伪造回应。
例子
互联网服务提供商(ISP)劫持域名不存在时返回的NXDOMAIN记录(Non-existent domain)返回自己服务器的IP,从而跳转至自己的服务器上显示广告等内容。
诈骗网站域名解析到“国家反诈中心app”的推广页面。
应对
DNSSEC域名系统安全扩展。
对DNS提供给DNS客户端(解析器)的DNS数据来源进行认证,并验证不存在性和校验数据完整性验证,但不提供机密性和可用性。
将UDP返回的数据使用非对称加密算法签名,公钥通过信任链检验,就是从上一级DNS服务获取,直到根签名仪式确定的根的公钥。
加密传输。
DNS泄露
DNS 泄漏是一种安全威胁,当 DNS 请求未通过安全的 VPN 隧道发送时会发生,允许 ISP 看到正在访问的网站和在线服务,即身份被泄露。
参考资料
维基百科
cloudflare网站