前不久小米等六家互联网公司发表联合声明,呼吁运营商打击流量劫持。流量劫持最直观的表现,就是网页上被插入了一些乱七八糟的广告/弹窗之类的内容。比如这样:

网页右下角被插入了游戏的广告。

流量劫持总体来说属于中间人攻击(Man-in-the-Middle Attack,MITM)的一种,本质上攻击者在通信两端之间对通信内容进行嗅探和篡改,以达到插入数据和获取关键信息的目的。目前互联网上发生的流量劫持基本是两种手段来实现的:

域名劫持:通过劫持掉域名的 DNS 解析结果,将 HTTP 请求劫持到特定 IP 上,使得客户端和攻击者的服务器建立 TCP 连接,而非和目标服务器直接连接,这样攻击者就可以对内容进行窃取或篡改。在极端的情况下甚至攻击者可能伪造目标网站页面进行钓鱼攻击。
直接流量修改:在数据通路上对页面进行固定的内容插入,比如广告弹窗等。在这种情况下,虽然客户端和服务器是直接建立的连接,但是数据内容依然可能遭到野蛮破坏。
IIS7网站监控可以做到提前预防各类网站劫持、并且是免费在线查询、适用于各大站长、政府网站、学校、公司、医院等网站。他可以做到24小时定时监控、同时它可以让你知道网站是否被黑、被入侵、被改标题、被挂黑链、被劫持、被墙及DNS是否被污染等等功能、更是拥有独家检测网站真实的完全打开时间、让你作为站长能清楚的知道自己网站的健康情况!
官方图

官方地址:IIS7网站监控
能够实施流量劫持的根本原因,是 HTTP 协议无法对通信对方的身份进行校验以及对数据完整性进行校验。如果能解决这个问题,则流量劫持将无法轻易发生。

