域名劫持这种情况, 指的是攻击者去篡改DNS解析, 或者是劫持网络路由, 又或者是修改注册局的信息, 总之就是把用户从你的域名那里给弄走, 然后送到恶意的服务器那边上去, 这种行为就叫域名劫持, 它的主要形式有三类, 第一类是DNS解析被篡改了, 第二类是CDN还有路由层的地方发生劫持, 第三类就是域名的注册信息被篡改了哦, 防护的核心原则呢只有一条, 就是要让攻击者改不动、改不了, 而且改了之后马上就暴露出来。

下面的这四种层级的防护体系, 是依照优先级别来排好顺序的, 它们覆盖的范围是从日常的安全加固工作一直到那种紧急情况的处置流程这样一个完整的链条环节。

一、需要对DNS这一层进行加固处理, 这属于最高优先级的事情。

1. 注册商管理的账号会强制性地启用那个两步验证, 也就是你提到的2FA这个过程, 并且它是禁止那种仅仅凭借着密码就能登录后台系统的做法的。

2. 在DNS管理面板中开启完整操作日志, 记录每一次A记录、CNAME、NS、MX的增删改, 日志保留不少于90天, 且禁止普通管理员删除日志。

3. 对NS记录实施修改锁定, 只允许指定的授权人员进行更改, 任何变更都必须经过二次审批。

以m.dcqzss.cn这个域名为例子来说, 如果该域名的解析服务托管在第三方的DNS服务商那里, 管理员需要在服务商的后端管理界面绑定固定的IP地址白名单设置起来, 确保只有那些位于白名单之内的地址才具备执行解析变更操作的权限, 这样做的目的就从网络层面彻底杜绝了远程篡改的可能性出现。

4. 先启用DNSSEC, 这个是域名安全扩展的缩写。接着会给域名解析出来的结果加上数字签名。然后在用户端进行递归解析的时候要验证这个签名对不对。一旦发现签名和记录对不上就必须拒绝返回对应的解析记录。这样做的话就能从根本上去让那些被伪造出去的解析记录完全没法起作用。

二、关于传输层这一块, 以及说CDN方面进行的防护工作。

1. 全站强制启用HTTPS协议, 同时在响应头中设置HSTS策略, 其中包含参数$max-age=31536000$以及子域名生效标志。通过这样的配置, 浏览器在接下来的一年以内会拒绝所有的明文HTTP连接请求, 从而达到压缩中间人攻击窗口期的效果。

2. 在证书期限即将结束的三十天数天内, 系统会发出自动预警信息, 这一操作是为了防止因证书过期而导致攻击者有机会植入假冒证书的情况发生。

3. 去核查那个cdn以及反向代理节点的访问控制策略,确认不存在未授权的节点绑定你的域名或者进行转发操作, 以此防止边缘节点被利用去做流量劫持。

三、应急响应, 就是在确认之后遭遇了劫持这种情况, 那么就要按照规定的先后次序来依次执行。

域名被劫持怎么办?DNS加固与应急响应全流程指南(图1)

1. 请立即联系域名注册商进行操作, 把域名的注册状态锁定为clientHold, 也就是Lock, 以此来阻止注册信息出现二次篡改的情况。

2. 先要把NS解析给切换掉, 让它转到那个备用的权威DNS服务器上去。这样一来就能把用户的流量重新导回到正确的IP地址去。这时候最重要的是要把止血这件事放在优先的位置去做。

3. 通知 CDN 服务商执行全量刷新缓存的操作, 把那些已经被污染的边缘节点上的记录全部清除掉。

4. 我们要去回溯一下那个入侵的具体的路径, 这一步要调取注册商的后台的登录日志, 还要调取DNS的管理面板的操作记录, 另外还要调取服务器的访问日志, 然后通过这些信息来定位攻击者的IP地址, 以及他们使用的手法还有事情发生的时间线。

5. 进行全局排查, 把所有关联账号的密码全都修改一遍, 同时要去检查在同一个主体下面出现的其他域名里, 有没有存在同类攻击留下的痕迹。

四、我们进行持续性的监测工作, 同时还开展日常巡检活动。

1. 这个每日自动化巡检的功能, 是去使用那个独立的网络出口去进行操作的, 比如说可以用4G蜂窝热点这种方式, 然后它会去向那些权威的DNS服务器去查询域名的解析结果是怎么样的, 再把得到的结果和那个基准IP库来进行一个比对的操作, 只要发现两者之间有了偏差, 系统就会立即触发告警。

2. 进行WHOIS变更监控的操作方法是, 通过注册局提供的开放接口对WHOIS记录实行轮询方式查询, 如果发现有任何字段发生变动情况, 包括Registrant字段、Tech字段以及NS字段当中的任意一个出现变化时候, 就会自动执行推送通知这个动作。

3. 执行多节点的拨测任务。这一任务覆盖的范围包括国内的三大运营商。同时, 也覆盖了海外的主流互联网服务提供商。检测的频率设定为每15分钟进行一次。在每次检测中, 会重点检测网络路由是否发生跳变。此外, 还会检测是否存在延迟异常的情况。

4. 把全部的监测数据都接入到统一的安全运营平台里去, 同时还要和安全信息事件管理系统形成联动关系, 这样一来就能够实现从发现问题开始, 接着准确找到问题所在的具体位置, 然后迅速采取行动进行处理, 最后再回过头来认真总结经验教训这样一个完整的闭合循环过程。

域名劫持防护这个事儿, 它的本质意思啊, 并不是说等出了那种乱七八糟的问题了, 你再去想着怎么修理它, 而是要让那个问题根本就没有可能去冒头的机会。

你要是能把上面提到过的哪四层防线, 真正地把它给变成一种制度, 然后让它能够落到自动化的脚本里去执行, 并且把这个事情非常明确地指派到具体的某个人身上作为责任人的话, 这样才能达到一种效果, 就是把风险暴露出来的那段时间窗口, 给它压缩到最小的程度。