Total Pageviews

Thursday 30 July 2015

用静态密钥简单配置OpenVPN


提起VPN,估计大多数人都会想到各大厂商的硬件设备。其实,VPN还有另外一大家族:软件VPN。通过软件的部署,实现Virtual Private Network的功能。
这篇文章将讲述如何利用OpenVPN实现SSL VPN。OPENVPN是近年新出现的一个基于开源软件体系的VPN项目(www.openvpn.net),具备SSL VPN解决方案的全部特征,支持灵活的客户端认证方式、分组权限控制,负载平衡,容错技术等。此外,它还有支持平台多的优点,包括windows,linux,bsd,mac os等。
需要说明的是OpenVPN与其它常见的SSL VPN产品不同,不是一个基于web浏览器的VPN产品,而是一个全功能的VPN解决方案,支持所有协议,甚至IPX。
现在我们通过假设一个简单的网络环境,展示OpenVPN的强大和易用:某公司职员在外出差,计划利用互联网与公司内部网络进行数据交互,并且利用VPN技术保证数据的安全性。其网络结构如下:
          OpenVPN作为一款完善、稳定的VPN软件,完全可以胜任此项任务。其有两种安全模式,一种是预先共享的静态密钥(Static Key)方式,另一种是基于使用SSL/TLS的RSA证书和密钥的方式。前者具有配置简单,无需维护X509 PKI的优点,但限制了用户数量,只支持一对一的连接方式,此外,客户端必须预先部署静态密钥,安全性也不够高;后者则保证了安全性,但需要额外维护 PKI,相对前者配置比较复杂。在企业环境中,推荐使用在此RSA证书和密钥的方式进行安全认证。为了方便,我们在此选用静态密钥方式权当抛砖引玉。
一、软件下载及安装
         架设VPN之前,我们需要从http://openvpn.net/download.html下载安装程序。目前 OpenVPN的最新版本是2005.04.17发布的2.0版。假设Firewall服务器和客户端都使用了windows操作系统(当然其他操作系统也与此类似),我们需要下载仅1.7M的openvpn-2.0-install.exe。
           服务器和客户端都需要安装OpenVPN程序。按照windows的传统,一路“NEXT” 就可以成功安装。期间,可能会弹出“TAP-Win32 Adapter V8网卡驱动没有通过徽标测试”的警告,点击“仍然继续”忽略此即可。安装后,系统会多增加TAP-Win32 Adapter V8的虚拟网卡(无VPN连接时,状态为断开)。
二、生成静态密钥文件
           此安全模式的关键是一个2048 bit OpenVPN static key。生成操作很简单,点击以下快捷方式就会随机产生一个2048位的静态密钥文件(key.txt)并保存在OpenVPN目录下的config文件夹:
开始 -> 程序 -> OpenVPN ->Generate a static OpenVPN key。
然后把key.txt分别部署到服务器和客户端的config文件夹。
三、修改配置文件
         程序安装时,OpenVP自带了两种配置文件范例保存在sample-config文件夹下,并把扩展名.ovpn与记事本notepad进行了关联。 sample.ovpn是在静态密钥方式下的配置文件范例,我们只需要简单的修改一下就可以达到我们的需要:
(1) 远程服务器设置 (第8行remote myremote)如果是客户端,则把myremote用服务器的地址来代替;如果是服务端,则应把此行用“;”或“#”号注释掉,否则会出现” Cannot resolve host address: myremote: [HOST_NOT_FOUND] The specified host is unknown.”的错误提示。
(2) 连接方式(第34行 dev tap)由于本实验使用点对点IP连接,故把此行改为dev tun 。相应的,注释掉tap的配置信息,取消tun两条配置信息(tun-mtu和ifconfig)的注释使其生效,并对ifconfig的两个IP进行配 置。其中,前一个IP地址(默认为10.3.0.1)为本机在虚拟局域网中的IP地址(非本地真实IP),第二个IP地址(默认为10.3.0.2)为远 程计算机在虚拟局域网中的IP地址。需要说明的是,虚拟局域网的IP分配并不是随意的,不能与本地和远程的计算机所在局域网的IP段冲突,否则就会造成路 由混乱,无法正常通讯。我们在此试验中,保持默认IP不变。
(3) 除以上两点需要修改外,其他选项可以按需要修改,比如是通讯端口,静态密钥文件,是否采用压缩等。
         四、防火墙配置
请确保OpenVPN服务段的UDP1149端口开放。
事实证明,95%以上的连接问题都是由防火墙引起的。
         五、VPN测试
右 击配置文件,选择“Start OpenVPN on this config file”,分别启动服务端和客户端,虚拟网卡的状态会由断开转为正常。成功连接后,OpenVPN会根据配置文件自动分配IP给虚拟网卡(请确保系统的 DHCP Client服务启动,否则会不能获得IP)。
为了验证VPN已经建立,可以使用ping 命令测试一下。
在此基础上,简单的配置一下路由信息,就可以让VPN客户端访问VPN服务端所在网段的全部资源。由此可见,OpenVPN的配置是很简单的,即使通过基于使用SSL/TLS的RSA证书和密钥进行认证也不是很复杂。
OpenVPN 实现了利用SSL来保证网络通讯安全性的目的,同时避免了当前大多数SSL VPN产品仅提供简单的web应用的不足。虽然,此方案丢掉了“零客户端”的光环,但也因此得到了功能上的增强,是一个不错的产品。Catalis的资深 工程师Duffy说:“在这个项目中Catalis惟一的投资就是花费时间。”如果你只需要最基本的、可靠的安全策略和基本的访问方式,对其他方面无特别 的要求,那么免费的OpenVPN或许是一个不错的选择。