SSL VPN 原理

1,662 阅读10分钟

SSLVPN和IPSecVPN对比

image.png

如图所示,SSLVPN的核心在于SSL协议,作用于应用层协议上,可以保护具体的某个数据项。IPSecVPN保护的是IP数据包,作用在网络层,不能像SSLVPN一样精细化控制数据。

IPSecVPN的缺点:

  • 用户终端上需要安装指定的客户端软件,导致网络部署、维护比较麻烦。
  • Sec/L2TP VPN的配置繁琐。
  • 管理人员无法对远程用户访问企业内网资源的权限做精细化控制。

SSLVPN的优点:

  • 采用B/S架构,远程用户无需安装额外软件,可直接使用浏览器访问内网资源。
  • SSL VPN可根据远程用户访问内网资源的不同,对其访问权限进行高细粒度控制。
  • 提供了本地认证、服务器认证、认证匿名和证书挑战多种身份认证方式,提高身份认证的灵活性。
  • 可以使用主机检查策略。
  • 缓存清理策略用于清理远程用户访问内网过程中在终端上留下的访问痕迹,加固用户的信息安全。

SSLVPN 原理

image.png

虚拟网关:FW向远程用户提供SSL VPN接入服务的功能模块称为虚拟网关,虚拟网关是远程用户访问企业内网资源的统一入口。虚拟网关具有处理不同协议的能力。

通过多虚拟网关技术可以实现业务的隔离。

用户登录

远程用户通过Web浏览器(客户端)登录虚拟网关,请求建立SSL连接。虚拟网关向远程用户发送自己的本地证书,远程用户对虚拟网关的本地证书进行身份认证。认证通过后,远程用户与虚拟网关成功建立SSL连接。

本地证书认证

本地证书认证是在建立SSL连接前,客户端对虚拟网关身份的验证。

image.png

  1. 用户在客户端输入https://*虚拟网关地址:端口或https://域名*,向SSL VPN虚拟网关请求建立SSL连接。

  2. 虚拟网关在收到请求后,从证书模块调用虚拟网关引用的本地证书。

  3. 虚拟网关将本地证书发送给客户端。

  4. 客户端根据自己证书库中的CA证书检查虚拟网关的本地证书是否可信。当满足以下三个条件时,客户端认为虚拟网关的本地证书可信,则继续运行下一步。

  • 虚拟网关的本地证书在有效期内。
  • 客户端的CA证书与虚拟网关的本地证书是同一个CA机构颁发的。
  • 虚拟网关的本地证书的CN字段取值与虚拟网关地址或域名一致。
    • 如果以上三个条件不能同时满足,则虚拟网关会为客户端推送一个提示框,要求客户端信任虚拟网关。如果客户端选择信任,则继续运行下一步。如果客户端选择不信任,则本地证书认证不通过。
  1. 客户端与虚拟网关进行TCP三次握手以及一轮SSL握手,成功建立SSL连接。用户看到SSL VPN虚拟网关登录界面。

用户认证

虚拟网关对远程用户进行用户认证,验证用户身份。用户认证可以选择以下四种方式之一:本地认证、服务器认证、证书匿名认证、证书挑战认证。

本地认证

本地用户名和密码,存在SSL网关的本地用户。

image.png

  1. 用户在SSL VPN虚拟网关登录界面输入用户名和密码后,客户端会将用户名和密码发送给虚拟网关。

  2. 虚拟网关会将用户名、密码发送给认证域模块。用户属于哪个认证域是由用户名中携带的“@”后的字符串来决定的。如“user1@bj”属于“bj”认证域。如果用户名中没有携带“@”,则属于缺省的default认证域。

  3. 认证域模块将用户名和密码发送给用户/组模块。

  4. 用户/组模块会根据自己的数据库检查用户名和密码是否正确。如果是则认证通过,如果不是则认证不通过。

  5. 用户/组模块将认证结果返回给认证域模块。

  6. 认证域模块将认证结果返回给虚拟网关。

  7. 如果认证结果为通过,则虚拟网关会从自己的角色授权列表中查找用户所属角色从而确认此用户的业务权限。如果认证结果为不通过,则直接进行8.

  8. 虚拟网关将认证结果返回给客户端。

服务器认证

服务器认证是指SSL VPN用户的用户名和密码保存在服务器上,需要在服务器上完成用户认证。服务器认证支持的服务器类型包括:RADIUS、HWTACACS、SecurID、AD、LDAP。

RADIUS双因子认证:

RADIUS双因子认证是指FW和RADIUS服务器配合,对SSL VPN用户进行身份认证。认证时,除了验证用户名和静态PIN码,还要求用户输入动态验证码。动态验证码可以是短信验证码或硬件令牌生成的动态密码。

image.png

证书匿名认证

只采用证书,客户端发送证书给服务器认证 。

image.png

证书挑战认证(最安全)

证书挑战认证是指将验证客户端证书与本地认证或服务器认证结合起来。

证书+本地用户名密码

证书+服务器认证

image.png

角色授权

