当前位置:   article > 正文

安全防御 --- IPSec理论(03)_ipsec esp

ipsec esp

DPD

死亡对等体检测(dead peer detection),检查对端IKE SA(iskmp sa)是否存在。当隧道出现异常,检测出异常重新发起协商,维持隧道。

作用:DPD解决隧道黑洞问题,用于检查第一阶段是否生效;若检查第一阶段的IKE SA断开,则不会再发出DPD包

检查机制

  • 周期发送
  • 按需发送(空闲计时器)


DPD检查依赖超时计数器,默认5次不回包,则删除本地SA

IPSec的NAT问题

NAT会破坏IPSec的完整性

具体场景:当ipsec设备没有部署在企业边界,而是部署在企业内网时,ipsec的通信地址会被边界NAT设备做地址转换,这种情况下,需要考虑ipsec和nat的兼容性

(1)详细分析IPSEC在第一阶段和第二阶段与NAT具体兼容情况:

  • 第一阶段的主模式
  • 第一阶段的野蛮模式
  • 第二阶段的ESP传输模式
  • 第二阶段的ESP隧道模式
  • 第二阶段AH传输模式
  • 第二阶段AH隧道模式

第一阶段的主模式:第5、6包的认证ID,由于NAT破坏无法完成身份认证

第一阶段的野蛮模式:ID可以自定义为字符串,NAT无法破坏,可正常完成第一阶段身份认证

第二阶段的AH的传输模式和隧道模式:AH协议会校验外层IP地址,无论是传输还是隧道NAT都回转换外层IP地址,完整性都会被破坏,AH协议无法与NAT兼容。

第二阶段的ESP的隧道模式与传输模式ESP不会对外层IP做认证或校验,所以完整算法不会被NAT破坏,但是TCP会进行头部校验

(2)伪首部校验


NAT在修改IP地址的时候也要修改伪首部校验和,这样就不会出现伪首部校验失败的问题,但ESP将加密封装将4层加密后,NAT就无法修改伪首部校验和,则会导致校验失败。



ESP的传输模式会导致伪首部校验失败


ESP的隧道模式,伪首部针对的是原始IP头,NAT转换的是新IP头,不存在校验失败的问题,ESP隧道模式可以与NAT兼容

(3)结论

  1. 结论一:AH传输模式和隧道模式都不支持ANT;
  2. 结论二:ESP的传输模式不支持NAT,IP头不做校验

(标准的IKE SA的主模式使用IP地址作为身份ID,nat会破坏IP地址故而不支持主模式,仅支持野蛮模式)

NAT环境下的IPSec配置 --- 野蛮模式 + ESP的隧道模式

IPSEC的多VPN问题

(ESP加密数据 -- ESP协议没有端口号)


以上问题是IPSEC在NAT环境下用野蛮模式和ESP隧道模式下会遇到的问题

NAT环境下IPSEC最终解决方案:NAT-T(NAT穿透)技术,改技术规定在NAT模式下IPSEC的IKE SA阶段使用目的端口UDP 500或4500作为端口号,源端口允许被修改(这种情况下防火墙写策略时不要规定其源端口号),IPSEC SA数据加密流传输阶段规定使用目的端口UDP 4500来传输ESP加密流,源端口允许被修改,解决了ESP没有端口号的问题。

华为与思科的产品都默认开启NAT-T技术;若需要对方主动协商,本端在NAT设备上需要配置静态NAT映射

  1. nat static protocol udp global 100.1.1.1 500 inside 10.100.1.1 500
  2. nat static protocol udp global 100.1.1.1 4500 inside 10.100.1.1 4500

附:IPSEC不支持动态协议

GRE over IPSEC

(1)背景:

IPSEC具有可靠性,完整性,机密性,也有抗重放功能,安全性高。但是IPSEC不支持组播,在IPSEC隧道中,只能通过写静态路由来引导数据包。如果私网主机网段很多,意味着得一条一条写静态路由。

GRE有很牛的隧道技术,传播速度快,支持组播技术。但是GRE不支持加密,传输数据别人都能看见,安全性不高。

