确认是否真的发生了DNS劫持
在采取行动之前,首先要确认问题的根源,DNS劫持通常表现为以下几种情况:

(图片来源网络,侵删)
- 特定地区/运营商劫持:只有某个特定地区或使用某个运营商(如电信、联通、移动)的用户才会被重定向到恶意网站,而使用其他网络(如手机4G/5G)或VPN的用户访问正常。
- 特定浏览器劫持:只在某个或某几个浏览器上出现问题,其他浏览器正常。
- 持续重定向:即使你清除了浏览器缓存、Cookie,甚至重置了网络设置,问题依然存在。
如何验证?
- 使用在线DNS查询工具:访问
https://dnschecker.org/或https://www.whatsmydns.net/,输入你的域名,如果全球大部分地区的DNS服务器都返回了错误的IP地址,那很可能是你的DNS记录被篡改了,如果只有部分地区返回错误,那很可能是本地网络运营商的DNS劫持。 - 使用命令行工具:
- Windows: 打开命令提示符,输入
nslookup 你的域名,查看返回的IP地址是否正确。 - macOS/Linux: 打开终端,输入
dig 你的域名或nslookup 你的域名,查看返回的IP地址。
- Windows: 打开命令提示符,输入
- 使用VPN:连接一个不同地区的VPN,再次访问网站,如果恢复正常,则基本可以锁定是本地网络运营商的问题。
第二步:立即采取的应急措施
确认是DNS劫持后,需要立即行动,将损失降到最低。
情况A:如果你是网站所有者/管理员
这是最严重的情况,你需要立即夺回控制权。
-
立即更改DNS账户密码:
(图片来源网络,侵删)- 登录你的DNS服务商(如阿里云、腾讯云、Cloudflare、GoDaddy等)的管理后台。
- 立刻修改账户密码,并确保新密码足够复杂(大小写字母、数字、符号组合)。
- 开启双因素认证(2FA/MFA),这是防止账户被盗的关键。
-
修改域名的NS记录:
- 如果怀疑DNS服务商的账户不安全,立即将域名的NS记录(域名服务器记录)修改到你信任的另一个DNS服务商,如果你之前用的是自带的DNS,可以立即修改到Cloudflare或DNSPod等。
- 注意:修改NS记录后,全球DNS缓存更新需要时间(通常几分钟到48小时),在此期间网站可能会出现间歇性不可用。
-
修改域名的A记录和CNAME记录:
- 在新的DNS服务商或当前服务商处,立即修改你的A记录(指向服务器IP)和CNAME记录(指向子域名),确保它们指向正确的服务器IP地址。
-
检查并清除所有恶意记录:
仔细检查DNS管理后台,删除任何你不认识的、非你设置的记录,特别是CNAME记录,它们常被用来进行中间人攻击。
(图片来源网络,侵删) -
检查服务器安全:
- 重要! DNS劫持有时是服务器被入侵的结果,黑客可能在你服务器上植入恶意脚本,即使你修复了DNS,他们也能重定向流量。
- 检查服务器文件:检查网站根目录下的
.htaccess(Apache/Nginx) 文件,看是否有恶意的重定向规则。 - 检查Web服务器配置:检查Nginx或Apache的配置文件,确保没有恶意重定向。
- 进行安全扫描:使用安全工具(如ClamAV)对服务器文件进行病毒扫描。
- 更新所有软件:确保你的操作系统、Web服务器(Nginx/Apache)、数据库(MySQL/PostgreSQL)、网站程序(WordPress等)和所有插件都已更新到最新版本,修复已知漏洞。
-
通知用户和搜索引擎:
- 在网站首页发布醒目公告,告知用户网站曾遭遇安全攻击,请用户清除浏览器缓存或通过官方渠道访问。
- 向Google、百度等搜索引擎提交重新审核请求,告知他们网站安全问题已解决,请求清除对网站的警告。
情况B:如果你是普通网站访问者
你无法修复服务器端的问题,但可以保护自己。
- 不要在该网站输入任何敏感信息:如密码、银行卡号、身份证号等,你访问的很可能是一个高仿的钓鱼网站。
- 通过其他方式联系网站管理员:通过其官方社交媒体、客服电话等已知可靠的方式,告知他们网站可能被劫持了。
- 使用可靠的DNS服务器:
- 临时方案:在电脑或路由器上手动设置DNS服务器,使用公共可靠的DNS,
- Google Public DNS:
8.8.8和8.4.4 - Cloudflare DNS:
1.1.1和0.0.1 - 阿里云DNS:
5.5.5和6.6.6
- Google Public DNS:
- 长期方案:考虑将家庭路由器的DNS服务器设置为上述公共DNS,这样所有连接该路由器的设备都会受到保护。
- 临时方案:在电脑或路由器上手动设置DNS服务器,使用公共可靠的DNS,
- 清除浏览器缓存和Cookie:有时恶意脚本会留在本地缓存中,清除它们可以解决问题。
第三步:长期预防措施
为了防止未来再次发生,建议采取以下预防措施:
-
使用DNSSEC(DNS Security Extensions):
- 这是最有效的DNS安全防护技术,它通过数字签名来验证DNS响应的真实性,可以有效防止DNS缓存投毒和劫持。
- 大多数主流DNS服务商都支持DNSSEC,登录你的DNS管理后台,为你的域名启用它即可。
-
选择信誉良好、安全性高的DNS服务商:
像Cloudflare、阿里云、腾讯云等大型服务商通常有更强大的安全防护能力和更严格的账户安全策略。
-
启用双因素认证(2FA/MFA):
为所有与网站相关的账户,特别是DNS服务商、主机商、域名注册商的账户,都启用双因素认证,这是防止账户被盗的最后一道,也是最有效的一道防线。
-
保持软件更新:
定期更新你的网站程序、插件、服务器软件,及时修复安全漏洞。
-
定期监控DNS记录:
定期登录DNS管理后台,检查所有记录是否正常,也可以使用在线监控工具,一旦DNS记录被异常修改,立即收到警报。
-
使用HTTPS(SSL/TLS证书):
- 虽然HTTPS不能直接防止DNS劫持,但它可以确保用户在被重定向到错误网站后,浏览器地址栏会显示“不安全”警告,提醒用户不要输入信息,它也能防止在数据传输过程中被窃听。
快速行动清单
| 角色 | 立即行动 | 长期预防 |
|---|---|---|
| 网站管理员 | 修改DNS账户密码,开启2FA。 修改A/CNAME记录到正确IP。 检查并删除所有恶意记录。 检查服务器 .htaccess 和配置文件。通知搜索引擎和用户。 |
启用DNSSEC。 使用高安全性DNS服务商。 保持所有软件更新。 定期监控DNS记录。 |
| 普通用户 | 停止输入任何敏感信息。 通过其他渠道通知网站方。 临时使用公共DNS(如1.1.1.1)。 |
家庭路由器设置为公共DNS。 保持浏览器和系统更新。 |
希望这份详细的指南能帮助你成功解决DNS劫持问题!
