DNS 劫持是在用户通过域名系统访问目标的时候劫持域名解析的回包,目标域名会被恶意地指向其他恶意 IP 地址,造成用户无法正常使用服务,甚至造成弹广告、挂马、搜集账号密码、DDoS等更加严重的危害。本文主要介绍了DNS劫持原理以及如何处理DNS劫持。
一、DNS劫持原理
DNS劫持最直接的手段是通过入侵 DNS 服务器,获取攻击目标域名的解析记录控制权,之后修改攻击目标域名的解析结果,等到 TTL 时间生效之后,所有对该域名的访问由原 IP 地址指向修改后的恶意 IP。DNS 劫持的后果就是对被修改域名记录的网址不能访问, 甚至访问到虚假网址,导致用户数据被盗、被挂马的严重危害。
通常的 DNS 查询没有强大的认证机制作为安全保证,而且 DNS 查询通常基于无连接 不可靠的 UDP 协议,因此 DNS 的查询非常容易被篡改,通过对 UDP 端口 53 上的 DNS 查 询进行侦听,一经发现与关键词相匹配的请求,则立即伪装成目标域名的解析服务器(NS, Name Server)给查询者返回虚假结果,从而实现窃取资料或者破坏原有正常服务的目的。 还有一种手段是黑客伪造权威 DNS 服务器的应答,对缓存 DNS 服务器进行污染。
二、如何处理DNS劫持
1.DNS劫持对策
DNS劫持往往是针对个人,分布在不同的运营商和不同的网络中。就个人而言,针对 DNS劫持,可以采用使用国外免费公用的 DNS服务器解决,例如 GoogleDNS(8.8.8.8); 针对 DNS 污染,可以使用 VPN 或者域名远程解析的方法解决,但这大多需要购买付费的 VPN 或 SSH 等,还可以通过修改本地 Host 文件的方法,手动设置域名正确的 IP 地址,但 这样会大大提高维护成本。
对于服务提供方,需要对 DNS 劫持进行持续的检测。大量的终端布点可以检测 DNS 劫持的情况,帮用户针对劫持向运营商投诉。同时,现在越来越多的互联网厂商开始使用 HTTPDNS 服务,能够从一定程度上缓解 DNS 劫持的影响。
HTTPDNS 基本原理如下图:
2.如何使用 HTTPDNS 服务
开通服务,在 HTTPDNS 服务提供商出注册账号,开通 HTTPDNS 服务。
控制台添加域名
在HTTPDNS提供商的服务台申请HTTPDNS服务,这可能涉及费用(一般的HTTPDNS 服务提供商会有一定的免费查询次数,如果超过了这个次数就需要额外的费用)。假设我们 通过控制台获得了 HTTPDNS 服务商提供的账号,就直接在控制台上提价所需要解析的域 名记录,一般几分钟之后会在 HTTPDNS 服务端生效。
使用 HTTPDNS 解析域名
使用 HTTPDNS 解析域名,可以使用类似下面的方式进行。http://httpdns-service.com? host=www.yourdomain.com,其中 http://httpdns-service.com 是 HTTPDNS 的提供方,www. yourdomain.com 是需要解析的域名。具体的 API 接口规范可参考 HTTPDNS 的服务提供商。
客户端集成 HTTPDNS
在通过 HTTPDNS 设置获得域名的 IP 地址后,客户端应用能够利用这个 IP 发起业务请求。
参考文献:《云原生应用架构实践》 网易云基础服务架构团队 著
https://sq.163yun.com/blog/article/221404388877201408