解决问题:GRE隧道传输的同时,IPSEC为它保驾护航

(2)缺陷:


图:企业典型的Hub-Spoke组网(配置DSVNP之前)

如上图,如果一个公司又很多分支站点,采用GRE over IPSec的话会存在如下缺点:

  • IPSec隧道集中在Hub点,所有流量都穿越Hub点。
  • 所有流量通过总部封装和解封装时,会引入额外的网络延时。
  • 每增加一个新的Sopke点,Hub点都必须被配置。
  • 若Spoke点的公网地址是动态变化的,部署点到点的GRE会存在问题。

DSVPN

(1)简介

动态智能VPN(Dynamic Smart Virtual Private Network),简称DSVPN。是一种在Hub-Spoke组网方式下为公网地址动态变化的分支之间建立VPN隧道的解决方案。

DSVPN是华为私有协议

(2)目的

GRE over IPSEC缺点比较多

  • 流量都需要经过HUB
  • 增加分部都需要配置
  • 分部非固定IP地址

通过将下一跳解析协议NHRP(Next Hop Resolution Protocol)和mGRE(multipoint Generic Routing Encapsulation)技术与IPSec相结合解决了GRE over IPSec的缺陷:

  • DSVPN通过NHRP协议动态收集、维护和发布各节点的公网地址等信息,解决了源分支无法获取目的分支公网地址的问题,从而可在分支与分支之间建立动态VPN隧道,实现分支与分支间的直接通信,进而减轻总部的负担、避免网络延时。
  • DSVPN借助mGRE技术,使VPN隧道能够传输组播报文和广播报文,并且一个Tunnel接口可与多个对端建立VPN隧道,减少了配置VPN隧道的工作量;在新增分支或分支公网地址发生变化时,也能自动维护总部与分支之间的隧道关系,而不用调整总部的隧道配置,使得网络维护变得更智能化。


图:企业Hub-spoke组网(配置DSVPN之后)

(3)典型网络架构:

企业通过总部Hub端与多个分支Spoke相连,Hub端使用静态公网地址,Spoke可以使用动态的公网地址。在该网络中,当源Spoke需要向目的Spoke发送数据报文时,源Spoke将通过与Hub之间的静态mGRE隧道交换NHRP协议获取目的Spoke的公网地址,并与目的Spoke建立动态的mGRE隧道。隧道建立完成后,Spoke与Spoke之间的数据报文将通过该动态mGRE隧道直接发送给对方,不载经过总部Hub中转。

(4)配置:

公网划分:
  1. [ISP]int g0/0/0
  2. [ISP-GigabitEthernet0/0/0]ip address 100.1.12.2 255.255.255.0
  3. [ISP]int g0/0/1
  4. [ISP-GigabitEthernet0/0/1]ip add 100.1.23.2 24
  5. [ISP]int g0/0/2
  6. [ISP-GigabitEthernet0/0/2]ip add 100.1.24.2 24
  7. [ISP]int g4/0/0
  8. [ISP-GigabitEthernet4/0/0]ip add 100.1.25.2 24
  9. [ISP]int g4/0/1
  10. [ISP-GigabitEthernet4/0/1]ip add 100.1.26.2 24
  11. [ISP]int g4/0/2
  12. [ISP-GigabitEthernet4/0/2]ip add 100.1.27.2 24
  13. [ISP]int g4/0/3
  14. [ISP-GigabitEthernet4/0/3]ip add 100.1.28.2 24
  15. [R1]int g0/0/0
  16. [R1-GigabitEthernet0/0/0]ip add 100.1.12.1 24
  17. [R3]int g0/0/0
  18. [R3-GigabitEthernet0/0/0]ip ad 100.1.23.1 24
  19. [R4]int g0/0/0
  20. [R4-GigabitEthernet0/0/0]ip add 100.1.24.1 24
  21. [r5]int g0/0/0
  22. [r5-GigabitEthernet0/0/0]ip add 100.1.25.1 24
  23. [r6]int g0/0/0
  24. [r6-GigabitEthernet0/0/0]ip add 100.1.26.1 24
  25. [r7]int g0/0/0
  26. [r7-GigabitEthernet0/0/0]ip add 100.1.27.1 24
  27. [r8]int g0/0/0
  28. [r8-GigabitEthernet0/0/0]ip add 100.1.28.1 24
