VPN(Virtual Private Network)的概念,我觉得《IPSec 新一代因特网安全标准》(IPSec: the new security standard for the Internet, intranets, and virtual private networks,机械工业出版社出版)这本书中的一句话概括得极好:“VPN是‘虚拟的’,因为它不是一个物理的、明显存在的网络。两个不同的物理网络之间的连接由通道来建立。VPN是‘专用的’,因为为了提供机密性,通道被加密。VPN是‘网络’,因为它是联网的!我们在连接两个不同的网络,并有效地建立一个独立的、虽然是虚拟的实体:一个新的网络。”
说到VPN就绕不开IPSec,IPSec可以说是VPN架构的基石。除了IPSec,也可以通过L2TP、PPTP协议来走VPN,但在绝大部分的VPN中都是用IPSec来实现的。
IPSec提供了这么几个基本功能:
数据机密性(Data confidentiality)-IPSec传送者在将数据发送并穿越网络之前就加密数据包。
数据完整性(Data integrity)-IPSec接收者在收到IPSec传送者发送来的数据时,可以验证数据包以确保数据在传送过程中未被改动。
数据源验证(Data origin authentication)-IPSec接收者可以验证发送IPSec数据包的源头。此服务依附于数据完整性服务。
反重播(Anti-replay)-IPSec接收者可以检测并拒收重播数据包。
IPSec的两个重要组成部件AH和ESP:
AH(Authentication Header,验证头) :AH提供的功能包括了数据完整性、数据源验证以反重播(要注意的是:AH没有提供数据机密性服务)。
ESP(Encapsulating Security Payload ,封装安全载荷):除了具有AH的所有功能外,还可以保证数据的机密性。
下面是和IPSec有关的几个重要概念:
两种传送模式(Transport Mode):
传送模式(transport mode)与通道模式(tunnel mode)。两者的主要区别:传送模式用来保护上层协议;而通道模式用来保护整个IP数据包。
加密算法:
DES Algorithm和Triple DES Algorithm (3DES)。DES是56位的加密算法,3DES为加密强度三倍于DES,即168位的加密算法。
密钥交换算法:
DH(Diffie-Hellman key agreement)和RSA(Rivest, Shamir, and Adelman Signatures )。允许通话双方通过一个不安全的通信信道建立起一个可以被加密算法(如DES、MD5)所使用的共享安全密钥(shared secret key)。Cisco路由器和PIX防火墙中支持768位(Group 1)和1024位(Group 2)的DH组。
验证算法:
MD5(Message Digest 5)和SHA-1(Secure Hash Algorithm-1)。又称为HASH算法,基本原理是对一个任意长度的输入值进行处理,产生一个固定长度的输出信息(称为摘要,digest)。HMAC-MD5和HMAC-SHA是MD5和SHA的HMAC(Hashed message authentication codes )变体,比MD5和SHA更为强壮,HMAC-MD5产生的摘要长度为96位,而HMAC-SHA产生的摘要长度为128位。
IKE(Internet Key Exchange,Internet密钥交换):用于验证IPSec的对端体,协商IKE SA和IPSec SA(Security Association)的安全策略,验证加密材料的建立。
SA(Security Association,安全联盟):两个通信实体经协商建立起来的一种协定,规定了通信实体将怎样利用安全服务来实现安全的通讯。
接下来是一个IPSec会话的五个主要过程:
1、定义哪些数据要进行安全传输;
2、IKE阶段一(Phrase One):通过协商IKE SA来验证IPSec对端体,并建立起一个可以在IKE阶段二(Phrase Two)协商IPSec SA的安全通道;
3、IKE阶段二(Phrase Two):IKE协商IPSec SA的参数并在对端体之间建立起匹配的IPSec SA;
4、数据传输:IPSec通道被正确地建立起来,数据在IPSec对端体之间进行安全传输;
5、IPSec通道被终止。
下面结合一个实例来说明在PIX Firewall上配置VPN的过程,设备为两个PIX,拓扑图大致如下:
(Inside:10.1.1.1)PIX1(Outside:192.168.1.52)----(cloud)----(Outside:172.22.112.12)PIX2(Inside:172.16.1.1)
IKE阶段一(Phrase One)
IKE Phrase 1所要做的主要任务有--
* 打开IKE(这里是在outside接口上打开IKE)。
以上定义的相对应语句:
isakmp enable outside
* 定义密钥分发方式:可以用手工分发,也可以用CA服务器来分发。我们这里采用手工分发方式;
* 定义验证方式:可以在pre-shared密钥或者RSA signatures中选择。我们这采用pre-shared密钥,密钥为“securevpn”。
* 定义对端IPSec设备的IP地址或者主机名。这里即为:172.22.112.12。
以上定义的相对应语句:
isakmp identity address
isakmp key securevpn address 172.22.112.12 netmask 255.255.255.255
!--- securevpn为pre-share key,172.22.112.12为对端IPSec设备IP地址。
* 定义ISAKMP策略(注:在Cisco设备中,ISAKMP和IKE是同义)。这里包括了定义加密算法(这里用DES),定义HASH算法(这里用MD5),以及定义IKE SA的生存期(这里定义为1000秒,此项可选)。
以上定义的相对应语句:
isakmp policy 1 authentication pre-share
!--- 定义验证方式
isakmp policy 1 encryption des
!--- 定义加密算法
isakmp policy 1 hash md5
!--- 定义HASH算法
isakmp policy 1 group 1
!--- 定义密钥交换算法
isakmp policy 1 lifetime 1000
!--- 定义IKE SA生存期
IKE阶段二(Phrase Two)
IKE Phrase 2所要做的主要任务有--
* 定义哪些流量需要进行安全传输,也就是定义interesting traffic的过程,用ACL来定义:
以上定义的相对应语句:
access-list 101 permit ip 10.1.1.0 255.255.255.0 172.16.1.0 255.255.255.0
!--- 允许10.1.1网段的机器访问172.16.1网段,172.16.1网段为对端PIX2的内网地址。
* 定义传送集(Transform Set)。记住,Transform Set=AH+ESP+Transport Mode(这里定义为esp-des和esp-md5-hmac)。
以上定义的相对应语句:
crypto ipsec transform-set chevelle esp-des esp-md5-hmac
!-- chevelle为transform set名,transform set定义了采用ESP,加密算法为DES,验证算法为HMAC-MD5。
* 定义crypto map,并将crypto map映射到相应接口上。(这里定义了使用ISAKMP来进行Phrase 2协商,interesting traffic为ACL 101决定的traffic,对端IPSec IP地址为172.22.112.12,并将名为chevelle的transform set绑定到此crypto map上)。
以上定义的相对应语句:
crypto map transam 1 ipsec-isakmp
!--- 使用ISAKMP进行Phrase 2协商
crypto map transam 1 match address 101
!--- interesting traffic由ACL 101决定
crypto map transam 1 set peer 172.22.112.12
!--- 对端IPSec IP地址
crypto map transam 1 set transform-set chevelle
!--- 将chevelle绑定
crypto map transam interface outside
!--- 将crypto map映射到outside接口
另外几个很容易忽视但绝不能忘记的配置:
nat (inside) 0 access-list 101
!--- 让ACL 101的流量不进行NAT操作
sysopt connection permit-ipsec
!--- 忽略对IPSec流量的ACL或conduit检查。这句绝对重要!
route outside 0.0.0.0 0.0.0.0 192.168.1.1 1
!--- 定义缺省路由。走VPN之前先保证你的网络是通的
最后是完整的配置(这个例子是Cisco站上的,我上面做了分解并加了注释):
PIX Version 5.1(5)
nameif ethernet0 outside security0
nameif ethernet1 inside security100
enable password ****** encrypted
passwd ****** encrypted
hostname Maui-PIX-01
fixup protocol ftp 21
fixup protocol http 80
fixup protocol h323 1720
fixup protocol rsh 514
fixup protocol rtsp 554
fixup protocol smtp 25
fixup protocol sqlnet 1521
names
access-list 101 permit ip 10.1.1.0 255.255.255.0 172.16.1.0 255.255.255.0
pager lines 24
logging on
no logging timestamp
no logging standby
no logging console
no logging monitor
no logging buffered
no logging trap
no logging history
logging facility 20
logging queue 512
interface ethernet0 auto
interface ethernet1 auto
mtu outside 1500
mtu inside 1500
ip address outside 192.168.1.52 255.255.255.0
ip address inside 10.1.1.1 255.255.255.0
no failover
failover timeout 0:00:00
failover ip address outside 0.0.0.0
failover ip address inside 0.0.0.0
arp timeout 14400
nat (inside) 0 access-list 101
route outside 0.0.0.0 0.0.0.0 192.168.1.1 1
timeout xlate 3:00:00 conn 1:00:00 half-closed 0:10:00 udp 0:02:00
timeout rpc 0:10:00 h323 0:05:00
ti