- IPSec为一组协议,包含两大部分:
- 安全交换要加密数据流的密钥,包括IKE(Internet Key Exchange)协议;
- 保护数据流,包括ESP(Encapsulating Security Payload)或者AH(Authentication Header)。
- AH为IP 50号,由于AH只可以保障数据完整性,而不能做加密。所以现在用途较少。
IP 51号,其封装格式有两种模式:Transport Mode和Tunnel Mode
- Transport模式:节省了20字节的IP报头,但却要将原IP报文拆分,并且需要读取器协议字段。GRE over IPSec协议、PC2PC可以使用该模式。
- Tunnel模式:不需要拆包,直接可以封装,其效率较高。site to site VPN需要这种模式。
- SPI:安全参数索引;
- 序列号:防止重复攻击
- Next header:相当于IP报文的协议号字段。
- Auth data:存放其hash值。
IKE,网络密钥交换协议,通过UDP 500端口发送,解决IPSec自动生成、交换key的问题。IKE拥有的协议有ISAKMP(Internet Security Association Key Management Protocol),SKEME和Oakley,SKEME和Oakley组成ISAKMP。
- 该阶段用于建立IKE SA
- 为第二阶段交换key材料,该key为数据实际加密的key。
- 分为两种模式:主模式和激进模式。先只讨论主模式。
- 协商IKE SA以及交换cookie
- SA为匹配在策略提议中的5元组:加密算法、散列算法、DH、认证方法(有3种:PSK,PKI以及RSA,这里讨论预共享密钥)和IKE SA寿命。
- Cookie为源目IP,源目端口,本地生成的随机数,日期和时间的HASH值。其作为IKE协商的唯一标识,防止DOS攻击。
- DH密钥生成与交换,根据DH算法,双方分别会生成私钥,分别计算出各自的公钥,然后进行交换。与此同时交换的还有双方产生的随机值。
- 根据对方的公钥,算出双方相等的密值后,连同与共享密钥生成一个skeyID(预共享密钥, 双方的随机值),作为第1阶段5,6报文的hash密钥。然后根据推算,算出一下几个skyID:
- skyID_a(skeyID,DH计算出的密值,Cookie):第二阶段HASH密钥(HMAC中的密钥);
- skeyID_d(skeyID,DH计算的密值):用来协商后续IPSec SA加密使用的密钥;
- skeyID_e(skeyID,DH计算的密值,Cookie):为第一阶段5,6报文消息以及第二阶段的密钥
- 用于身份验证,交换身份ID(IP地址或者hostname)等其他已经协商好的信息的hash值(skeyID,彼此公钥,Cookie,SA要素)。
- 所有负载已用skeyID_e进行加密。
- 消息传递
- DH算法
- IKE 过程
该阶段会利用IKE SA的保护,协商IPSec SA来保护IPSec数据:使用AH还是ESP,hash是MD5还是SHA,是tunnel还是transport模式。协商一致后,会建立IPSec SA。
- 交换信息,包含HASH,IPSEC策略提议,NONCE和可选的DH,身份ID。
- HASH:给接受方作完整性检查,用于再次认证对等体(必须)。和第一阶段5&6消息一样。
- IPSec策略提议:其中包括了安全协议(AH或者ESP),SPI,散列算法,隧道模式,IPSEC SA生命周期(必须)。
- NONCE:用于防重放攻击,还被用作密码生成的材料。仅当启用PFS时用到。
- ID:描述IPSEC SA是为哪些地址、协议和端口建立的。
- PFS (Perfect Forward Secrecy,利用DH交换,可选):用了PFS后,就会在第二阶段重新DH出个数据加密KEY。新key和旧key没有关系,每次协商IPSec SA会重新生成,进一步提高安全性。
- DH:重新协商IPSec SA使用(可选)。
- SA由SPI(安全参数索引,唯一标识一个SA,在AH和ESP头中传输),目的IP地址、安全协议号(AH或者ESP)。
发送方发送第三条消息,其中包含一个HASH,其作用是确认接受方的消息以及证明发送方处于Active状态(表示发送方的第一条消息不是伪造的,确认作用ACK)
R1
interface Loopback0
ip address 1.1.1.1 255.255.255.0
interface FastEthernet0/0
ip address 12.1.1.1 255.255.255.0
no shutdown
ip route 0.0.0.0 0.0.0.0 12.1.1.2
--------------------------------------------------
R2
interface FastEthernet0/0
ip address 12.1.1.2 255.255.255.0
no shutdown
interface FastEthernet0/1
ip address 23.1.1.2 255.255.255.0
no shutdown
--------------------------------------------------
R3
interface Loopback0
ip address 3.3.3.3 255.255.255.0
interface FastEthernet0/1
ip address 23.1.1.3 255.255.255.0
no shutdown
ip route 0.0.0.0 0.0.0.0 23.1.1.2
- IPSec配置:
R1
crypto isakmp policy 100
encr 3des
hash md5
authentication pre-share
group 2
lifetime 222
crypto isakmp key p1_key address 23.1.1.3
crypto ipsec transform-set r1_set esp-3des esp-md5-hmac
mode tunnel
access-list 100 per ip 1.1.1.0 0.0.0.255 3.3.3.0 0.0.0.255
crypto map r1_map 10 ipsec-isakmp
set peer 12.1.1.1
set transform-set r1_set
match address 100
int fa0/0
crypto map r1_map
--------------------------------------------------
R3
crypto isakmp policy 100
encr 3des
hash md5
authentication pre-share
group 2
lifetime 222
crypto isakmp key p1_key address 12.1.1.1
crypto ipsec transform-set r3_set esp-3des esp-md5-hmac
mode tunnel
access-list 100 per ip 3.3.3.0 0.0.0.255 1.1.1.0 0.0.0.255
crypto map r3_map 10 ipsec-isakmp
set peer 12.1.1.1
set transform-set r3_set
match address 100
int fa0/1
crypto map r3_map
- 由于单独的IPSec协议需要配置感兴趣流,而且没有办法通告彼此的路由,而GRE技术又是明文传递。将二者结合,解决了传输路由和私密的问题。
- 拓扑以及基本配置如上图所示。
- GRE配置:
R1:
interface Tunnel0
ip address 192.168.1.1 255.255.255.0
tunnel source FastEthernet0/0
tunnel destination 23.1.1.3
router eigrp 1
network 1.1.1.1 0.0.0.0
network 192.168.1.1 0.0.0.0
--------------------------------------------------
R3:
interface Tunnel0
ip address 192.168.1.3 255.255.255.0
tunnel source FastEthernet0/1
tunnel destination 12.1.1.1
router eigrp 1
network 3.3.3.3 0.0.0.0
network 192.168.1.3 0.0.0.0
- IPSec配置:
R1:
crypto isakmp policy 100
encr 3des
hash md5
authentication pre-share
group 2
lifetime 222
crypto isakmp key p1_key address 23.1.1.3
crypto isakmp keepalive 10
crypto ipsec transform-set r1_set esp-3des esp-md5-hmac
mode transport
access-list 100 permit gre 12.1.1.0 0.0.0.255 23.1.1.0 0.0.0.255
crypto map r1_map 10 ipsec-isakmp
set peer 23.1.1.3
set transform-set r1_set
match address 100
int fa0/0
crypto map r1_map
--------------------------------------------------
R3:
crypto isakmp policy 100
encr 3des
hash md5
authentication pre-share
group 2
lifetime 222
crypto isakmp key p1_key address 12.1.1.1
crypto isakmp keepalive 10
crypto ipsec transform-set r3_set esp-3des esp-md5-hmac
mode transport
crypto ipsec profile r3_prof
set transform-set r3_set
interface Tunnel0
tunnel protection ipsec profile r3_prof
其中,R1和R3采用了不同的部署方式,分别使用crypto map和crypto ipsec profile方式。
- 由于点到点VPN无法建立实现多点的通信,需要DMVPN技术来进行支持。
- 拓扑如图,三台路由器模拟三个站点,Fa0/0口模拟运营商网络,环回口模拟内网
- 基本配置为:
R1:
interface Loopback0
ip address 1.1.1.1 255.255.255.255
interface FastEthernet0/0
ip address 123.1.1.1 255.255.255.0
no shutdown
--------------------------------------------------
R2:
interface Loopback0
ip address 2.2.2.2 255.255.255.255
interface FastEthernet0/0
ip address 123.1.1.2 255.255.255.0
no shutdown
--------------------------------------------------
R3:
interface Loopback0
ip address 3.3.3.3 255.255.255.255
interface FastEthernet0/0
ip address 123.1.1.3 255.255.255.0
no shutdown
GRE配置:
R1:
interface Tunnel0
ip address 192.168.1.1 255.255.255.0
ip nhrp map multicast dynamic
ip nhrp network-id 10
tunnel source FastEthernet0/0
tunnel mode gre multipoint
tunnel key 12345
router ospf 1
network 1.1.1.1 0.0.0.0 area 0
network 192.168.1.1 0.0.0.0 area 0
--------------------------------------------------
R2:
interface Tunnel0
ip address 192.168.1.2 255.255.255.0
ip ospf network broadcast
ip ospf priority 0
ip nhrp map 192.168.1.1 123.1.1.1
ip nhrp map multicast 123.1.1.1
ip nhrp network-id 10
ip nhrp nhs 192.168.1.1
tunnel source FastEthernet0/0
tunnel mode gre multipoint
tunnel key 12345
router ospf 1
network 2.2.2.2 0.0.0.0 area 0
network 192.168.1.2 0.0.0.0 area 0
--------------------------------------------------
R3:
interface Tunnel0
ip address 192.168.1.3 255.255.255.0
ip ospf network broadcast
ip ospf priority 0
ip nhrp map 192.168.1.1 123.1.1.1
ip nhrp map multicast 123.1.1.1
ip nhrp network-id 10
ip nhrp nhs 192.168.1.1
tunnel source FastEthernet0/0
tunnel mode gre multipoint
tunnel key 12345
router ospf 1
network 3.3.3.3 0.0.0.0 area 0
network 192.168.1.3 0.0.0.0 area 0
三台路由器的IPSec配置:
crypto isakmp policy 100
encr 3des
hash md5
authentication pre-share
group 2
crypto isakmp key p1_key address 0.0.0.0
crypto isakmp keepalive 10
crypto ipsec transform-set r_trans esp-3des esp-md5-hmac
mode transport
crypto ipsec profile r_prof
set transform-set r_trans
interface Tunnel0
ip mtu 1440
tunnel protection ipsec profile r_prof