环回地址:
  1. [R1]int lo0
  2. [R1-LoopBack0]ip add 10.1.1.1 24
  3. [R3]int lo0
  4. [R3-LoopBack0]ip add 10.3.3.3 24
  5. [R4]int lo0
  6. [R4-LoopBack0]ip add 10.4.4.4 24
  7. [r5]int lo0
  8. [r5-LoopBack0]ip add 10.5.5.5 24
  9. [r6]int lo0
  10. [r6-LoopBack0]ip add 10.6.6.6 24
  11. [r7]int lo0
  12. [r7-LoopBack0]ip add 10.7.7.7 24
  13. [r8]int lo0
  14. [r8-LoopBack0]ip add 10.8.8.8 24
私网划分:
  1. [R1]int t0/0/0
  2. [R1-Tunnel0/0/0]ip add 172.16.1.1 24
  3. [R3]int t0/00/0
  4. [R3-Tunnel0/0/0]ip ad 172.16.1.3 24
  5. [R4]int t0/0/0
  6. [R4-Tunnel0/0/0]ip add 172.16.1.4 24
  7. [r5]int t0/0/0
  8. [r5-Tunnel0/0/0]ip add 172.16.1.5 24
  9. [r6]int t0/0/0
  10. [r6-Tunnel0/0/0]ip add 172.16.1.6 24
  11. [r7]int t0/0/0
  12. [r7-Tunnel0/0/0]ip add 172.16.1.7 24
  13. [r8]int t0/0/0
  14. [r8-Tunnel0/0/0]ip add 172.16.1.8 24
使得公网通配置静态路由:
  1. [R1]ip route-static 0.0.0.0 0 100.1.12.2
  2. [R3]ip route-static 0.0.0.0 0 100.1.23.2
  3. [R4]ip route-static 0.0.0.0 0 100.1.24.2
  4. [r5]ip route-static 0.0.0.0 0 100.1.25.2
  5. [r6]ip route-static 0.0.0.0 0 100.1.26.2
  6. [r7]ip route-static 0.0.0.0 0 100.1.27.2
  7. [r8]ip route-static 0.0.0.0 0 100.1.28.2

测试连通性:



(首先配置R1为server,R3-4为一级分支)

[1] 开启隧道,配置gre
  1. [R1]int t0/0/0
  2. [R1-Tunnel0/0/0]tunnel-protocol gre p2mp
  3. [R1-Tunnel0/0/0]gre key 100 --> 配置标识key,防止和公网中其他gre混用
  4. [R1-Tunnel0/0/0]nhrp network-id 123 --> 配置标识network-id,防止和公网中nhrp混用
  5. [R1-Tunnel0/0/0]nhrp entry multicast dynamic --> R1为server端,自动为client配置映射
  6. [R1-Tunnel0/0/0]source g0/0/0
  7. [R3]int t0/0/0
  8. [R3-Tunnel0/0/0]tunnel-protocol gre p2mp
  9. [R3-Tunnel0/0/0]gre key 100
  10. [R3-Tunnel0/0/0]nhrp entry 172.16.1.1 100.1.12.1 register --> 自动注册server端的隧道地址和公网地址
  11. [R3-Tunnel0/0/0]nhrp network-id 123
  12. [R3-Tunnel0/0/0]source g0/0/0
  13. [R4]int t0/0/0
  14. [R4-Tunnel0/0/0]tunnel-protocol gre p2mp
  15. [R4-Tunnel0/0/0]source GigabitEthernet0/0/0
  16. [R4-Tunnel0/0/0]gre key 100
  17. [R4-Tunnel0/0/0]nhrp network-id 123
  18. [R4-Tunnel0/0/0]nhrp entry 172.16.1.1 100.1.12.1 register

