Openswan介绍

来源:互联网 发布:四川网络教育平台登录 编辑:程序博客网 时间:2024/06/13 23:53
  • Openswan

IPSec VPN中最著名的人物应属Openswan。它自带有IPsec内核堆栈KLIPS,更方便的是可以使用2.6内核中的堆栈代码。如果使用2.6及以上内核,不用打补丁NAT就能启作用。Openswan已经内建对x.509和NAT Traversal的支持,使用起来非常的方便。 下载openswan软件包后只要make programs install就可以搞定,然后用ipsec verify命令来检验安装是否成功。

Openswan支持net-to-net和RoadWarrior两种模式。net to net模式是网关对网关的通讯。所在的Linux主机为通讯的网关,作为其子网的出口,对于子网的用户来所是透明的,远程的子网在通讯后可以像自己的局域网一样的访问。RoadWarrior模式客户端对网关的连接方式,例如公司员工带着笔记本电脑出差或在家,需要用IPSec连接到公司的内部网络。

为了讲述方便,假设我们现在有四台Linux主机。也你可以用VMWare架设虚拟主机方法来实现。网络拓朴示意图如下:

图15.19 VPN隧道技术

网络服务器Left的内网接eth0接口,地址是192.168.1.2,外网接eth1接口,地址是192.168.0.2,子网客户机PC A属于192.168.1.0/24这个局域网,IP地址为192.168.1.3。网络服务器Right的内网接eth0接口,地址是192.168.2.2,外网接eth1接口,地址是192.168.0.3,网客户机PC B属于192.168.2.0/24这个局域网,IP地址为192.168.2.3。

一般来讲我们主要从认证、密钥和加密这三个方面考虑安全机制。使用者与设备身份认证技术最常用的是用户名与密码或令牌认证等方式。通过VPN接入设备与AAA服务器、LDAP服务器或者动态密码服务器集成提高认证的准确性与安全性。密钥管理主要有SKIP和ISAKMP两种技术,他们的主要任务是保证在公用数据网上安全地传递密钥而不被第三方窃取。在SKIP中,工作密钥是通过种子密钥和随机数经过Diffie-Hellman算法计算而来,真正加密数据的密钥是不在网络上明文传输的,而且在一个新的连接中工作密钥也是不一样的。在ISAKMP中,双方都有公钥和私钥两把密钥通过双钥加密的技术发送给对方。加解密技术是数据通信中一项较成熟的技术,分为对称式加密和非对称式加密。对称式加密算法用的比较广泛的有DES、3DES和AES等,AES比DES支持更长的密钥,比DES具有更强的安全性和更高的效率。非对称加密算法中加密和解密使用不同的一对key。一个叫公钥,一个叫私钥,公钥与私钥是有关系的。用公钥加密的数据包需要用其对应的私钥解密才能得到明文。非对称加密算法例如RSA,它比对称加密要慢100到1000倍。VPN可直接利用上述现有加解密技术。

Openswan支持许多不同的安全认证方式,包括RSA keys、pre-shared keys或x.509证书方式,主要有ipsec.conf和ipsec.secrets两个配置文件。

RSA密钥方式:

在Left和Right服务器里,分别执行以下命令目的是生成一个新的RSA密钥对。

ipsecnewhostkey –output /etc/ipsec.secrets

然后

Left:ipsecshowhostkey --left>> /etc/ipsec.conf

Right:ipsecshowhostkey  --right >rightrsasigkey.tmp

scprightrsasigkey.tmproot@left:/etc/rightrsasigkey.tmp

Left:cat  /etc/rightrsasigkey.tmp>> /etc/ipsec.conf

scp /etc/ipsec.conf  root@right:/etc/ipsec.conf

我们使用上面的命令来来回回地拷贝,究竟是为什么?主要目的就是要在left服务器的ipsec.conf文件上要有right服务器的rsasigkey值,反之亦然。配置文件类似是这样的:

    ……

30 conn �fault

31             authby=rsasig

32             compress=yes

33

34 #关掉Opportunistic Encryption

35 include /etc/ipsec.d/examples/no_oe.conf

36

37 conn     net-to-net

    ……

61 left=192.168.0.2

62             leftsubnet=192.168.1.0/24

                ……

80             right=192.168.0.3

82 rightsubnet=192.168.2.0/24

    ……

92 leftrsasigkey=0sAQ...

93 rightrsasigkey=0sAQ...

    ……

110           auto=add

 

x.509数字证书方式:

基于PKI(Public Key Infrastructure,公钥基础设施)构架的x.509数字证书方式更灵活,不必要一个一个地都记住长长的rsasig。在ipsec.conf中需要填入以下信息:

leftrsasigkey=�rt

rightrsasigkey=�rt

letcert=xxx.pem

rightcert=xxxx.pem

虽然填入证书文件名就行,但是前期你是要做很多功课的。在Left服务器上使用openssl生成根证书、Left和Right服务器证书,把文件拷贝到ipsec.d下相应的目录下,并通过安全渠道(scp、软盘或ftp等方式)把证书等文件拷贝到Right服务器上。在完成了ipsec所属的两个配置文件的配置工作之后,我们就可以在两个服务器上用“ipsec auto --up network-to-network”命令启动VPN。

VPN的隧道建立过程是VPN A向VPN B发起连接请求,B收到后初始化ipsec隧道的建立;IKE第一阶段认证对等体,并为ipsec协商建立一条安全隧道;IKE第二阶段完成ipsec协商,并建立ipsec隧道;一旦隧道被建立,可以开始被保护的VPN通信;当没有流量使用ipsec时废弃隧道,一种是明确地废弃隧道,另一种要是通过SA的生存周期超时来废弃隧道。我们使用ipseceroute或ipsec look命令检查隧道建立情况。如果命令返回信息里有了tun信息,我们就在192.168.1.0/24和192.168.2.0/24这两个局域网内的两个主机之间互相ping一下。嗯,没有ping通?这时候我们得用iptables检查一下防火墙的配置。

如果服务器开了iptables来做IP伪装(MASQUERADE)或NAT,就不能让MASQUERADE或NAT替你转发到Right服务器下的子网数据包,使用下面的命令防止nat竞争转发:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -d ! 192.168.2.0/24 -j MASQERADE

RoadWarrior模式呢?它与Net-to-Net模式的认证和配置方法很类似,只是配置内容项有所区别。因为通讯的主机处于固定的位置上,net-to-net模式Left和Right是相同的,而在RoadWarrior配置,Left就是自己(Local),Right就是远程主机(Remote)。所以我们看上去,两个配置文件的Left和Right值是相反的。这个是RoadWarrior配置的关键。

使用Windows系统的人很多,让windows客户端通过Linux的IPSec VPN网关进行网络访问是很非常有用的。在Windows上,下载ipsec工具,例如Marcus Müller的ipsec.exe和Linsys IPSec Tool的lsipsectool.exe等,然后生成和导入证书,配置和运行IPSec服务。记住密钥要转化成Windows可以识别的p12格式哦。