基于Socks的WebVPN屈家石
2017-06-30张海涛曾若星黄岳田张晨
张海涛 曾若星 黄岳田 张晨
【摘 要】外网合法用户如何安全高效地访问内网资源是VPN技术研究的核心。用户使用VPN访问内部网络时,客户端与服务器之间的交互数据通过加密通道传输,保证了内部数据的安全。本文提出了用户权限分级、个性化网络资源分配、服务器安全防范等设想,为用户提供一个安全易用的WebVPN系统。
【关键词】WebVPN;网站安全;加密
0 引言
VPN在为用户提供便捷优质服务的同时也存在着一些问题。一方面,有的VPN安装及配置过程复杂,且可能受到防火墙或网络地址转换而影响使用效果;另一方面,VPN对于用户和目标服务器而言仅仅是一个加密通信的桥梁,只负责保证信息传输过程中的安全性,不能对用户进入内网后的行为进行控制。
针对这些问题,本文描述了一种基于Socks5的WebVPN系统,对系统中的关键技术进行分析,并提出了无需传输用户口令的身份认证模式、使用网站管理用户行为等新设想。实现了一个可跨平台、用户个性化定制、安全高效、方便管理的轻量级WebVPN系统。
1 系统功能模块
WebVPN系统基于Socks5协议,所以支持多平台下使用。该系统主要分为三大模块:客户端模块、服务器模块及传输模块。
客户端负责与用户交互,经本地代理将内网中的内容转发到用户的浏览器上。其基于Web服务器的运行机制,使用户在浏览器中设置相应的全局代理即可连接到对应的服务器,访问内网资源。
服务器模块是系统较为核心的模块,其不仅作为内外网之间信息交流的桥梁,还具备用户合法性检查、用户权限区分、网站安全加固等功能。WebVPN服务器将通过提供的Web服务代替合法用户执行对内网应用的访问,并将结果返回给用户浏览器。而服务器管理人员也可进入管理网站后台进行相关操作及文件检查,预防可能发生的问题。
传输模块将经过通信隧道中的各类信息封装加密,确保客户端与服务器之间的数据交流安全。基于HTTP协议使得数据能够方便地通过防火墙,处于防火墙两端的程序可以使用一种或多种方式组合来实现它们之间通信的需求,另一方面,Socks5是一种工作在传输层与应用层之间的上层协议,这样也为本系统的通用性奠定了基础。
2 实现技术
2.1 数据的加密与解密
客户端和服务器在完成生成密钥的通信协议后会同时产生加密器与解密器。加密器接收到明文数据后首先检查明文长度是否为16字节的倍数,当长度不足16字节的倍数时将自动在该字段末尾加上其他字符补位。得到长度处理工作完成的明文后,加密器将生成一个长度为12字符的随机字符串作为本次加密的初始化向量IV(initialization vector)。得到了明文、密钥、IV之后加密器根据AES算法生成密文,同时将加密时的IV连接在密文数据字段之前一并返回给通信模块。解密过程即为加密的逆过程。加密器得到密文后将其拆分成加密数据段和IV,用密钥与IV即可对密文进行解密得到明文数据段(可能包含补位字符),再检测该数据段是否存在补位,若存在则将补位删除,得到最原始的明文数据段。
2.2 通信密钥生成
服务器与客户端会根据预共享秘密,即用户离线注册的初始口令,各自在本地使用相同的算法生成AES算法的密钥,无需借助额外的安全信道传输密钥。当客户端发出请求接入内网请求时,数据库将会生成12字节长度的随机字符串发送至客户端,双方使用这个随机数同时生成一个32字节的哈希值作为本次通信的密钥KEY。可以看出在建立通信隧道时只是在公网中明文传输了用户名和随机数,保证了密钥的安全性。同时,不需要使用证书验证接入用户的身份,相较于SSL加密模式减少了额外的开支。
2.3 数据的封装及解封
数据封装过程在数据加密过程之后进行。获取加密后的字段DATA和初始化向量IV后,计算出IV+DATA的长度,得到4字节的LENGTH标识放置在数据包前;最后对新数据包前后分别加上开始标识符“DTSTART”和结束标识符“DTEND”。此时,数据包的封装工作完成,与原始加密数据DATA相比增加了32字节数据。
解封即为封装的逆过程。客户端由缓存区获取数据包,从开始符“DTSTART”处读取数据,遇到结束符“DTEND”完成;随后比较数据包IV+DATA的长度和收到的LENGTH值是否相等,确认无误后將完整的IV+DATA转给解密模块,数据包解封过程结束。
2.4 用户登录验证
在WebVPN中,用户登录验证采用挑战响应机制完成。当用户申请访问内网时,本机与服务器两端同时利用相同的公式对随机数进行计算。结果吻合即证明用户合法,即可采用生成的密钥加密通信数据。系统完成通道加密工作之后会将使用者的用户名及其所使用主机的MAC地址发送给WebVPN服务器,由WebVPN服务器记录这两项信息,为之后的访问控制模块做准备。
2.5 访问控制技术
系统采用了基于角色的访问控制策略(RBAC),于服务器处实施较细粒度的访问控制。用户身份认证采用了口令认证与地址(MAC地址)认证结合的方式,在用户与WebVPN服务器建立了可信的隧道之后将其登录名与主机MAC地址发给服务器,服务器记录这两项信息后首先对该MAC地址进行检索,判断用户是否处于登录状态。当用户请求访问内网资源后,WebVPN服务器会对用户身份进行认证,并将用户权限及访问请求转发至RBAC数据库匹配,经数据库确认后服务器才会将请求结果返回至用户机浏览器。
当用户发送内网请求时,WebVPN服务器都会验证发送请求的用户登录名与MAC地址是否与表单中的数据相匹配。这也确保了在同一时段中某台主机只允许一名用户访问内网,且同一用户不能在多台主机上登录,避免了非法用户通过伪造MAC地址等手段进行越权访问,一定程度上保证了内网的安全。
2.6 客户端Socks通道
用户浏览器与本机客户端之间建立Socks5通道,本机作为Socks5服务器成为浏览器和WebVPN服务器的中继,当外网用户需要访问某个内网页面时,客户端将请求发送至WebVPN服务器,WebVPN服务器将得到的数据返回至客户端(Socks5服务器),客户端通过之前建立的Socks通道将数据返回到用户浏览器上。
3 总结
本文提出了这个基于Socks5的WebVPN系统,对数据加密传输和系统网站管理等新设想进行了阐述,使用了安全独特的用户验证方式,也对用户进入内网后的行为进行了一定管理。从性能分析及测试结果来看,在保证了VPN安全性和方便性的基础上,还有实现了一些拓展功能,使之成为一个立体的系统,在方便用户访问内网资源的同时也能对系统自身进行安全加固。
【参考文献】
[1]王松江.VPN技术在计算机网络中的应用[J].计算机光盘软件与应用,2013,10.
[2]刘松.SOCKS VPN的研究及其实现[J].信息安全与通信保(下转第26页)(上接第68页)密,2006,5.
[3]粟棣.零配置VPN客户端的设计与实现[J].北京交通大学.2009,6.
[4]齐俊峰.基于Django的校园管理系统的分析与开发[J].兰州大学.2013,10.
[5]袁巍.AES算法的设计原则与其密钥扩展算法的改进[J].吉林大学.2010,4.
[责任编辑:田吉捷]