用Openswan组建Linux IPSec.doc_第1页
用Openswan组建Linux IPSec.doc_第2页
用Openswan组建Linux IPSec.doc_第3页
用Openswan组建Linux IPSec.doc_第4页
用Openswan组建Linux IPSec.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用Openswan组建Linux IPSec1.概述2.安装Openswan3.认证和配置 3.1 RSAsig认证方式的配置 3.2 x.509证书认证的配置 3.3 RoadWarrior模式的配置5.Windows客户端的配置*1.概述 LInux上的VPN支持主要有三种: 1)IPSec s VPN 其主要代表有 FreeS/WAN、KAME IPSec在Linux上支持主要有两个主要的分类,一为FreeS/WAN,现在已经停止开发,其分裂为两个项目,Openswan与 Strongswan。其可以用自身的IPsec内核堆栈(Kernel stack),称为KLIPS,也可以用2.6内核中的堆栈代码(下面我们称其为26sec),可以说是非常的灵活。还有就是来自BSD世界的KAME。 KAME只能用内核堆栈。 IPSec差不多是最老的VPN标准了,她的依然很安全,当然是在配置好以后。言下之意,她的配置比较麻烦。本文下面将做说明。 2)SSL-Based VPN 其主要代表有 OpenVPN SSL只要跑在应用层,所以理所当然的配置简单,只要机子能跑TCP或UDP就行,也可以穿过大多的防火墙。 3)PPTP-Based VPN 有(PoPTop) PoPTop可以说是PPTP在Linux下的实现。不过,IPSec上跑L2TP更安全。2.安装Openswan 因为FreeS/WAN已经在2004年三月停止开发,所以我们使用她的后继项目Openswan来做我们的IPSec实验。其相比FreeS/WAN有个好处,如果使用 26sec 的时候,Openswan不用打补丁,就可以用nat。 因为IPSec工作在网络层,所以需要系统内核态的支持,上面说过,有两个选择,用自带(26sec)的或用Openswan(KLIPS)的,为了方便(如何打补丁和编译内核不是本文讨论的重点),本文使用2.6自带的实现代码。同时本文使用RHEL AS4.0作为实验系统,在RHEL AS4.0上安装。从/code下载软件包,然后按照包中的说明安装。由于我们使用26sec,所以只要make programs;make install就可以搞定。值得注意的是,现在的Openswan已经内建些个好用的补丁,比如x.509和NAT Traversal的支持,使用起来非常的方便。#tar zxvf openswan-2.4.9.tar.gz # make KERNELSRC=/lib/modules/uname -r/build module minstall# make programs install 你也可以用 #ipsec verify来检验你的安装3.认证和配置一、 RSA Signature(RSA数字签名)认证的配制 Openswan支持许多不同的认证方式,包括RSA keys、pre-shared keys或x.509证书方式。RSA Signature比较简单,我先介绍下所要使用的命令 生成一个新的RSA密钥对 #ipsec newhostkey-output /etc/ipsec.secert 按left或right格式生成RSA Sig #ipsec showhostkey -left(或-right) 知道了上面的命令,我们就可以配置一个net-to-net,就是网关对网关的通讯。所在的Linux主机为通讯的网关,作为其子网的出口,对于子网的用户来所是透明的,远程的子网在通讯后可以像自己的局域网一样的访问。 本文使用VMWare架设起一个四台虚拟Linux主机来进行试验。因为要在不同的机子上进行配置,所以请读者认清主机名。 8(子网客户机,计算机名RA) 0(right网关主机,计算机名VPN,同时eth1配置为54) 9(left网关主机,计算机名ora92,同时eth1配置为54) 8(子网客户机,计算机名RB) 两个网关主机当然要安装好Openswan。 然后我们运行下面的命令 /ora92-left #ipsec newhostkey -output /etc/ipsec.secert #ipsec showhostkey -left /etc/ipsec.conf #vi /etc/ipsec.conf /编辑ipsec.conf配置文件 #scp /etc/ipsec.conf rootright_GW_ipaddress:/etc/ipsec.conf/把ipsec.conf拷贝到right网关,目的是为了让right得到left的rsasig。 /vpn-right #ipsec newhostkey-output /etc/ipsec.secert #ipsec showhostkey -right /etc/ipsec.conf #vi /etc/ipsec.conf #scp /etc/ipsec.confrootleft_GW_ipadress:/etc/ipsec.conf 然后分别从前启动ipsec服务 #ipsec setup restart /这个因为你的系统不同点不同 这里的编辑ipsec.conf应该为(配置文件中的#为注释,和shell中不同)version 2.0 # conforms to second version of ipsec.conf specification# basic configurationconfig setup nat_traversal=yes nhelpers=0include /etc/ipsec.d/examples/no_oe.confconn linux-to-linux conn必须定行写 left=9 leftsubnet=/24 leftid=ora92 # RSA 2192 bits ora92 Thu Jul 19 13:52:56 2007 leftrsasigkey=0sAQN8mHncm 6AV77BxYsCx/IuYbz6cpsAnXdJGEDkDohsUQs9U/uyZ7ru0DIq4PkjQ/D/kS9VXyc1ZHv9WmwNzTnO cVFMuC3Ld4epFpb4w 5HzEhpPG1U63o0H 8z4OqJg9a7yE9z93EJnLcciyyRuCpE4voNPUIuuQKpOjK641OfQu6zFZqJhCGnFr IL80WTykN/ZbKVFLe Dao5EGXpqafnTSiXq2xMgpo5uMxOogjsdjRu8 H0Qw2U2FGN2kgin4P/qbdQY9CQSgs8SMo3aHF3xrdPX9bDOmZYZJrl0c3uELtElNrTouGig4c3amNMpUSigXisitbqy5SNGQnOLZlJzlPCVkR8GofWOvaNEBSuAH right=0 rightid=vpn rightsubnet=/24 # RSA 2192 bits vpn Thu Jul 19 14:01:03 2007 rightrsasigkey=0sAQOyv/cshJnUxULJtaiG 3aDeUIuzbe6c0eVmcEp4l/GK/Qd8yRD/PWfqBsJCP Bg3PieoEM GwFXE2GE9h8pPzXwiMfxBTwTx3RHxYK/6mA9sxGJerCD9Ro1IgpRfQFzVio1UBukN5YX6rnrfvbBDNwzidL8JHyNtKXMbw56U7qsXxhkVsF0Xwk5gkH5ONj571xbPF ckO4ATxMFVQG1VeWyi5JMYt58vUY1ipVRTg2YMcwZR tPAIP/9Vr2XoUF5fzQ0WEQrU6XPXrGta/Ma0F5yfAjMbBXp87tmLQL88x2V5jC7GikSS8rReuRP9bv9OC879jVrvy98ExMEW YdsCSrIKOqqx6D rINCnXUjS0E5F auto=start然后在任意一方网关主机运行 ipsec auto -up net-to-net,这个时候,两个客户机之间应该可以互相ping的通,就像在一个内网一样。 比如在RA上可以 $ping 8 在ping的过程中,在任意一个网关上用tcpdump嗅探 #tcpdump -i eth0 可以看到这样的包 IP 8 8:icmp 64:echo request seq 10 IP 9 0: ESP(spi=0xeb73b78b,sed=0xa) IP 8 8: ESP(spi=0x1601e0bd,sed=0xb) 可以看到两个网关已经用ESP在通讯,说明成功。另外,这一行 include /etc/ipsec.d/examples/no_oe.conf意为关闭Opportunistic Encryption在你不知道她到底做了什么之前,还是关掉她为好,打开no_oe.conf文件,发现其内容如下,我们将在本文的第五部分讨论这个话题。conn blockauto=ignoreconn privateauto=ignoreconn private-or-clearauto=ignoreconn clear-or-privateauto=ignoreconn clearauto=ignoreconn packetdefaultauto=ignore二、 x.509证书认证的配置 x.509证书方式当然更灵活,要是VPN的客户比较多,总不能,每个都记住长长的rsasig吧。使用x.509证书认证,我们首先需要装上openssl(现在的Linux基本自带,没有的下一个装上)。 1)然后,找到f文件,这个文件保存着对openssl证书生成的默认值,她的位置一般为: Debian: /etc/ssl/f RedHat: /usr/share/ssl/f 用编辑器打开,变量名目繁多,比较有用的有 default_days,证书失效的天数,默认一般为365天,改为3650,这样十年才过期。 default_bits,密钥长度,默认为1024,你可以改为2048,更安全,当然速度也更慢 req_distinguished_name,默认的信息设置,如果你和我一样闲每次去生成密钥的时候去填的麻烦,就改之。 2)建一个目录来放你的CA,我们这里用/root/ca,记的把他的权限设置为700,你不希望其他用户可以看到你的私钥吧。 3)找到CA.sh脚本的位置,在不同系统上稍有不同 Debian: /usr/lib/ssl/misc/CA.sh RedHat: /usr/share/ssl/misc/CA 编辑她,把DAYS=-days 365的365改成你希望的数值,注意要比f中的default_days要大,当时也不要太大,一般为15年到20年就好了。 4)生成证书 /ca$/usr/lib/ssl/misc/CA.sh -newca ;生成一个待签名的根证书,用她来给其他证书进行签名认证。默认生成在demoCA目录下的cacert.pem文件(在f中的 CA_default子段设置)下。输入的密码为用来生成其他证书的密码。-sign的时候用。 /ca$openssl ca -gencrl -out crl.pem 生成一个与根证书相对应的crl文件 然后开始生成给主机用的证书 /ca$/usr/lib/ssl/misc/CA.sh -newreq 生成待签名认证的证书,默认名字为newreq.pem,输入的密码用在填些/etc/ipsec.secrets中。 /ca$/usr/lib/ssl/misc/CA.sh -sign 对证书进行签名认证,默认名字为newcert.pem /ca$/usr/lib/ssl/misc/CA.sh -verify 认证一下 然后重命名文件 ca$mv newcert.pem ora92.pem ca$mv newreq.pem ora92.key /别搞反了,小的那个文件是key,另外如果要生成的主机证书,填入的信息相同可能出错 用同样的方法在rightvpn主机上生成vpn.pem和vpn.key文件。这样我们就有了同样的根证书生成的两个证书文件。 把文件拷贝到相应的位置: 5)在Left主机主机上 ora92:/ca#cp ora92.key /etc/ipsec.d/private ora92:/ca#cp ora92.pem /etc/ipsec.d/certs ora92:/ca#cp demoCA/cacert.pem /etc/ipsec.d/cacerts ora92:/ca#cp crl.pem /etc/ipsec.d/crls/crl.pem 用安全的渠道(scp或软盘,别用ftp)把ora92.pem文件拷贝到right上 ora92:/ca#scp /etc/ipsec.d/certs/ora92.pem root0:/etc/ipsec.d/certs/ora92.pem 6)在right主机主机上 也拷贝到正确的地方 vpn:/ca#cp vpn.key /etc/ipsec.d/private vpn:/ca#cp vpn.pem /etc/ipsec.d/certs vpn:/ca#cp crl.pem /etc/ipsec.d/crls vpn:/ca#cp cacert.pem /etc/ipsec.d/cacerts/cacert.pem 用安全的渠道(scp或软盘,别用ftp)把vpn.pem文件拷贝到left上 vpn:/ca#scp /etc/ipsec.d/certs/vpn.pem root9:/etc/ipsec.d/certs/vpn.pem 7) 配置ipsecleft上:首先是/etc/ipsec.secrets加上 : RSA /etc/ipsec.d/private/ora92.key password password就是生成主机密钥的时候输入的密码Right上:首先是/etc/ipsec.secrets加上 : RSA /etc/ipsec.d/private/vpn.key password password就是生成主机密钥的时候输入的密码 这里有几个密码要搞清楚,在生成根证书的时候输入密码是用来生成其他证书的,CA.sh -sign的时候要填入,ipsec.secrets填入的密码是CA.sh -newreq时候输入的密码。 然后当然就是/etc/ipsec.conf在本例子中的ipsec.conf分别为#Left(ora92)version 2.0config setup interfaces=%defaultroute nat_traversal=yesconn %default authby=rsasig compress=yes leftrsasigkey=%cert rightrsasigkey=%cert keyingtries=1 disablearrivalcheck=noinclude /etc/ipsec.d/examples/no_oe.confconn net-to-net left=9leftsubnet=/24 leftcert=ora92.pem right=0rightcert=vpn.pem rightsubnet=/24 pfs=yes auto=add#Right(vpn)version 2.0config setup interfaces=%defaultroute nat_traversal=yesconn %default authby=rsasig compress=yes leftrsasigkey=%cert rightrsasigkey=%cert keyingtries=1 disablearrivalcheck=noinclude /etc/ipsec.d/examples/no_oe.confconn net-to-net left=9 leftsubnet=/24 leftcert=ora92.pem right=0 rightsubnet=/24 rightcert=vpn.pem pfs=yes auto=add 然后分别重新启动IPSec服务 #ipsec setup restart 在right上启动连接 #ipsec auto -up net-to-net 如果一切正确,两个子网之间就可以互相通讯了。三、RoadWarrior模式的配置 上面我们做的是网关对网关的配置,我们在应用中还有一种情况,员工带着比较本出差或在家,需要用IPSec连接到公司的网络。这个就是RoadWarrior模式。 我们回到1)中RSA Keys配置的例子,在两台主机上添加这样的配置字段#RoadWarrior,Road-Client的机子,比如到处带着跑的笔记本,我们这里用rightconn road left=0 #如果是动态ip地址,可以填上%defaultroute leftnexthop=%defaultroute leftid=vpn leftrsasigkey=0sAQ. #本机的RSA Key right=9 rightsubnet=/24 rightid=ora92 rightrsasigkey=0sAQO. #远程机子的RSA Key auto=add #Host-Server 主机,我们这里用ora92conn road left=9 leftid=ora92 leftsubnet=/24 leftrsasigkey=0sAQ. rightnexthop=%defaultroute right=%any #不知道要传入的连接,所以用%any rightid=vpn rightrsasigkey=0sAQ. auto=add可以看出,RoadWarrior模式和Net-to-Net模式配置的区别,关键就是在于net-to-net模式Left和Right是相同的,通讯的主机处于固定的位置上,而RoadWarrior配置,Left就是自己(Local),Right就是远程主机(Remote)。所以看上去,两个的 Left和Right值是相反的。这个是配置的关键。然后在RoadWarrior的主机上运行 ipsec auto -up road更改配置文件后记的要#ipsec setup restart重启Openswan Pluto。接着就可以在right-vpn主机上ping到ora92下的内网了 right$ping 8同样的可以在ora92上 ora92#tcpdump -i eth0看到ESP包的交换四、下面我们给出使用RoadWarrior和使用证书的配置#RoadWarrior(right)conn road left=0 leftnexthop=%defaultroute leftcert=vpn.pem leftid=vpn right=9 rightcert=ora92.pem rightsubnet=/24 rightid=ora92 pfs=yes auto=start#Host(ora92)conn road left=9 leftcert=ora92.pem leftsubnet=/24 leftid=ora92 rightnexthop=%defaultroute right=%any rightcert=vpn.pem rightid=vpn pfs=yes auto=start使用上面的配制后在right主机上 vpn#ping 8 五、基于预共享密钥认证方式NettoNet配置1、配置/etc/ipsec.conf(左右网关的ipsec.conf配置一样)version 2.0config setupnat_traversal=yesnhelpers=0include /etc/ipsec.d/examples/no_oe.confconn net auto=start right=0 compress=no pfs=no left=9 authby=secret ikelifetime=3600 keylife=28800 dpddelay=30 dpdtimeout=120 dpdaction=restart rekey=yes keyingtries=0 rightsubnet=/24 leftsubnet=172.16.50/242、修改/etc/ipsec.secrets,左右网关上均加入如下行:9 0 : PSK 123456 123456:为预共享密钥六、Ipsec和l2tp配合使用1、修改/etc/ipsec.conf加入 conn L2TP auto=start right=9 rightnexthop=%defaultroute compress=no pfs=no left=%any authby=secret ikelifetime=3600 keylife=28800 dpddelay=30 dpdtimeout=120 dpdaction=restart rekey=yes keyingtries=0 rightprotoport=UDP/0 leftprotoport=UDP/17012、修改/etc/ipsec.secrets加入如下一行:9 %any : PSK abcd1234abcd1234:预共享密钥 3、新建文件/etc/ppp/options.l2tp,加入如下:ipcp-accept-localipcp-accept-remote#ms-dns 0#ms-dns 15authcrtsctsidle 1800mtu 1200mru 1200nodefaultroutedebuglockproxyarpconnect-delay 5000nologfd 4、修改/etc/ppp/chap-secrets加入:# Secrets for authentication using CHAP# client serversecret IP addressesnetsword * xiaobai * 5、修改/etc/l2tp/l2tp.conf加入: globalauth file = /etc/ppp/chap-secretslns defaultexclusive = yesip range = 00-10拨入后分配的网址local ip = 9length bit = yesrequire chap = yesrefuse pap = yesrequire authentication = yespppoptfile = /etc/ppp/options.l2tp6、启动ipsec和l2tp服务#ipsec setup start#/usr/local/bin/l2tp 七.Windows客户端的配置 让windows客户端可以连接上Linux的IPSec网关是很有用的,毕竟桌面还是Windows比较的多。 1)当然是让Openswan的主机运行正常运行起来,我们这里使用,上文最接近的那个road和road-net配置。同时要注意Windows的IPSec服务已经运行。 2)生成证书 生成新的主机密钥对win.pem和win.key,然后,我们需要把她转化成Windows可以识别的p12格式:/ca$ openssl pkcs12 -export -in win.pem -inkey win.key -certfile demoCA/cacert.pem -out win.p12获得根证书的信息,记下来,下面要用到subject= /C=CN/ST=Fujian/L=Xiamen/O=Jimei University/OU=Chengyi College/CN=jianqiu/emailAddress= 3)所需工具http:/vpn.ebootis.de/package.zip下载Marcus Mller的ipsec.exe工具,解压到一个目录中,本例使用d:ipsec/ca$ openssl x509 -in demoCA/cacert.pem -noout -subject得到如下的信息 4)创建需要的控制台 运行mmc-添加删除管理单元-添加-IP安全策略管理-选择本地计算机-完成; 添加删除管理单元-添加-证书-计算机账户-本地计算机-完成。 5)添加证书 在刚才我们新建的工作台的证书上,选择个人-所以任务-导入,然后把win.p12导入即可。 6)安装IPSec工具 首先需要安装ipsecpol.exe(Windows 2000)或ipseccmd.exe(Windows XP,在Windows安装光盘的UPPORTTOOLS目录下,setup选择完全安装),在/default.aspx?scid=kb;en-us;838079还有一片关于XP SP2的这些个附加工具的说明。 随后编辑d:ipsecipsec.conf文件,把我们上面得到的证书的信息填入rightca,也可以用mmc的证书页面查看,编辑好的ipsec.conf看起来是这个样子的。conn roadwarrior left=%any right= rightca=C=CN,S=Fujian,L=Xiamen,O=Jimei University,OU=Chengyi College,CN=jianqiu,E= network=auto auto=start pfs=yesconn roadwarrior-net left=%any right= rightsubnet=/44 rightca=C=CN,S=Fujian,L=Xiamen,O=Jimei University,OU=Chengyi College,CN=jianqiu,E= network=auto auto=start pfs=yes如果,你想要加密所有和的连接conn roadwarrior-all left=%any right= rightsubnet=* rightca=C=CN,S=Fujian,L=Xiamen,O=Jimei University,OU=Chengyi College,CN=jianqiu,E= network

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论