查看配置情况:

[2] 进行OSPF宣告
将网络类型选为p2mp
  1. [R1]int t0/0/0
  2. [R1-Tunnel0/0/0]ospf network-type p2mp
  3. [R3]int t0/0/0
  4. [R3-Tunnel0/0/0]ospf network-type p2mp
  5. [R3-Tunnel0/0/0]ospf dr-priority 0 --> 让r3不在进行dr的选举
  6. [R4]int t0/0/0
  7. [R4-Tunnel0/0/0]ospf network-type p2mp
  8. [R4-Tunnel0/0/0]ospf dr-priority 0 --> 让r4不在进行dr的选举
宣告
  1. [R1]ospf 1 router-id 1.1.1.1
  2. [R1-ospf-1]a 0
  3. [R1-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255
  4. [R1-ospf-1-area-0.0.0.0]network 10.1.1.1 0.0.0.0
  5. [R3]ospf 1 router-id 3.3.3.3
  6. [R3-ospf-1]a 0
  7. [R3-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255
  8. [R3-ospf-1-area-0.0.0.0]network 10.3.3.3 0.0.0.0
  9. [R4]ospf 1 router-id 4.4.4.4
  10. [R4-ospf-1]a 0
  11. [R4-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255
  12. [R4-ospf-1-area-0.0.0.0]network 10.4.4.4 0.0.0.0

查看建邻情况

[4] p2mp的网络类型中,让R3和R4直接通,需在R1上开启redirect(重定向),在R3和R4上开启shortcut
  1. [R1-Tunnel0/0/0]nhrp redirect
  2. [R3-Tunnel0/0/0]nhrp shortcut
  3. [R4-Tunnel0/0/0]nhrp shortcut


(配置r5-8为二级分支)

[1] 首先为R3,R4配置server的标志
  1. [R3-Tunnel0/0/0]nhrp entry multicast dynamic
  2. [R4-Tunnel0/0/0]nhrp entry multicast dynamic
[2] 开启隧道,配置gre
  1. [r5]int t0/0/0
  2. [r5-Tunnel0/0/0]tunnel-protocol gre p2mp
  3. [r5-Tunnel0/0/0]gre key 100
  4. [r5-Tunnel0/0/0]source g0/0/0
  5. [r5-Tunnel0/0/0]nhrp network-id 123
  6. [r5-Tunnel0/0/0]nhrp entry 172.16.1.3 100.1.23.1 register
  7. [r5-Tunnel0/0/0]ospf network-type p2mp --> 将ospf网络类型改为p2mp
  8. [r6]int t0/0/0
  9. [r6-Tunnel0/0/0]tunnel-protocol gre p2mp
  10. [r6-Tunnel0/0/0]source GigabitEthernet0/0/0
  11. [r6-Tunnel0/0/0]gre key 100
  12. [r6-Tunnel0/0/0]nhrp network-id 123
  13. [r6-Tunnel0/0/0]nhrp entry 172.16.1.3 100.1.23.1 register
  14. [r6-Tunnel0/0/0]ospf network-type p2mp
  15. [r7]int t0/0/0
  16. [r7-Tunnel0/0/0]ospf network-type p2mp
  17. [r7-Tunnel0/0/0]tunnel-protocol gre p2mp
  18. [r7-Tunnel0/0/0]gre key 100
  19. [r7-Tunnel0/0/0]nhrp network-id 123
  20. [r7-Tunnel0/0/0]nhrp entry 172.16.1.4 100.1.24.1 register
  21. [r7-Tunnel0/0/0]source g0/0/0
  22. [r8]int t0/0/0
  23. [r8-Tunnel0/0/0]tunnel-protocol gre p2mp
  24. [r8-Tunnel0/0/0]source GigabitEthernet0/0/0gre key 100
  25. [r8-Tunnel0/0/0]ospf network-type p2mp
  26. [r8-Tunnel0/0/0]nhrp network-id 123
  27. [r8-Tunnel0/0/0]nhrp entry 172.16.1.4 100.1.24.1 register
[3] p2mp的网络类型中,让r5和r6、直接通,需在R3、R4上开启redirect(重定向),在R3和R4上开启shortcut
  1. [r5-Tunnel0/0/0]nhrp shortcut
  2. [r6-Tunnel0/0/0]nhrp shortcut
  3. [r7-Tunnel0/0/0]nhrp shortcut
  4. [r8-Tunnel0/0/0]nhrp shortcut
[4] 进行ospf宣告
  1. [r5]ospf 1 router-id 5.5.5.5
  2. [r5-ospf-1]a 0
  3. [r5-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255
  4. [r5-ospf-1-area-0.0.0.0]network 10.5.5.5 0.0.0.0
  5. [r6]ospf 1 router-id 6.6.6.6
  6. [r6-ospf-1]a 0
  7. [r6-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255
  8. [r6-ospf-1-area-0.0.0.0]network 10.6.6.6 0.0.0.0
  9. [r7]ospf 1 router-id 7.7.7.7
  10. [r7-ospf-1]a 0
  11. [r7-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255
  12. [r7-ospf-1-area-0.0.0.0]network 10.7.7.7 0.0.0.0
  13. [r8]ospf 1 router-id 8.8.8.8
  14. [r8-ospf-1]a 0
  15. [r8-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255
  16. [r8-ospf-1-area-0.0.0.0]network 10.8.8.8 0.0.0.0

查看建邻情况:

[5] 在R3,R4上开启redirect
  1. [R3]int t0/0/0
  2. [R3-Tunnel0/0/0]nhrp redirect
  3. [R4]int t0/0/0
  4. [R4-Tunnel0/0/0]nhrp redirect
[6] 测试



进行ipsec配置
  1. [R1]ike proposal 1 // 安全提议编号
  2. [R1-ike-proposal-1]encryption-algorithm aes-cbc-128 // 加密算法
  3. [R1-ike-proposal-1]dh group5 // 非对称加密算法强度
  4. [R1-ike-proposal-1]authentication-algorithm md5 // 认证算法
  5. [R1-ike-proposal-1]sa duration 3600
  6. [R1]ipsec proposal yyy // ipsec提议
  7. [R1-ipsec-proposal-yyy]encapsulation-mode transport
  8. [R1-ipsec-proposal-yyy]transform ah-esp // 选择传输协议
  9. [R1-ipsec-proposal-yyy]ah authentication-algorithm sha1 // 认证算法
  10. [R1-ipsec-proposal-yyy]esp authentication-algorithm sha1 // 认证算法
  11. [R1-ipsec-proposal-yyy]esp encryption-algorithm 3des // 加密算法
  12. [R1]ike peer yyy v1 // ike认证名称和版本
  13. [R1-ike-peer-yyy]exchange-mode aggressive // 模式选择
  14. [R1-ike-peer-yyy]pre-shared-key simple 999 // 编译预共享密钥
  15. [R1-ike-peer-yyy]ike-proposal 1 // 调用安全提议
  16. [R1-ike-peer-yyy]local-id-type name // 采用name定义
  17. [R1-ike-peer-yyy]remote-name kkk // 远端name为a1
  18. [R1]ipsec profile yyy
  19. [R1-ipsec-profile-yyy]ike-peer yyy // 调用peer
  20. [R1-ipsec-profile-yyy]proposal yyy // 调用提议
  21. 在R3-4,r5-8上相同的配置
隧道调用profile
  1. [R1-Tunnel0/0/0]ipsec profile yyy
  2. [R3-Tunnel0/0/0]ipsec profile yyy
  3. [R4-Tunnel0/0/0]ipsec profile yyy
  4. [r5-Tunnel0/0/0]ipsec profile yyy
  5. [r6-Tunnel0/0/0]ipsec profile yyy
  6. [r7-Tunnel0/0/0]ipsec profile yyy
  7. [r8-Tunnel0/0/0]ipsec profile yyy
测试


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/93402
推荐阅读
相关标签
  

闽ICP备14008679号