文章目录
SSL VPN背景
由于IPSec协议只能针对三层数据(即网络层以下的数据)做隧道传输,无法覆盖到个人连接内网的情况。为了能够让员工的PC或移动终端接入企业内网,各大企业探索了许多方式。思科为解决此问题,改进了协议,制作了easy VPN。然而,esay VPN需要装软件,并且配置项多,设置繁琐,SSL VPN应运而生。
SSL VPN最大的好处是操作简单,支持客户端或浏览器接入企业内网。
SSL协议
SSL协议(后改为TLS相当于SSL3.1),安全套接层协议,是位于应用层以下TCP之上的一层协议,是一种用来加密的协议,只能用于加密基于TCP连接的应用层数据,UDP数据不能加密。
常用于针对HTTP报文进行加密,即HTTPS。在SSL的出现之前,HTTP报文在互联网上明文传输,随着Web使用的增多,HTTPS的就显得非常必要,并且SSL不会对应用层数据做修改。
SSL加解密密钥是基于证书实现的,并且通过证书验证对方身份。目前验证身份存在两种方式,对安全要求较高(如银行、网络安全设备等)一般采用双向认证,即客户端要验证服务器证书,服务器也会对客户端证书做验证。通用的是单向认证,客户端只需对服务器做基于证书的身份验证,反向不用。
高版本SSL协议有些设备可能不支持,如需考虑兼容性的情况下,可做针对性适配。
SSL两个重要概念
SSL连接
用于提供某种类型的服务数据的传输,是一种点对点的关系。一般来说,连接的维持时间比较短暂,并且每个连接一定与某一个会话相关联。
SSL会话
一个SSL会话是在客户和服务器之间的一个关联关系。会话通过握手协议来创建。它定义了一组安全参数。
一次会话过程通常会发起多个SSL连接来完成任务,例如一次网站的访问可能需要多个HTTP/SSL/TCP连接来下载其中的多个页面,这些连接共享会话定义的安全参数。这种共享方式可以避免为每个SSL连接单独进行安全参数的协商,而只需在会话建立时进行一次协商,提高了效率。
可把会话想象成一条公路,上面可以跑很多车辆。正如一个SSL会话可以跑多个安全连接一样。
SSL协议结构
SSL协议主要通过三个协议实现:
- SSL握手协议:SSL握手协议被封装在记录协议中,该协议允许服务器与客户机在应用程序传输和接收数据之前互相身份认证、协商加密算法和密钥。在初次建立SSL连接时,采用非对称加密的方式,服务器与客户端交换一系列消息。
- SSL修改秘文协议:保障SSL传输过程的安全性,客户端和服务器双方应该每隔一段时间改变加密规范。
- SSL报警协议:SSL报警协议是用来为对等实体传递SSL的相关警告。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。
- SSL记录协议:保护传输数据的私密性、完整性和有序性,对数据进行压缩。
SSL体系结构
SSL对应用层开放SSL API,使得应用层通过调用API来获取SSL的服务。
握手层
握手层具体过程如下(此处为双向认证的案例):
握手层的功能
- 协商通讯所使用的SSL协议版本。
- 协商通讯所使用的加密套件(密钥交换算法、加密算法、HMAC算法等)。
- 协商加密所使用的密钥参数。
- 通讯双方彼此验证对方的身份(SSL通过数字证书来验证,服务器端传送自己的证书给客户端,也可使用Certificate Request消息向客户端索要证书)。
- 建立SSL链接和维护SSL会话。协商一致的参数如协议版本、加密套件、密钥参数等都会保存到会话中。SSL连接断开后,会话不会立即被清除,还会在SSL服务器端和客户端保留一段时间。
全部协商完毕后,握手过程完成。握手后的数据全部为加密数据。
记录层
记录层的功能
- 保护传输数据的私密性,对数据进行加解密。
- 验证传输数据的完整性,计算报文的散列值。
- 提高传输数据的效率,对报文进行压缩。
- 保证数据传输的可靠和有序。
记录层的报文格式
- 报文类型:密钥改变协议(20),告警协议(21),握手协议(22),应用层数据(23)。
- 版本:TLS1.0(3.1)、SSL3.0。
- 长度:记录层报文的长度,包括加密数据和MAC值的字节数。
- MAC:报文的消息验证码(哈希散列值),包括从报文类型开始的所有字段。
SSL记录层报文哈希散列值的计算:
SSL记录层报文完整性的验证:
SSL记录层的流机密与流解密:
SSL协议的通信过程
SSL通信的两个问题
如何阻挡SSL访问
案例:SSL握手后的数据全是加密数据,如果中间加入防火墙后访问的流量也都是加密流量,那么防火墙如何对访问网站做屏蔽?
需要从握手协商阶段开始监听,握手过程中,只有第一个报文包含了要访问网站的额域名,如果防火墙想要阻断,就需要检查第一个报文中的server字段的内容,查看黑名单选择是否阻挡。
如何获取SSL访问的内容
案例:公司内部研发,禁止机密信息泄密,由于访问防火墙的流量都是加密流量,那么防火墙如何针对流量具体内容做屏蔽?
防火墙需要充当中间人的作用,既作为客户端的服务器与客户端协商通信,又作为服务器的客户端与服务器协商通信。这样防火墙可以获得访问数据的明文,从而做针对化部署。
虽然防火墙冒充服务器,但是防火墙没有服务器的证书,客户端会提示该访问不安全。此时可以做证书信任,让客户端信任防火墙自己的假证书即可。
SSL的缺点
- 加解密会带来服务器性能的损耗,虽然硬件升级,已不再是问题。
- 不能够保护基于UDP协议的应用数据。
- 无法解决流分析,IP头部暴露在外。
- TCP头部也暴露在外。
SSL VPN详解
SSL VPN的系统组成
SSL VPN系统由以下几个部分组成:
- 远程主机:管理员和用户远程接入的终端设备,可以是个人电脑、手机等。
- SSL VPN网关:SSL VPN系统中的重要组成部分。管理员在SSL VPN网关上维护用户和企业内内网资源的信息,用户通过SSL VPN网关查看可以访问哪些资源。SSL VPN网关负责在远程主机和企业内网服务器之间转发报文。SSL VPN网关与远程主机之间建立SSL链接,以保证数据传输的安全性。
- 企业内网服务器:可以是任意类型服务器,如Web服务器、FTP服务器,也可以是企业内网需要与远程接入用户通信的主机。
- CA:为SSL VPN网关颁发包含公钥信息的数字证书,以便远程主机验证SSL VPN网关的身份、在远程主机和SSL VPN网关之间建立SSL连接。
- 认证服务器:SSL VPN网关不仅支持本地认证,还支持通过外部认证服务器对用户的身份进行远程认证。
SSL VPN的系统结构
SSL VPN的运作流程
SSL VPN三种接入方式
Web接入方式
即无客户端接入方式。Web接入方式操作简单方便,对软件平台依赖小。由于限制了用户只能通过HTTP协议访问特定的URL网址,所以能有效防止用户执行非法操作,系统安全性高。但是WEB接入对传输的数据进行较复杂的处理,对系统处理能力有较高的要求。
实现原理:对返回Web页面中的URL进行改写,是的远程用户在公网上可以访问到私网中的URL。SSL VPN为用户访问Web服务器提供了安全的连接,并且可以防止非法用户访问受保护的Web服务器。
TCP接入方式
也称端口转发方式。即用户可以通过SSL VPN网络实现TCP层的通讯。这种接入方式主要是为了在不对现有TCP应用程序进行升级,也不用修改其任何配置的情况下,使用SSL连接进行远程通讯。从而最大限度地保护了用户已有的软件资源。
但是此种接入方式对远程主机开放了TCP层的通讯,如果远程主机不安全,则系统的服务器有可能收到TCP层的攻击,其安全性较WEB接入方式要低一些。
实现原理:在远程主机安装一个VPN客户端,以代理方世玉SSLVPN网关建立SSL链接,SSLVPN网关再以代理方式与服务器端建立TCP链接。
IP接入方式
也称网络扩展方式。即用户通过SSL VPN网络可以进行IP层的通讯。这种接入方式通过SSL隧道转发客户端所有的IP请求报文,其适应性最好,能够干支持基于IP协议的所有BS和CS业务系统,其同样要求在客户端系统上安装一个ActiveX的控件。通过全网接入模式能够实现移动用户的虚拟IP地址分配,实现各中访问控制策略的下发,支持移动用户以分离隧道(可以同时访问VPN和因特网)或完全隧道(只能访问VPN不能访问因特网)的方式接入VPN网络,大大提高了网络的整体安全性。
实现原理:在远程主机上安装一个虚拟网卡,配上内网的IP地址和可以访问内网的路由,远程主机与内网服务器之间传送的数据报文通过路由进行IP层的转发。
需要提供一个可接入地址池,用来给VPN的虚拟网卡分配IP地址。
路由反向注入
由于客户既可以访问内网服务器,又可以访问互联网,可能会造成外人通过客户访问内网的安全隐患,通过上述所说的分离隧道可以解决这个问题,即只能访问内网,不能访问公网。原理是路由的反向注入,VPN网关向员工PC发送一条路由,让员工PC更改默认路由,即可实现隧道分离。
SSL VPN的技术优势
- 网络互联性:SSL工作在TCP层,不会受NAT和防火墙的影响。
- 客户端的维护:借助浏览器,实现客户端的自动安装和配置。
- 访问权限管理:解析应用层协议,进行高细粒度地访问控制。