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