用户认证完成后,虚拟网关查询该用户的资源访问权限。用户的权限分配通过角色实现,先将具有相同权限的用户/组加入某个角色,然后角色关联可访问的业务资源,角色是联系用户和资源的纽带。

资源访问

虚拟网关根据远程用户的角色信息,向用户推送可访问的资源链接,远程用户点击对应的资源链接进行资源访问。

SSL VPN业务

业务解释
Web代理远程用户访问内网Web资源时使用Web代理业务。
文件共享远程用户访问内网文件服务器(如支持SMB协议的Windows系统、支持NFS协议的Linux系统)时使用文件共享业务。远程用户直接通过Web浏览器就能在内网文件系统上创建和浏览目录,进行下载、上传、改名、删除等文件操作,就像对本机文件系统进行操作一样方便。
端口转发远程用户访问内网TCP资源时使用端口转发业务。适用于TCP的应用服务包括Telnet、远程桌面、FTP、Email等。端口转发提供了一种端口级的安全访问内网资源的方式。
网络扩展远程用户访问内网IP资源时使用网络扩展业务。Web资源、文件资源以及TCP资源都属于IP资源,通常在不区分用户访问的资源类型时为对应用户开通此业务。

web代理

web代理实现对内网Web资源的安全访问:

  • Web代理实现了无客户端的页面访问。

  • Web代理有两种实现方式:Web-Link和Web改写(默认)。

  1. Web改写:是将内网web链接隐藏起来,起到加密的作用。即远程用户在点击虚拟网关资源列表中的链接时,虚拟网关会将用户要访问的真实URL进行加密。同时用户要访问的Web资源页面链接对象(例如Flash、PDF、Java Applet等)的URL也会被一并加密。

  2. Web-Link:不会进行加密和适配,只做单纯“转发”远程用户的Web资源请求。

image.png

Web代理功能的基本实现原理是将远程用户访问Web Server的过程被分成了两个阶段。首先是远程用户与FW虚拟网关之间建立HTTPS会话,然后FW虚拟网关再与Web Server建立HTTP会话。虚拟网关在远程用户访问企业内网Web Server中起到了改写、转发Web请求的作用。

image.png

远程用户访问内网Web资源时的报文封装过程,从图中可以看出远程用户的访问过程本质上是由HTTPS和HTTP这两个会话衔接而成。其中,远程用户与虚拟网关建立HTTPS会话时,使用的源端口为6293,这个源端口是一个随机端口;目的端口是443。虚拟网关与Web Server建立HTTP会话时,源端口是10091,这个源端口也是随机端口,目的端口为80。

文件共享

提供了对内网文件系统的安全访问。

  • 采用协议转化技术,无需安装专有客户端,直接通过浏览器安全接入内部文件系统。
  • 将客户端发起的文件共享请求转化成相应的协议格式,与服务器进行交互。

在文件共享业务中FW起到了协议转换器的作用。

image.png

特点:

  • 所有文件接入需要认证
  • 所有文件传输采用SSL加密
  • 文件级的访问权限控制
  • SVN增加额外的访问控制
  • 就像操作本机文件系统一样安全便捷。

端口转发

端口转发的交互过程,Telnet示例

image.png

网络扩展

实现对内网所有复杂应用的全网访问.

  • 通过建立安全的SSL隧道,实现对基于IP的内网业务的全面访问。

  • 实现方式:

  1. ActiveX控件
  2. 专用客户端软件:一次安装,零配置。
  • 访问方式:
  1. 全路由模式(Full Tunnel)——全通道方式,所有流量都流向网关。

  2. 分离模式(Split Tunnel)——分离通道方式:处理可以访问内网,还能够访问客户端所在的本地子网。

  3. 手动模式(Manual Tunnel)——能够访问内网和特定网段的资源,同时,客户端访问本地子网和Internet的操作不受影响。

网络扩展实现原理

image.png

启动网络扩展功能,会触发以下几个动作:

  • 远程用户与虚拟网关之间会建立一条SSL VPN隧道。

  • 远程用户本地PC会自动生成一个虚拟网卡。虚拟网关从地址池中随机选择一个IP地址,分配给远程用户的虚拟网卡,该地址作为远程用户与企业内网Server之间通信之用。有了该私网IP地址,远程用户就如同企业内网用户一样可以方便访问内网IP资源。

  • 虚拟网关向远程用户下发到达企业内网Server的路由信息。虚拟网关会根据网络扩展业务中的配置,向远程用户下发不同的路由信息。

网络扩展功能建立SSL VPN隧道的方式有两种:可靠传输模式和快速传输模式。可靠传输模式中,SSL VPN采用SSL协议封装报文,并以TCP协议作为传输协议;快速传输模式中,SSL VPN采用采用UDP协议作为传输协议。

image.png

可靠性传输模式下,SSL VPN隧道之间使用了TCP作为传输协议。 image.png

快速传输模式下报文的封装原理和可靠性模式下报文封装原理是一样的,只是传输协议由TCP改为了UDP。 image.png

SSL VPN使用限制

  • 在负载分担组网下,不支持SSL VPN功能。

  • SSL VPN特性不支持IPv6。

参考文章

SSL-VPN技术原理