流量劫持总体来说属于中间人攻击的一种,本质上攻击者在通信两端之间对通信内容进行嗅探和篡改,以达到插入数据和获取关键信息的目的。目前互联网上发生的流量劫持基本是两种手段来实现的:
域名劫持:通过劫持掉域名的DNS解析结果,将HTTP请求劫持到特定IP上,使客户端和攻击者的服务器建立TCP连接,而非和目标服务器直接连接,这样攻击者就可以对内容进行窃取或篡改。在极端的情况下甚至攻击者可能伪造目标网站页面进行钓鱼攻击。
直接流量修改:在数据通路上对页面进行固定的内容插入,比如广告弹窗等。在这种情况下,虽然客户端和服务器是直接建立的连接,但是数据内容依然可能遭到野蛮破坏。
能够实施流量劫持的根本原因,是HTTP协议没有办法对通信对方的身份进行校验以及对数据完整性进行校验。如果能解决这个问题,则流量劫持将无法轻易发生。
HTTPS如何防止劫持
HTTPS,是HTTP over SSL的意思,提到HTTPS就不得不先简单描述一下SSL/TLS协议。SSL协议是Netscape在1995年首次提出的用于解决传输层安全问题的网络协议,其核心是基于公钥密码学理论实现了对服务器身份认证、数据的私密性保护以及对数据完整性的校验等功能。
SSL协议在HTTP请求开始之前增加了握手的阶段,在SSL握手阶段,客户端浏览器会认证服务器的身份,这是通过“证书”来实现的,证书由证书权威(CA)为某个域名签发,可以理解为网站的身份信息,客户端需要进行认证,需要确定该证书是否属于目标网站并确认证书本身是否有效。最后在握手阶段,通信的双方还会协商出一个用于加密和解密的会话密钥。
SSL握手阶段结束之后,服务器和客户端使用协商出的会话密钥对交互的数据进行加密/解密操作,对于HTTP协议来说,就是将HTTP请求和应答经过加密之后再发送到网络上。
由此可见,因为SSL协议提供了对服务器的身份认证,所以DNS劫持导致连接错误服务器的情况将会被发现进而终止连接,最终导致DNS挟持攻击无法实现。此外SSL协议还提供数据的加密和完整性校验,这就解决了关键信息被嗅探以及数据内容被修改的可能。
如何部署HTTPS
要将网站进行HTTPS支持以达到防劫持的效果,首先需要的是为网站的域名申请SSL证书。这个证书必须是由知名CA所签发的,这是因为知名CA的根证书广泛的存在于大多数浏览器和操作系统中,因此可以被客户端用来校验网站证书是否合法。
1、生成证书请求文件,即制作CSR文件:在进行服务器证书的申请之前,用户需要在对应的服务器上制作相关的CSR文件,这个CSR文件对于后面生成公钥有很大的帮助;
2、申请服务器证书:为自己的网站部署合适的服务器证书也是十分重要的,因此要根据自己的网站类型选择服务器证书类型,一般可以分为一下三类:
①域名型证书(OV SSL):适用于个人网站或是小型企业;
②企业型证书(DV SSL):适用于中型企业和一些金融机构;
③增强型证书(EV SSL):一般适用于大型企业以及政府机构的站点;
3、下载相关的服务器证书:在购买服务器证书的网站上,根据提示,下载一份中级服务器证书和一份初级服务器证书,并将初级服务器证书命名为“网站名.cer”。并在IIS服务器中完成证书请求;
4、进行服务器证书的安装:将服务器证书连接至计算机,再将下载好的证书复制到服务器中,并选择安装证书;
5、重启服务器,完成https证书服务器的部署。