用OpenVPN构建安全VPN(精华 原创)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

[精华][原创]用OpenVPN构建安全VPN[OpenVPN+CA]作者:wenzk发表于:2008-12-2511:43:51【发表评论】【查看原文】【VPN讨论区】【关闭】[原创]用OpenVPN构建安全VPN[OpenVPN+CA]一直想写一片关于VPN配置方面的文章,由于时间等等很多问题,一直没有落实,现在终于和大家见面了,由于本人知识有限也并非专业从事这方面工作的,难免有错误,望指正,共同提高。自从认识VPN以来,一直在找寻一个容易配置、功能强大、支持多系统的VPN程序,由于一直没有找到合适的软件,Linux下的FreeSWAN、OpenBSDFreeBSD下的IPSec、Windows下的PPTP都试了试,始终不能满足自己的要求,直到OpenVPN的出现。关于各种VPN软件或者硬件的优缺点,在这里我就不再叙述了,因为这个掺杂着很多人为的因素在里边(萝卜好吃还是青菜好吃?),一个软件:稳定、符合自己的要求、自己用的习惯就是一个好软件。对于OpenVPN,在CU的VPN版面也有过很多的讨论,其中也不乏精华的文章,但是都是使用Statickey验证的,从字面上就可以看出来Statickey使用的就是预先生成的key对数据进行加密和解密,也就是常说的对称试加密,加密和解密双方必须预先知道加密的Key。本文讨论的是基于TLS加密方式,使用CA验证VPNClient的身份,OpenVPN使用TLS加密是通过使用公开密钥(非对称密钥,加密解密使用不同的key,一个称为Publickey,另一个是Privatekey)对数据进行加密的,对于TLS传输的工作原理,大家可以去Google一下,资料一大堆。对于OpenVPN使用TLSmode,首先Server和Client要有相同CA签发的证书,双方通过交换证书验证双方的合法性以决定是否建立VPN连接,然后使用对方CA把自己目前使用的数据加密方法(类似于密钥)加密后发送给对方,由于使用对方CA加密的,所以只有对方CA对应的Privatekey才能解密该字串,保证了此密钥的安全性,并且此密钥定期改变,对于窃听者来说,可能还没有破解出密钥,通信双方已经更换密钥了。我个人对OpenVPN的感觉(或者说是我使用OpenVPN的理由),NAT穿透力特强,支持HTTP代理,对动态地址支持很好,可配置性强,配置安全,开源便于二次开发...其他没有想好:)。关于OpenVPN的相关内容可以在上找到。下面开始正式讨论OpenVPN的安装和配置方法,本文是在FedoraCore2环境下配置的,由于机器在网络中不是在网关的位置,所以使用NAT方式来访问内网,否则还涉及到配置网络设备的路由。假设我的VPNServer有2块网卡,eth0对外,IP:61.1.1.2eth1对内,IP:192.168.1.2,内网地址:192.168.0.0/16本文除配置文件中行首的#是注释外,其他行首的#都是提示符,如果在非配置文件一行中第二次出现#说明后面的是注释,书写命令时可以省略。获取并安装Openvpn:首先检查系统是否安装lzo实时压缩工具$rpm-qa|greplzo如果没有安装可以在找到并安装,安装方法详见压缩包中的INSTALL文件,当然也可以用rpm包安装,记住一定要安装lzo-devel开头的那个包,因为OpenVPN需要使用lzo的头文件。$wget按照INSTALL文件中的说明,做如下操作:#mknod/dev/net/tunc10200#创建一个tun设备#echoaliaschar-major-10-200tun;;/etc/modprobe.conf#echo1;/proc/sys/net/ipv4/ip_forward#打开系统的转发功能接下来就生成服务器客户端需要使用的keys了,为了方便,我们使用OpenVPN包自带的脚本生成。#mkdir/etc/openvpn#cp-reasy-rsa/etc/openvpn#切换到OpenVPN源代码目录执行修改vars文件-------------CUTHere-------------#easy-rsaparametersettings#NOTE:IfyouinstalledfromanRPM,#don'teditthisfileinplacein#/usr/share/openvpn/easy-rsa--#instead,youshouldcopythewhole#easy-rsadirectorytoanotherlocation#(suchas/etc/openvpn)sothatyour#editswillnotbewipedoutbyafuture#OpenVPNpackageupgrade.#Thisvariableshouldpointto#thetopleveloftheeasy-rsa#tree.exportD=`pwd`#Thisvariableshouldpointto#theopenssl.cnffileincluded#witheasy-rsa.exportKEY_CONFIG=$D/openssl.cnf#Editthisvariabletopointto#yoursoon-to-be-createdkey#directory.##WARNING:clean-allwilldo#arm-rfonthisdirectory#somakesureyoudefine#itcorrectly!exportKEY_DIR=$D/keys#Issuerm-rfwarningechoNOTE:whenyourun./clean-all,Iwillbedoingarm-rfon$KEY_DIR#Increasethisto2048ifyou#areparanoid.Thiswillslow#downTLSnegotiationperformance#aswellastheone-timeDHparms#generationprocess.exportKEY_SIZE=1024#Thesearethedefaultvaluesforfields#whichwillbeplacedinthecertificate.#Don'tleaveanyofthesefieldsblank.#定义你所在的国家,2个字符exportKEY_COUNTRY=CN#你所在的省份exportKEY_PROVINCE=Liaoning#你所在的城市exportKEY_CITY=Shenyang#你所在的组织exportKEY_ORG=ELMOpenVPNORG#你的单位exportKEY_OU=OpenVPNService#你的邮件地址exportKEY_EMAIL=elm@elm.freetcp.com-------------CUTHere-----------------修改后保存,下面我们开始什成keys,以下为shell命令#为提示符#.vars#使修改的变量生效NOTE:whenyourun./clean-all,Iwillbedoingarm-rfon/etc/openvpn/easy-rsa/keys#./clean-all#初始化keys目录,创建所需要的文件和目录#./build-ca#什成RootCA证书,用于签发Server和Client证书,请保护好keys/ca.key文件。Generatinga1024bitRSAprivatekey........................++++++.............++++++writingnewprivatekeyto'ca.key'-----Youareabouttobeaskedtoenterinformationthatwillbeincorporatedintoyourcertificaterequest.WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.TherearequiteafewfieldsbutyoucanleavesomeblankForsomefieldstherewillbeadefaultvalue,Ifyouenter'.',thefieldwillbeleftblank.-----CountryName(2lettercode)[CN]:#如果无需修改,直接回车StateorProvinceName(fullname)[Liaoning]:LocalityName(eg,city)[Shenyang]:OrganizationName(eg,company)[ELMOpenVPNORG]:OrganizationalUnitName(eg,section)[OpenVPNService]:CommonName(eg,yournameoryourserver'shostname)[]:OpenVPNRootCAEmailAddress[elm@elm.freetcp.com]:#lskeysca.crtca.keyindex.txtserial我们可以看到ca.crtca.key文件已经什成了。下面我们为服务器生成Diffie-Hellman文件#./build-dh#TLSserver需要使用的一个文件GeneratingDHparameters,1024bitlongsafeprime,generator2Thisisgoingtotakealongtime..+..............................................................+....................................................................+....+........+.........+....................................................+.+..................................................................................................................................................................+.......................................+.................................+.............+.................................................................................+.......................................................+.............................++*++*++*创建并签发VPNServer使用的CA#./build-key-serverserver#server为创建后的文件名,分别为server.crtserver.keyGeneratinga1024bitRSAprivatekey.....................

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功