关于流量劫持的更多危害案例,可以参考:如何看待小米等联合声明:呼吁运营商严格打击流量劫持?( https://www.zhihu.com/question/38861118 )
HTTPS 如何防止劫持

HTTPS,是 HTTP over SSL 的意思,提到 HTTPS 就不得不先简单描述一下 SSL/TLS 协议。SSL 协议是 Netscape 在 1995 年首次提出的用于解决传输层安全问题的网络协议,其核心是基于公钥密码学理论实现了对服务器身份认证、数据的私密性保护以及对数据完整性的校验等功能。1999 年 IETF 将 SSL 3.0 标准化,是为 TLS 1.0 版本,目前 TLS 协议的最新版本是 1.2 版本,TLS 1.3 标准正在制定中。为了方便,下文将 SSL/TLS 协议都简称为 SSL 协议。

SSL 协议在 HTTP 请求开始之前增加了握手的阶段,其粗略流程如下图所示:

在 SSL 握手阶段,客户端浏览器会认证服务器的身份,这是通过“证书”来实现的,证书由证书权威(CA)为某个域名签发,可以理解为网站的身份证件,客户端需要对这个证件进行认证,需要确定该证书是否属于目标网站并确认证书本身是否有效。最后在握手阶段,通信的双方还会协商出一个用于加密和解密的会话密钥。
SSL 握手阶段结束之后,服务器和客户端使用协商出的会话密钥对交互的数据进行加密/解密操作,对于 HTTP 协议来说,就是将 HTTP 请求和应答经过加密之后再发送到网络上。

由此可见,因为 SSL 协议提供了对服务器的身份认证,所以 DNS 劫持导致连接错误服务器的情况将会被发现进而终止连接,最终导致 DNS 挟持攻击无法实现。此外 SSL 协议还提供数据的加密和完整性校验,这就解决了关键信息被嗅探以及数据内容被修改的可能。
如何部署 HTTPS
要将网站进行 HTTPS 支持以达到防劫持的效果,首先需要的是为网站的域名搞一张证书。这个证书必须是由知名 CA 所签发的,这是因为知名 CA 的根证书广泛的存在于大多数浏览器和操作系统中,因此可以被客户端用来校验网站证书是否合法。

传统 CA 的证书签发流程大体相同,基本上都是根据证书认证的级别,进行一系列不同流程的认证,然后认证通过后申请者缴纳相应的费用就可以或得到证书。这个流程相对比较繁琐,尤其是对于个人和小型网站管理者来说搞起来也确实麻烦。这里推荐一种新型的方法——使用 Let’s Encrypt 的自动化服务获取免费的证书。

使用 Let’s Encrypt 的自动化服务获取免费的证书

Let’s Encrypt 项目是由 ISRG 提供的免费 CA 服务,其主要目的是减少证书获取的难度,将证书的签发/续签/作废等操作进行自动化处理。Let’s Encrypt 的使用方法非常简单,按照文档中步骤操作即可。如需进一步了解如何使用 Let’s Encrypt 自动获取免费证书,可以参考:用 Let’s Encrypt 获取免费证书 (
https://www.paulyang.cn/blog/archives/39?spm=5176.blog2666.yqblogcon1.11.i02BAh )

在获得到证书(以及对应的私钥)之后,主要有如下几种方法来使用:

直接在 Web 服务器上部署证书和私钥,相关 apache 或 nginx 都有大量的文档说明,在此就不赘述了。

在服务器集群的接入层/反向代理处部署证书和私钥,例如阿里云的 CDN, SLB 和高防 IP 等产品均提供 HTTPS 支持,可以直接上传证书和私钥就可以实现网站的 HTTPS 改造。
阿里云的 HTTPS 支持
阿里巴巴在 2015 年的双 11 期间,成功的使用了全站范围(包括淘宝、天猫等核心电商域名)的 HTTPS 为广大买家提供安全的购物体验,这种体量的 HTTPS 服务在业界也极为少见。阿里云在进行电商业务的 HTTPS 改造时,在密码学、SSL/TLS 协议以及 PKI 体系等领域进行了一系列的优化和创新,并在此过程中积累了大量宝贵的经验。

阿里云做为底层基础设施的提供者,在阿里全站 HTTPS 化的过程中提供了大量的技术支撑,阿里云的 CDN 和 SLB 等产品在 HTTPS 的加速以及卸载等环节发挥了重要的作用。因此希望能将在淘宝/天猫业务上积累的 HTTPS 领域的经验和成果,借助阿里云的平台,让更多人来使用,籍此希望跟多的互联网流量能够 HTTPS 化,让流量劫持再无可能。

如何使用HTTPS防止dns劫持、https如何防止dns劫持相关推荐

  1. 如何快速的自建 DoH ( DNS over HTTPS) 服务

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 1. 前言 DoH(DNS over HTTPS),顾名思义,使用HTTPS协议执行DNS查询,除了最常用的UDP ...

  2. DNS over HTTPs分析和威胁检测

    DNS over HTTPs分析和威胁检测 DNS over HTTPs分析和威胁检测 概述 特性 应用实现 公共DNS支持 利用DNS over HTTPS的恶意软件及活动 检测方法 情报收集和提取 ...

  3. 如何劫持https的请求

      突然被问到https网站就一定是安全的吗?如果想要对其发起攻击,有可能吗?   我当时想到跨域了,然后就说不一定是安全的,如果不对跨域做出限制的话,还有两种方法可以实现.更改端口号和域名.因为不对 ...

  4. 4种DNS安全协议对比:DNSSEC,DNSCrypt,DNS over TLS,DNS over HTTPS

    DNS域名系统(Domain Name System的缩写),是一个将域名和IP地址相互映射的分布式数据库,能够使人通过便于记忆的域名地址访问互联网,而无需记住长串毫无关联性的IP地址.DNS可以理解 ...

  5. 如何为Win10开启DoH(DNS over HTTPS)

    Win11 Win11已原生支持DoH,参考这篇:启用Win11原生支持的DoH(DNS over HTTPS) 本文Win10的使用cloudflared实现,其他的工具比如smartdns也可以, ...

  6. 启用Win11原生支持的DoH(DNS over HTTPS)和配置自定义的DoH服务

    更新 22.1.23:发现有的dns配置没有首选的dns加密,好像是用无线的时候就会没有,不影响,看情况2就行 为了方便,直接给出一些模板(国内可用的) netsh dns add encryptio ...

  7. 微软不再为 DNS over HTTPS (DoH) 提供 Google PublicDNS 和 Cloudflare DNS 服务提供商

    如果你尝试在 Microsoft Edge 浏览器设置中自行选择 DNS 服务提供商,那么现在微软不再为 DNS over HTTPS (DoH) 提供 Google PublicDNS 和 Clou ...

  8. dns type65 https rr

    dns type65 https rr 前言 尝试 复现 前言 同事发来了一段流量,之前接触的dns流量都为A记录 :NS记录: MX记录 :CNAME记录 :TXT记录 :TTL值 :PTR值,但是 ...

  9. 应用层(DNS/HTTP/HTTPS)攻击与防御原理

    网络层攻击:TCP.UDP类攻击 网络层攻击可参考:网络层(TCP/UDP)攻击与防御原理 DNS类报文攻击防御 简要笔记: 针对DNS Anti-ddos ,针对缓存服务器 虚假源 (1)源认证 发 ...

  10. dns劫持解决办法、dns劫持是什么、dns劫持原理

    一.什么是DNS 在网络中,机器之间只认识IP地址,机器之间最终都要通过IP来互相访问.但是为了方便记忆,可以为IP地址设置一个对应的域名,通过访问域名,就可以找到对应IP地址的网站. 比如,我们访问 ...

最新文章

  1. RocketMQ消息存储的整体结构
  2. Java线程同步的一些例子
  3. linux 将img写入硬盘,如何使用Etcher轻松将.img写入Mac上的SD卡
  4. android5.1.1移植教程,iTOP4412开发板Android5.1.1移植教程
  5. BZOJ 2460: [BeiJing2011]元素 线性基
  6. 石头剪刀布python代码_Python实现的石头剪子布代码分享
  7. STL不是线程安全的啊
  8. SpringBoot支持JSP教程
  9. 学校网络安全事故救助机制初探
  10. 对FreeMarker技术的思考
  11. 杭电Oj刷题(2009)
  12. 计算机英语作业答案,大工20春《专业英语(计算机英语)》在线作业1题目【标准答案】...
  13. 如何培养自己的商业思维能力?
  14. 云端应用典型应用场景
  15. kali linux 虚拟机iso 下载,Kali Linux 2016.2发布提供虚拟机以及系统镜像下载
  16. vue插槽的理解 slot slot-scop,三种插槽方式,默认插槽,具名插槽,作用域插槽
  17. AidLux“换脸”案例源码详解 (Python)
  18. 数据、元数据、数据库、数据仓库、数据中心、数据中台、业务中台 、(垂直数据中心、全域数据中心(公共数据中心)、萃取数据中心)
  19. 第5天-[21天学Python]-Python中自定义函数及调用的方法
  20. 电视剧《天道》里的商业思维

热门文章

  1. php ziparchive 损坏,通过ZipArchive php获取损坏或空拉链
  2. 百度云盘APP中去除我的应用数据图标:ES File Exploer
  3. 如何设置计算机的网络参数,如何为计算机新手简单地设置路由器的基本参数
  4. 深耕技术,与实践赛跑:一文告诉你如何稳妥快速完善区块链技术并有序推动商用​?...
  5. cjz格式文件打开方式_鹏业四川CJZ整体解决方案
  6. DC的逻辑综合与优化
  7. 苹果CMS搭建影视网站教程
  8. 如何运营批量推特账户
  9. fastboot 刷system.img 提示 sending 'system' (*KB)... FAILED (remote: data too large)
  10. getParentFile()方法的一些使用技巧