GRE与IPSec
1. GRE
1.1 GRE概述
GRE(Generic Routing Encapsulation,通用路由封装),是简单的VPN。GRE是第三层隧道协议,采用Tunnel(隧道)技术。
- 优点:支持IP网络作为承载网络、支持多种协议、支持IP组播,配置简单,容易部署
- 缺点:缺少保护功能,不能执行如认证、加密以及数据完整性检查这些任务
- 因为安全上的限制,GRE通常不能用作一个完整的VPN解决方案,然而它可以和其他解决方案结合在一起,例如IPsec,来产生一个极强大的、具有扩展性的VPN实施方案
1.2 GRE工作原理
隧道起点路由查找-->封装-->承载协议路由转发-->公网转发-->解封装-->隧道终点路由查找
1.3 报文格式
-
GRE在封装数据报文时。会添加GRE头部信息及新的IP头部信息
-
IP用协议号47标识GRE
-
GRE使用以太类型0x0800标识载荷协议为IP
1.4 配置命令
R1
interface Tunnel0/0/0 # 创建Tunnel隧道
ip address 192.168.3.1 255.255.255.0 # 隧道IP
tunnel-protocol gre # 配置隧道协议
source 100.1.1.1 # 隧道源地址
destination 100.1.1.2 # 隧道目的地址
ip route-staic 192.168.2.0 24 Tunnel 0/0/0 # 配置静态路由让数据报文从tunnel走
R2
interface Tunnel0/0/0 # 创建Tunnel隧道
ip address 192.168.3.2 255.255.255.0 # 隧道IP
tunnel-protocol gre # 配置隧道协议
source 100.1.1.2 # 隧道源地址
destination 100.1.1.1 # 隧道目的地址
ip route-staic 192.168.1.0 24 Tunnel 0/0/0 # 配置静态路由让数据报文从tunnel走
2. IPsec VPN
2.1 IPsec VPN概述
- VPN(Virtual Private Network),利用公共网络来构建的私人专用网络
- IPsec(IP security),是一组开放协议的总称。定义了保护数据私密性、保证数据完整性、确保数据合法性的方法,能做到:
- 数据的合法性:身份认证,确保信息来源的可信
- 数据的完整性:保证数据不被修改
- 数据的私密性:进行加密,确保数据的安全性
- 抗重放:接收方拒绝旧的或重复的数据包,防止恶意用户通过重复发送捕获到的数据包所进行的攻击
- 通过HASH来确保数据的合法性和完整性MD5、SHA-1
- 通过数据加密来实现数据传输的安全性:DES、3DES、AES
2.2 工作原理
2.2.1 VPN加密技术
- 对称密钥算法
- 加密方与解密方采用相同的密钥
- 用于加密用户数据
- DES、3DES、AES
- 非对称密钥算法
- 加密方通过对端的公钥加密数据
- 解密方通过自己的私钥解密数据
- 用于密钥交换和数字签名
- RSA、DH
- 散列函数
- MD5
- SHA1
- 用于验证数据完整性
2.2.2 IPsec协议/组件构成
- 算法:用于加密/解密或身份验证
- 安全协议:AH或ESP
- 密钥管理:ISAKMP
2.2.3 IPsec安全架构组成
- IKE(Internet Key Exchange,密钥交换协议),他的对象是密钥,用来保证密钥的安全传输、交换以及存储
- ESP(Encapsulation Security Payload,封装安全负载),对象为用户数据。对用户的数据进行封装,提供对数据进行认证和加密。通常采用3DES来加密,使用IP协议号50
- AH(Authentication Header),对象为用户数据,对用户数据进行封装,只提供认证,不加密。使用IP协议号51
2.2.4 IPsec VPN模式
-
传输模式(Transport Mode),封装的时候不会产生新的IP头部
-
隧道模式(Tunnel Mode),封装的时候产生新的IP头部
ESP协议
AH协议
2.2.5 SA安全联盟
- SA是隧道的一组规则,内容包括采用何种IPsec协议(AH还是ESP)、运行模式(传输模式还是隧道模式)、验证算法、加密算法、密钥生存期、抗重放窗口、计数器等,从而决定保护什么、如何保护以及谁来保护,可以说SA是构成IPsec的基础
- 安全联盟是单向的,两个对等体之间的双向通信至少需要两个SA
- ISAKMP SA(也叫IKE SA):定义了如何保护密钥。IKE SA要保护的对象是与密钥有关的,IKE并不直接关心用户数据,并且IKE SA是为安全协商IPsec SA服务的
- IPsec SA:定义了如何保护数据。IPSec SA直接为用户数据流服务。即IPsec SA中所有安全策略都是为了用户数据流的安全。每个IPsec对等体都有一对IPsec SA,一个去往远程目的地的,而另一个是从远程回来的,也就是一进一出,都存放在本地SA Database中
- 建立SA的方式
- 手工方式:SA所需全部信息都必须手工配置,比较复杂,适合对等体较少或小型静态环境
- IKE动态协商方式:只需要对等体之间配置好IKE协商参数,由IKE自动协商来创建和维护SA
2.2.6 隧道建立过程
IKEv1支持的身份验证方法
-
预共享密钥
这种方法要求对等体双方必须要有相同的预共享密钥(该密钥直接参与SKEYID的生成计算)。对于设备数量较少的VPN网络来说易于配置,在大型VPN网络中,不建议采用预共享密钥来做身份认证
-
RSA签名(数字证书)
数字证书需要由CA服务器来颁发。这种方法适用于大型动态的VPN网络,证书验证和预共享密钥验证的主要区别在于SKEYID的计算和交换身份信息,其他的交换和计算过程和预共享密钥验证方式相同
IKE协商过程
- 第一阶段:建立ISAKMP SA(IKE SA)
- 两种模式:
- 主模式(main mode):6条ISAKMP消息交互(针对站点到站点)
- 野蛮模式(aggressive mode):3条ISAKMP消息交互(针对远程访问)
- ISAKMP SA是为第二阶段的ISAKMP消息提供安全保护,对象为密钥,保证密钥安全
- 两种模式:
- 第二阶段:建立IPsec SA
- 一种模式
- 快速模式(quick mode):3条ISAKMP消息交互
- IPsec SA是为IP数据提供安全保护
- ISAKMP SA可以用来保护多个第二阶段的IPsec SA协商的通信过程
- 一种模式
IKE协商第一阶段过程分析(main mode)
- 第1、2个ISAKMP报文(协商加密算法、认证算法、认证方式和DH等)
- 用于交换并协商保护ISAKMP消息的安全参数以及对等体验证方式,包含加密算法、验证算法、验证方式、ISAKMP SA生存时间等安全策略信息(即SA载荷)。IPsec实体会选择双方都支持的安全策略信息。
- 路由器会将本地配置的所有ISAKMP策略放置在SA载荷中,发送给对端
- 对端路由器收到发来的安全策略后,会返回本地与之匹配的策略。若本地存在多条匹配策略,则选择序号最小的策略
- 用于交换并协商保护ISAKMP消息的安全参数以及对等体验证方式,包含加密算法、验证算法、验证方式、ISAKMP SA生存时间等安全策略信息(即SA载荷)。IPsec实体会选择双方都支持的安全策略信息。
- 第3、4个ISAKMP报文(算出共同密钥)
- 用于交互IKE的密钥交换载荷(Key exchange)(预共享密钥)和随机值载荷(nonce),此过程交互信息用于双方使用DH算法计算出共同的密钥材料。SKEYID为基础密钥,通过它推导出SKEYID_a(消息完整性验证密钥)和SKEYID_e(消息加密密钥)以及SKEYID_d,用于衍生出IPsec报文加密验证密钥
- 第5、6个ISAKMP报文(做身份验证,从此报文开始接下来的报文会被加密)
- 用于交换身份(Identification)载荷和HASH载荷
- 在前4条ISAKMP消息中通信双方并没有核实对方的合法性,很有可能与假冒者计算出公共密钥,从而与假冒者进行加密通信。因此要对双方的真实身份进行核实。由于已经计算出SKEYID_a和SKEYID_e,因此第5、6个ISAKMP报文是经过保护的,具体的策略为第1、2个ISAKMP报文协商的加密算法、验证算法以及刚计算出来的SKEYID_a和SKEYID_e
- 对端路由器收到第5条ISAKMP报文后,首先对消息进行验证再解密,会将收到的身份载荷与本地存储的信息一起进行HMAC计算,得到一个HASH值,再与收到的HASH载荷进行比较,如果不相等,则会中断协商过程,相等则发出第6条ISAKMP消息
- 对端验证本端合法后(即通过对比计算得到的HASH值与所收到的HASH值相等,及判断掌握了相同密钥),发送本地信息,供本端来验证。本端使用同样的方法判断对端是否掌握相同密钥,若判断为也合法,则第一阶段协商过程结束
- 用于交换身份(Identification)载荷和HASH载荷
IKE协商第二阶段过程分析(quick mode)
真正开始保护数据安全
- 第1、2、3个ISAKMP报文
- 第1个ISAKMP报文携带本端所配置的IPsec安全提议,即使用ESP还是AH、采用什么模式、加密IP数据使用什么加密算法、验证IP数据使用什么算法、对什么样的数据流进行保护等。以及身份认证信息,包括第一阶段计算出的密钥和第二阶段产生的密钥材料,可以再次认证对等体
- 对端收到发出的第二阶段第1个ISAKMP报文后,首先验证报文并解密,查看SA载荷中的策略是否与本地匹配,并在本地使用同样的方法计算HASH值,并与收到的HASH载荷进行比较(身份认证)。若相同,发出第2条ISAKMP消息,包含的载荷与收到的第1个ISAKMP报文一致,并生成IPsec密钥
- 本端收到发出的第二阶段第2个ISAKMP报文后,首先验证报文并解密,查看SA载荷中的策略是否与本地匹配,并在本地使用同样的方法计算HASH值,并与收到的HASH载荷进行比较。若相同,发出第3条ISAKMP消息,只包含HASH载荷,用以通知对端完成第二阶段IPsec SA协商并可以使用IPsec SA对IP数据进行保护
2.3 配置步骤
- 配置网络可达
- 匹配感兴趣ACL
- 配置第一阶段和第二阶段
- 创建安全策略
- 应用安全策略
实验拓扑
R2配置
- 匹配感兴趣流
acl number 3000
rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255
-
第一阶段第二阶段均有默认的安全策略,故不需要配置也能协商成功
故本实验第一阶段只配置了对等体,第二阶段只配置了安全策略名称
ike peer huawei v1 # 定义对等体名字,ike版本
pre-sha huawei # 配置预共享密钥
remote-address 34.1.1.4 # 对端ip
ipsec proposal tran1 # 第二阶段
- 配置安全策略及应用安全策略
ipsec policy vpn 1 isakmp
security acl 3000
ike-peer huawei
proposal tran1
interface GigabitEthernet0/0/1
ip address 23.1.1.2 255.255.255.0
ipsec policy vpn
- 应用安全策略
interface GigabitEthernet0/0/1
ip address 23.1.1.2 255.255.255.0
ipsec policy vpn
R2完整配置
[R2] dis cu
[V200R003C00]
#
sysname R2
#
snmp-agent local-engineid 800007DB03000000000000
snmp-agent
#
clock timezone China-Standard-Time minus 08:00:00
#
portal local-server load portalpage.zip
#
drop illegal-mac alarm
#
set cpu-usage threshold 80 restore 75
#
acl number 3000
rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255
#
ipsec proposal tran1
esp encryption-algorithm aes-128
#
ike peer huawei v1
pre-shared-key simple huawei
remote-address 34.1.1.4
#
ipsec policy vpn 1 isakmp
security acl 3000
ike-peer huawei
proposal tran1
#
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
local-user admin service-type http
#
firewall zone Local
priority 15
#
interface Ethernet0/0/0
#
interface Ethernet0/0/1
#
interface Ethernet0/0/2
#
interface Ethernet0/0/3
#
interface Ethernet0/0/4
#
interface Ethernet0/0/5
#
interface Ethernet0/0/6
#
interface Ethernet0/0/7
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 23.1.1.2 255.255.255.0
ipsec policy vpn
#
interface NULL0
#
ospf 1
area 0.0.0.0
network 23.1.1.2 0.0.0.0
#
ip route-static 192.168.1.0 255.255.255.0 12.1.1.1
ip route-static 192.168.2.0 255.255.255.0 23.1.1.3
#
user-interface con 0
authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return
R4完整配置
<R4>dis cu
[V200R003C00]
#
sysname R4
#
snmp-agent local-engineid 800007DB03000000000000
snmp-agent
#
clock timezone China-Standard-Time minus 08:00:00
#
portal local-server load portalpage.zip
#
drop illegal-mac alarm
#
set cpu-usage threshold 80 restore 75
#
acl number 3000
rule 5 permit ip source 192.168.2.0 0.0.0.255 destination 192.168.1.0 0.0.0.255
#
ipsec proposal tran1
#
ike peer huawei v1
pre-shared-key simple huawei
remote-address 23.1.1.2
#
ipsec policy vpn 1 isakmp
security acl 3000
ike-peer huawei
proposal tran1
#
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
local-user admin service-type http
#
firewall zone Local
priority 15
#
interface Ethernet0/0/0
#
interface Ethernet0/0/1
#
interface Ethernet0/0/2
#
interface Ethernet0/0/3
#
interface Ethernet0/0/4
#
interface Ethernet0/0/5
#
interface Ethernet0/0/6
#
interface Ethernet0/0/7
#
interface GigabitEthernet0/0/0
ip address 34.1.1.4 255.255.255.0
ipsec policy vpn
#
interface GigabitEthernet0/0/1
ip address 45.1.1.4 255.255.255.0
#
interface NULL0
#
ospf 1
area 0.0.0.0
network 34.1.1.4 0.0.0.0
#
ip route-static 192.168.1.0 255.255.255.0 34.1.1.3
ip route-static 192.168.2.0 255.255.255.0 45.1.1.5
#
user-interface con 0
authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return
3. GRE over IPsec VPN
GRE实现了隧道的功能,但是GRE不支持认证、不支持加密、无法确保数据的安全性。IPsec能够对数据进行加密传输。所以IPsec VPN既满足了隧道的功能同时也能对隧道中传输的数据进行加密。但是IPsec VPN目前只支持IPv4 Unicast(IPv4 单播),不支持其他任何协议。二者结合,既能支持组播(路由协议等),又能保证数据的安全
GRE将组播报文加上一层新IP头部,封装成单播提供给IPsec封装,就能安全的传递组播报文
配置步骤
- 确保公网、内网通
- 配置GRE(隧道口互通通过OSPF实现)
interface Tunnel0/0/0
ip address 192.168.79.7 255.255.255.0
tunnel-protocol gre
source 78.1.1.7
destination 89.1.1.9
- 配置IPsec
1. 匹配感兴趣流
acl number 3000
rule 5 permit ip source 78.1.1.7 0 destination 89.1.1.9 0 # 因为已经被封装上了新的IP头
2. 第一阶段IKE SA/第二阶段IPsec SA
ike proposal 10
encryption-algorithm 3des-cbc
authentication-algorithm md5
ike peer R9 v1
pre-shared-key cipher %$%$}H"z!S,^u*;l(AQmOU4+,.2n%$%$
remote-address 89.1.1.9
ipsec proposal tran1
encapsulation-mode transport
esp encryption-algorithm 3des
3. 配置安全策略(关联感兴趣流+第一阶段+第二阶段)
ipsec policy vpn 10 isakmp
security acl 3000
ike-peer R9
proposal tran1
- 应用安全策略
interface GigabitEthernet0/0/1
ip address 78.1.1.7 255.255.255.0
ipsec policy vpn
完整配置
R7
<R7>dis cu
[V200R003C00]
#
sysname R7
#
snmp-agent local-engineid 800007DB03000000000000
snmp-agent
#
clock timezone China-Standard-Time minus 08:00:00
#
portal local-server load portalpage.zip
#
drop illegal-mac alarm
#
set cpu-usage threshold 80 restore 75
#
acl number 3000
rule 5 permit ip source 78.1.1.7 0 destination 89.1.1.9 0
#
ipsec proposal tran1
encapsulation-mode transport
esp encryption-algorithm 3des
#
ike proposal 10
encryption-algorithm 3des-cbc
authentication-algorithm md5
#
ike peer R9 v1
pre-shared-key cipher %$%$}H"z!S,^u*;l(AQmOU4+,.2n%$%$
remote-address 89.1.1.9
#
ipsec policy vpn 10 isakmp
security acl 3000
ike-peer R9
proposal tran1
#
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
local-user admin service-type http
#
firewall zone Local
priority 15
#
interface GigabitEthernet0/0/0
ip address 37.1.1.7 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 78.1.1.7 255.255.255.0
ipsec policy vpn
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface Tunnel0/0/0
ip address 192.168.79.7 255.255.255.0
tunnel-protocol gre
source 78.1.1.7
destination 89.1.1.9
#
ospf 1 router-id 7.7.7.7
default-route-advertise always
area 0.0.0.0
network 37.1.1.7 0.0.0.0
network 192.168.79.7 0.0.0.0
#
ospf 2
area 0.0.0.0
network 78.1.1.7 0.0.0.0
#
user-interface con 0
authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return
R9
<R9>dis cu
[V200R003C00]
#
sysname R9
#
snmp-agent local-engineid 800007DB03000000000000
snmp-agent
#
clock timezone China-Standard-Time minus 08:00:00
#
portal local-server load portalpage.zip
#
drop illegal-mac alarm
#
set cpu-usage threshold 80 restore 75
#
acl number 3000
rule 5 permit ip source 89.1.1.9 0 destination 78.1.1.7 0
#
ipsec proposal tran1
encapsulation-mode transport
esp encryption-algorithm 3des
#
ike proposal 10
encryption-algorithm 3des-cbc
authentication-algorithm md5
#
ike peer R7 v1
pre-shared-key cipher %$%$}H"z!S,^u*;l(AQmOU4+,.2n%$%$
remote-address 78.1.1.7
#
ipsec policy vpn 10 isakmp
security acl 3000
ike-peer R7
proposal tran1
#
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
local-user admin service-type http
#
firewall zone Local
priority 15
#
interface GigabitEthernet0/0/0
ip address 89.1.1.9 255.255.255.0
ipsec policy vpn
#
interface GigabitEthernet0/0/1
ip address 49.1.1.9 255.255.255.0
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface Tunnel0/0/0
ip address 192.168.79.9 255.255.255.0
tunnel-protocol gre
source 89.1.1.9
destination 78.1.1.7
#
ospf 1 router-id 9.9.9.9
default-route-advertise always
area 0.0.0.0
network 49.1.1.9 0.0.0.0
network 192.168.79.9 0.0.0.0
#
ospf 2
area 0.0.0.0
network 89.1.1.9 0.0.0.0
#
user-interface con 0
authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return