常见的VPN技术
- IPsec VPN: 多机房互联(即一般在GW与GW之间建立隧道)
- L2TP/IPsec VPN: 支持多隧道,配置IPsec使用
- PPTP VPN: 只能两端点间建立单一隧道,可选配合IPsec使用
- SSL VPN: 数据私密性、端点验证、信息完整性,自协议:握手协议、记录协议
SSL VPN现已成为远程访问VPN的新宠 。除了具备与IPsec VPN相当的安全性外,认证功能更强,还增加了基于内容的访问控制机制 。客户端只需要拥有支持SSL的浏览器即可
SSL VPN由于处在TCP层,所以可以进行丰富的业务控制,如行为审计,可以记录每名用户的所有操作,为更好地管理VPN提供了有效统计数据 。
当使用者退出SSL VPN登陆页面时,所有会话会全部释放 。
SSLVPN的技术分为以下四种
- Web代理(proxying)
- 应用转换(Application translation)
- 端口转发(port forwarding)
- 网络扩展(network extension)
Web代理(proxying)来自客户端的发往SSL VPN Server得页面请求在VPN Server内部替换,发往VPN后面的真正Web服务器,然后再将Web服务器的响应回传给终端用户.
WEB代理是最为简单的应用,也是控制粒度最细的SSL VPN应用,可以精确地控制每个链接 。
应用转换(application translation)有些通过html、JAVA程序,有些通过HTTPS页面中的客户端下载实现
- 对于非Web页面的文件访问,要借助于应用转换 。
- 在浏览器中用HTML或JAVA来实现模拟客户端程序 。通过SSL VPN的协议连接器,访问指定资源 。
- 应用:文件共享、telnet、ssh、远程桌面、ftp 。
端口转发(port forwarding)端口映射是粒度仅次于WEB代理的应用,它通过TCP端口映射的方式(原理上类似于NAT内部服务器应用),为使用者提供远程接入TCP的服务,它需要专门的、与服务器配套的SSL VPN客户端程序帮忙(在页面中一般提供下载方式)或是通过HTML代码实现 。
- 端口转发用于端口定义明确的应用(如FTP,SSH等) 。
- 终端系统上运行一个非常小的Java或ActiveX程序作为端口转发器,监听某个端口上的连接 。当数据包进入 这个端口时,它们通过SSL连接中的隧道被传送到SSL VPN网关,SSL VPN网关解开封装的数据包,将它们转发给目的应用服务器 。
- 使用端口转发器,需要终端用户指向他希望运行的本地应用程序(127.0.0.1),而不必指向真正的应用服务器 。
网络扩展(network extension)网络扩展是SSL VPN中粒度最粗的服务,但也是使用最广泛的,它实现了类似于L2TP的特性,所有客户端都可以从服务器获得一个VPN地址,然后直接访问内部服务器,它也需要专门的SSL VPN客户端程序帮忙.
- 远程端点可以具有完全的网络连接,并动态获取内部地址 。
- 在用法上和IPsec等同 。
- 需要插件和网络驱动的支持 。
- 优点:适应性好,所有的IP应用都可以 。
- 缺点:控制的粒度太粗,跟IPsec非常相似 。
L2TP/IPsec VPN实际上是,终端与接入服务器之间先建立IPsec隧道,然后再进行L2TP协商(UDP端口1701) 。依靠Internet协议安全性(IPsec)技术提供加密服务,在建立的IPsec加密通道上承载L2TP的控制和数据协商并传输通过L2TP封装的用户报文 。L2TP与IPsec的结合产物称为L2TP/IPsec 。VPN客户端与VPN服务器都必须支持L2TP和IPsec 。L2TP将随同路由与远程访问服务一道自动进行安装 。
在IPsec数据包基础上所进行的L2TP封装由两个层次组成:
- L2TP封装:PPP帧(IP或IPX数据包)将通过L2TP报头和UDP报头进行封装 。
- IPsec封装:上述封装后所得到的L2TP报文将通过IPsec封装安全性有效载荷(ESP)报头、用以提供消息完整性与身份验证的IPsec身份验证报尾以及IP报头再次进行封装 。IP报头中将提供与VPN客户端和VPN服务器相对应的源IP地址和目标IP地址 。IPsec加密机制将通过由IPsec身份验证过程所生成的加密密钥对L2TP报文进行加密 。
L2TP控制报文封装格式:(UDP 1701)
文章插图
# L2TP Control Message
若经过IPsec NAT穿越,则在外层IP与ESP Header之间再增加一个UDP头(端口为4500)