频道栏目
首页 > 资讯 > 网络安全 > 正文

零投入 教你搭建属于自己的加密VPN

08-12-13        来源:[db:作者]  
收藏   我要投稿
面临当前低迷的市场环境,企业的每一项投资都要谨慎,应尽量寻找一些免费技术或工具解决自己面临的问题。对于拥有分支机构的企业来说,为了保证两个网络之间通信的安全,一般选择建立Site-to-Site(站点到站点)VPN的方式,通常需要投资购买专业的VPN设备。不过,为了节省投资,今天为大家介绍一种不用花钱又能实现安全防护的方法。

  OpenVPN是一个开源SSL VPN客户端/服务器软件,可以让你搭建一个自己的加密VPN,该软件曾获得2007年最佳开源VPN软件,由此可见它的易用性和功能,都值得用户信赖。在本篇文章中,我将向大家介绍如何使用OpenVPN来建立站点到站点的VPN,从而在两个不同网络之间建立一条安全的加密通道。

  了解网络拓扑

  首先让我们先了解一下网络拓扑结构,公司总部和分支机构的局域网内各有数台计算机,两个网络通过互联网相互连接,如图1所示。我们需要在两者之间建立一个安全通道。

图1、网络拓扑图

  为了实现这个目的,我们可以使用OpenVPN的两种不同的模式:路由模式或桥接模式。桥接模式,从其名字上我们可以看出,只是通过OpenVPN计算机将服务器所在网络扩展到要连接的客户端。这种方式部署简单,但是随着网络规模的增长缺乏可扩展性。

  在桥接模式下,其广播域也同时被扩大,因为所连接的客户端与服务器网络在同一个网段内,广播也会通过VPN通道进行发送。对于某些服务来说,这可能是个不错的功能。但是在广播严重的网络环境中,广播流量可能会占用通道带宽,影响性能。

  相比之下,路由模式设置起来麻烦些,需要对客户端和服务器端路由器进行设置,但是这种模式可扩展性强,而且将总部网络和分支机构的网络分到不同的广播域中。但是,要想在这两个网络之间实现Windows文件共享,需要建立一个WINS服务器。

  在本篇文章中,我们将介绍如何进行路由设置,以及如何通过OpenVPN建立安全通道。当谈及加密和安全时,首选操作系统一定是Linux,在本篇文章中也将以它为例。当然,OpenVPN也可以很好的支持Windows,两种系统下的设置思路是相似的。

  现在来看一下相关的硬件设置:

  服务器端路由器:D-Link DGL-4300

  客户端路由器:Linksys WRT54G

  服务器端OpenVPN计算机:CPU,AMD Athlon 1600+,768Mb内存

  客户端操OpenVPN计算机:CPU,AMD Athlon X2 3800+,2Gb内存

  两个网络的网段分配如图2所示:

图2、网络地址

 安装OpenVPN

  首先,我们需要一个OpenVPN软件。我们需要分别从服务器端计算机和客户端计算机上下载、解压缩、配置、编译和安装OpenVPN,命令如下:

  ~ $ wget http://openvpn.net/release/openvpn-2.0.9.tar.gz
  ~ $ tar xvzf openvpn-2.0.9.tar.gz
  ~ $ cd openvpn-2.0.9
  ~/openvpn-2.0.9 $ ./configure
  ~/openvpn-2.0.9 $ make
  ~/openvpn-2.0.9 $ su -c make install

  注意:

  OpenVPN需要OpenSSL支持,在多数Linux版本中都已经默认安装,如果没有的话,你需要首先安装它。设置公开密钥体系

  和WPA企业模式一样,OpenVPN依靠一个公开密钥体系(PKI)。OpenVPN开发者在发现建立PKI非常复杂后,编写了一些封装的脚本可以让你非常轻松的搭建并运行自己的PKI,OpenVPN的easy-rsa脚本就可以实现这个任务,详细的安装过程在OpenVPN的文档中有介绍,因此在这儿我只对其进行简单介绍。

  进入解开的OpenVPN目录下的easy-rsa目录(~/openvpn-2.0.9/easy-rsa),根据你的需要对这个文件中的某些变量进行修改。我一般将密钥大小改为2048bit(在第40行):

  export KEY_SIZE=2048

  然后根据你的应用需要对第45行到49行的字段值进行修改:

  export KEY_COUNTRY=CN
  export KEY_PROVINCE=BJ
  export KEY_CITY="Beijing"
  export KEY_ORG="IT168"
  export KEY_EMAIL="smile@free.it168.com"

  接下来,初始化这个变量文件:

  ~/openvpn-2.0.9/easy-rsa $ . ./vars

  最后,初始化运行环境,建立认证中心(CA):

  ~/openvpn-2.0.9/easy-rsa $ ./clean-all
  ~/openvpn-2.0.9/easy-rsa $ ./build-ca

  OpenSSL需要我们在这个变量文件中定义的一些字段值;只需要按回车接受默认值即可。当需要你输入Common Name(通用名称)字段值时,你可以设定一个自己起的名字:

  Common Name (eg, your name or your servers hostname) []:CA

  接下来,创建服务器密钥(下面命令中的Server是密钥的文件名):

  ~/openvpn-2.0.9/easy-rsa $ ./build-key-server server

  然后,使用同样的方法来建立客户端密钥:

  ~/openvpn-2.0.9/easy-rsa $ ./build-key remote_office配置服务器端OpenVPN计算机

  服务器端OpenVPN计算机是这个VPN网络的核心所在。在路由模式下,所有的客户端都要连接到OpenVPN服务器,所有客户端之间的通信都要由OpenVPN服务器来进行路由,因此它的重要性不言自明,需要保持不宕机,能够稳定运行。

  客户端需要在它们的配置文件中设置服务器端的地址,因此最简单的方法是通过一个域名来指向你的服务器端网络。

  首先,我们需要为OpenVPN创建一个配置目录。使用root帐号创建目录/etc/openvpn,下面有两个子目录/etc/openvpn/certs和/etc/openvpn/keys。

  ~ # mkdir /etc/openvpn
  ~ # mkdir /etc/openvpn/certs /etc/openvpn/keys

  接下来,拷贝服务器的证书(server.crt)和CA的证书(ca.crt)到/etc/openvpn/certs下。同样,拷贝服务器密钥(server.key)到/etc/openvpn/keys目录下。服务器密钥需保密,锁定它的访问权限:

  ~ # chmod -R 600 /etc/openvpn/keys/

  接下来,我们需要创建e-Hellman密钥一致和交换参数。之后,拷贝DH参数(dh2048.pem)到/etc、openvpn目录下。

  ~ $ openssl dhparam -out dh2048.pem 2048

  OpenVPN最强大的功能之一就是能够“推送”特定配置到不同的客户端。这一点对于具有多个客户端的VPN网络的创建和管理来说,是有很大帮助的。

  要完成这个推送,我们还需要在OpenVPN服务器上建立客户端配置目录,包含连接到该服务器的每一个客户端的简短配置文件。当一个客户连接时,服务器首先查看与它具有相同通用名称的配置文件,作为该客户端的证书,并在那个文件中执行任何配置参数。

  创建/etc/openvpn/client-configs目录,并在它下面创建一个与客户端网络具有相同通用名称的文件(在这个例子中是remote_office)。

  ~ # mkdir /etc/openvpn/client-configs
  ~ # touch /etc/openvpn/client-configs/remote_office

  使用你熟悉的文本编辑工具打开remote_office,并输入如下配置:

  iroute 192.168.1.0 255.255.255.0
  push "route 10.1.1.0 255.255.255.0 vpn_gateway"

  iroute命令在OpenVPN服务器上建立一条内部路由,这样它就知道通过remote_office对所有通向网络192.168.1.0/24的数据进行路由。推送路由10.1.1.0/24,允许客户端广播服务器网络到客户端。

  最后,我们需要编辑OpenVPN配置文件。OpenVPN具有一些非常不错的示例配置文件供我们参考。

 配置服务器端路由器

  为了通过OpenVPN将来自服务器端网络的数据路由到客户端,服务器端网络中的计算机需要知道如何才能到达客户端。因此,我们需要为服务器端路由器增加一条路由,以将去往客户端子网(192.168.1.0/24)的通信路由到OpenVPN计算机(10.1.1.2)上。

  在DGL-4300上,可以在高级设置——>路由中进行设置,如图3。

图3、在服务器端路由器上增加路由

  现在,我们可以启动OpenVPN服务器了:

  ~ # openvpn --config /etc/openvpn/server.conf 配置客户端OpenVPN计算机

  建立客户端OpenVPN计算机,与服务器的建立非常类似:为证书和密钥创建目录;拷贝文件;对其进行安全设置。客户端OpenVPN配置要比服务器端少很多,因为在与服务器建立起连接后,服务器可以推送合适的配置到客户端。

  #
  # IT168 OpenVPN Client Configuration
  #
  # Instructs OpenVPN to run in client mode, requests IP address and
  # special instructions (like routes) from the server.
  client
  # Interface for tunnel
  dev tun0
  # Remote server to connect to. Can be domain name or IP address.
  remote it168test.com
  # Certificates and keys required for connection
  ca /etc/openvpn/certs/ca.crt
  cert /etc/openvpn/certs/remote_office.crt
  key /etc/openvpn/keys/remote_office.key
  # Symmetric cipher - Must be the same as the servers
  cipher BF-CBC
  # P

相关TAG标签
上一篇:IE 0day漏洞的最新消息:所有版本的IE都受影响
下一篇:五招 帮你成为杀毒应用高手
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站