📖 前言:网络层的IP协议以及基于IP的路由协议是因特网的核心,它确保用户数据能够从源端经过网络中的一个或多个路由节点正确地到达目的端。IP 及路由安全对因持网的安全、可靠运行有着重要意义。本章首先介绍IPv4协议及其安全性,然后重点介绍增强IP层安全的IPse协议,包括IPsec安全策略、IPsec运行模式、AH协议、ESP协议、网络密钥交换、SA组合以及IPsec的应用等;最后,分别介绍IPv6协议和路由协议的安全性。
安全性分析:
作用:端到端的确保 IP 通信安全:认证、加密及密钥管理
最初为IPv6制定(必选),也支持IPv4(可选)
标准内容:
IPsec 协议族 :
IPsec通过允许系统选择所需的安全协议(AH协议或ESP协议),决定服务所使用的加密或认证算法,提供任何服务需要的密钥来提供IP级的安全服务。
RFC4301中列出的安全服务包括:访问控制、无连接完整性、数据源认证、拒绝重放包(部分顺序完整性格式)、保密性(加密)以及限制流量保密性
IPsec操作的基础是应用于每一个从源端到目的端传输的IP包上的安全策略。
IPsec安全策略主要由两个交互的数据库(SAD和SPD)来确定
一个SA由以下参数确定:
32
位,接收方根据SPI选择合适的SA处理接收到的数据包SAD定义了所有SA相关的参数,每个SA:
不同SA可以用多种方式组合以获得理想的用户配置。此外,IPsec对需要IPsec保护的流量和不需要IPsec保护的流量提供多种粒度的控制。
SPD中的每一条SP包括:
主机SPD示例:
协议
本地 IP
端口
远程 IP
端口
动作
备注
UDP
1.2.3.102
500
*
500
Bypass
IKE
ICMP
1.2.3.102
*
*
*
Bypass
错误消息
*
1.2.3.102
*
1.2.3.0
/
24
*
Protect: ESP 传输模式
加密内部网流量
TCP
1.2.3.102
*
1.2.4.11
80
Protect: ESP 传输模式
加密到服务器的流量
TCP
1.2.3.102
*
1.2.4.11
443
Bypass
TLS: 避免双重加密
*
1.2.3.102
*
1.2.4.0
/
24
*
Discard
D
M
Z
的其它流量
*
1.2.3.102
*
−
*
Bypass
Internet
基于SAD和SPD,IPsec对IP包的处理
两种模式:传输模式和隧道模式
传输模式SA | 隧道模式SA | |
---|---|---|
AH | 对IP载荷和IP首部的选中部分、IPv6的扩展首部进行认证 | 对整个内部IP包(内部首部和IP载荷)和外部IP首部的选中部分、外部IPv6的扩展首部进行认证 |
ESP | 对IP载荷和跟在ESP首部后面的任何IPv6扩展首部进行加密 | 加密整个内部IP包 |
AH+ESP | 对IP载荷和ESP首部后面的任何IPv6扩展首部进行加密,同时对IP载荷进行认证,但不认证IP首部。 | 加密并认证整个内部IP包 |
比较:
AH协议功能:IP包的数据完整性、数据来源认证和抗重放攻击服务
HMAC-MD5
(必须)、HMAC-SHA1
(必须) 、HAMC-RIPEMD-160等算法:在SA中指定
96
表示鉴别数据默认字段长,由HMAC计算出完整校验值后再被截短,取前96位。
哪些字段参与计算?如何处理IPv4和IPv6首部中的三种字段:不变字段,可变但可预测字段,可变不可预测字段?
0
;0
;IPv4首部三种字段:
IPv6基本首部三种字段:
IPv6扩展首部三种字段:
序列号 + 滑动窗口机制
AH无法与NAT兼容,因为AH认证的是整个IP包,如果修改IP地址(NAT功能),则无法通过完整性检测。
ESP协议功能:除了提供IP包的数据完整性、数据来源认证和抗重放攻击服务,还提供数据包加密和数据流加密服务
原始IP标头已移到最前面。将发送方的IP标头放在前面(对协议ID稍作更改),证明传输模式不能为原始IP标头提供保护或加密,并且在IP 协议ID为50的新IP标头中标识了ESP 。
🔎 An Illustrated Guide to IPsec
传输模式下的ESP装包和拆包过程,注意分清加密(红色)和认证(黄色)的数据区域。
装包过程:
解包过程:
从中可以看出所加ESP头中的SPI和sequence分别为:2896858147和1。上层协议(Encap Security Payload)为ESP(50)说明其为一个IPsec报文。
与ESP传输模式相比,隧道模式下对整个IP包进行认证和加密,因此可以提供数据流加密服务,而传输模式下由于IP包首部不被加密,因此无法提供数据流加密服务。但是,隧道模式由于增加了一个新IP首部,降低了链路的带宽利用率。
ESP在新IP标头中以IP 协议ID 50 标识。
🔎 IPSec Encapsulating Security Payload (ESP)
ESP传输模式与隧道模式对比:
安全性 | AH | ESP |
---|---|---|
协议号 | 50 | 51 |
数据完整性检验 | 支持 | 支持(不验证IP头) |
数据源认证 | 支持 | 支持 |
数据加解密 | 不支持 | 支持 |
抗重放服务 | 支持 | 支持 |
NAT-T(nat穿透) | 不支持 | 支持 |
Q:IPsec体系结构文档中指出,当两个传输模式SA被绑定,在同一个端对端流中允许AH和ESP两种协议,但认为只有先施ESP协议再实施AH协议才合适,为什么?
A:主要是性能上的考虑,由于解密处理需要大量占用CPU和内存,在通过认证(完整性验证)后再进行解密处理会更好一些,如果认证没有通过就不需要执行耗时的解密操作了。
IPsec支持以下两种密钥管理方式:
IKEv1:默认的IPsec自动型密钥管理协议是ISAKMP/Oakley,包括:
- 互联网安全关联和密钥管理协议(Internet Security Association and Key Management Protocol, ISAKMP)
- Oakley密钥确定协议(Oakley Key Determination Protocol),基于Diffie-Hellman算法的密钥交换协议
在IKEv2中,不再使用术语ISAKMP和Oakley,并且对ISAKMP和Oakley的使用方式也发生了变化,但是基本功能还是相同的。后面介绍的内容是IKEv2.
Diffie-Hellman回顾:
IKE对Diffie-Hellman的改进:
使用不同的组(group)进行Diffie-Hellman密钥交换。每个组包含两个全局参数的定义和算法标识。当前的规范包括如下几个组:
(1)768 比特模的模幂运算
q = 2 768 − 2 704 − 1 + 2 64 × ( ⌊ 2 638 × π ⌋ + 149686 ) α = 2 \mathrm{q}=2^{768}-2^{704}-1+2^{64} \times\left(\left\lfloor 2^{638} \times \pi\right\rfloor+149686\right) \quad \alpha=2 q=2768−2704−1+264×(⌊2638×π⌋+149686)α=2
(2)1024 比特模的模幕运算
q = 2 1024 − 2 960 − 1 + 2 64 × ( ⌊ 2 894 × π ⌋ + 129093 ) α = 2 \mathrm{q}=2^{1024}-2^{960}-1+2^{64} \times\left(\left\lfloor 2^{894} \times \pi\right\rfloor+129093\right) \quad \alpha=2 q=21024−2960−1+264×(⌊2894×π⌋+129093)α=2
(3)1536 比特模的模幕运算
参数特定。
(4)基于
2
155
2^{155}
2155 的椭圆曲线组
生成器(十六进制)参数:
X
=
7
B
,
Y
=
1
C
8
X=7B, Y=1C8
X=7B,Y=1C8
椭圆曲线参数(十六进制)参数:
X
=
0
,
Y
=
7338
F
X=0, Y=7338F
X=0,Y=7338F
(5)基于
2
185
2^{185}
2185 的椭圆曲线组
生成器(十六进制)参数:
X
=
18
,
Y
=
D
X=18, Y=D
X=18,Y=D
椭圆曲线参数(十六进制)参数:
X
=
0
,
Y
=
1
E
E
9
X=0, Y=1EE9
X=0,Y=1EE9
Cookie交换(Cookie exchange)要求各方在初始消息中发送一个伪随机数 Cookie,并要求对方确认。
此确认必须在Diffie-Hellman密钥交换的第一条消息中重复。如果源地址被伪造,则攻击者就不会收到应答。这样,攻击者仅能让用户产生应答而不会进行Diffie-Hellman计算
ISAKMP规定Cookie的产生必须满足:
64
位:IKE使用三种不同的身份认证方法:
IKE使用现时值(nonce)来反重放攻击。每个现时值是本地产生的伪随机数,在应答中出现,并在交换时被加密以保护它的可用性
协商过程分成:
采用模式:
简答题:简述IKEv1第一阶段中主模式和积极模式的区别
答:两种模式都有协商提议、密钥交换、身份认证的阶段。
主模式的第一阶段是协商密码,而积极模式第一阶段是协商提议、密钥交换、身份认证都包含。主模式需要6条消息,积极模式只需要3条消息。主模式在第三阶段(身份认证)是有加密保护的,而积极模式没有保护。
IPsecv3和IKEv3协议依赖于多种密码算法。每种应用可能需要使用多种密码算法,而每种密码算法也有很多参数。为了提高互操作性,IETF通过RFC4308和RFC4869定义了各种应用的推荐密码算法和参数。
单选题:以下关于IKE说法不正确的是?()
A.lKE报文由首部和一个或多个载荷组成,并包含在TCP报文中
B.密钥交换是IKE的一种载荷,主要包含密钥交换数据
C.lKE的首部中包含发起方SPI和应答方SPI字段,发送方发送的第一个报文中应答方SPI全置0
D.IKE首部中的邻接载荷的内容指向IKE带的第一个载荷
答案:A
Q:为什么要组合SA?
A:单个SA只能实现AH协议或ESP协议,而不能同时实现这两者。但在实际应用中,一些流量需要同时调用由AH和ESP提供的服务,某些流量可能需要主机间的IPsec服务的同时还需要在安全网关(如防火墙)间得到IPsec提供的服务。在这些情况下,同一个流量可能需要多个SA才能获得想要的IPsec服务。
提供特定IPsec服务集而组合在一起的SA系列称为“安全关联束(Security Association Bundle)”
在组合多个SA形成安全关联束时,需要考虑认证和加密的顺序问题
先加密后认证的好处是:接收方只有在认证通过后才解密,而解密是很耗时的,这样的好处是可提高性能。
IPsec在IP层对所有流量进行加密和/或认证,因此能够保护各种基于IP的应用
将IPsec应用于上述场景的实质就是构建基于IPsec的虚拟专用网(Virtual Private Network, VPN)
利用IPsec实现安全通信有以下优点:
IPv6通过IPsec来保证IP层的传输安全,提高了网络传输的保密性、完整性、可控性和抗否认性
安全问题:
路由协议的脆弱性:
路由协议的安全保障:
对于不安全的RIP协议,中小型网络通常可采取的防范措施包括:
RIPng为IPv6环境下运行的RIP协议,采用和RIPv2完全不同的安全机制。
RIPng使用和RIPv1相似的报文格式,充分利用IPv6中IPsec提供的安全机制,包括AH认证、ESP加密以及伪报头校验等,保证了RIPng路由协议交换路由信息的安全。
OSPF协议可以对接口、区域、虚链路进行认证
OSPF认证方式
OSPF报文格式中有二个与认证有关的字段:认证类型(AuType, 16位)、认证数据(Authentication, 64位)
同RIPng一样,OSPFv3协议自身不再有加密认证机制,取而代之的是通过IPv6的IPsec协议来保证安全性,路由协议必须运行在支持IPsec的路由器上。
OSPF攻击方式
实验平台:GNS3
设备 | 接口 | IP地址 | 地址掩码 | 默认网关 |
---|---|---|---|---|
R1 | F0/0 | 10.0.1.254 | 255.255.255.0 | - |
F0/1 | 172.30.2.1 | 255.255.255.0 | - | |
R2 | F0/0 | 10.0.2.254 | 255.255.255.0 | - |
F0/1 | 172.30.2.2 | 255.255.255.0 | - | |
PC-1 | E0 | 10.0.1.1 | 255.255.255.0 | 192.168.1.254 |
PC-2 | E0 | 10.0.2.1 | 255.255.255.0 | 192.168.2.254 |
R1# show access-lists
access-list 102 permit ahp host 172.30.2.2 host 172.30.2.1
access-list 102 permit esp host 172.30.2.2 host 172.30.2.1
access-list 102 permit udp host 172.30.2.2 host 172.30.2.1
eq isakmp
步骤:
R1(config)#crypto isakmp enable # 启用IKE
# 创建IKE策略集
R1(config)#crypto isakmp policy 110
R1(config-isakmp)#encryption des
R1(config-isakmp)#hash md5
R1(config-isakmp)#group 1
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#life 86400
R1(config-isakmp)#exit
R1(config)#crypto isakmp key cisco add 172.30.2.2 # 配置IKE身份认证的相关参数
# 两端路由器使用的共享密钥(本例是cisco)必须相同,可以用IP地址或主机名来指定对端
Authentication—身份认证方式
Encryption—加密算法
Group—DH算法组
Hash—摘要算法
Lifetime—IKE生存期
步骤:
# 配置IPSec变换集
R1(config)#crypto ipsec transform-set mine esp-des # mine是自定义的名字
R1(cfg-crypto-trans)#mode tunnel
# 每个变换集中可以包含AH变换、ESP变换和封装模式(隧道模式或传输模式)
# 每个变换集中最多可以有一个AH变换和两个ESP变换,详见下面信息
R1(cfg-crypto-trans)#exit
R1(config)#access-list 110 permit tcp 10.0.1.0 0.0.0.255 10.0.2.0 0.0.0.255 # 用ACL定义需要IPSec保护的流量,110是名字,注意两端路由器要配置对称的ACL
R1(config)#crypto map youmap 110 ipsec-isakmp # 创建crypto map,youmap是自定义的名字
# 每个路由器端口只能应用一个crypto map
# 当一个端口有多个VPN对端时,就使用seq-num来区分
R1(config-crypto-map)#match add 110
R1(config-crypto-map)#set peer 172.30.2.2
R1(config-crypto-map)#set pfs group1
R1(config-crypto-map)#set transform mine
R1(config-crypto-map)#set sec life sec 86400
R1(config-crypto-map)#exit
# 把crypto map 应用到路由器的端口上
R1(config)#int f0/1
R1(config-if)#crypto map youmap
R1(config-if)#exit
路由器IOS支持的变换:
R1(config)#crypto ipsec transform-set transform-set-name ?
ah-md5-hmac AH-HMAC-MD5 transform
ah-sha-hmac AH-HMAC-SHA transform
comp-lzs IP Compression using the LZS compression algorithm
esp-3des ESP transform using 3DES(EDE) cipher (168 bits)
esp-aes ESP transform using AES cipher
esp-des ESP transform using DES cipher (56 bits)
esp-md5-hmac ESP transform using HMAC-MD5 auth
esp-null ESP transform w/o cipher
esp-seal ESP transform using SEAL cipher (160 bits)
esp-sha-hmac ESP transform using HMAC-SHA auth
注:R2配置同上,注意IP区别即可。
OK,以上就是本期知识点“IP及路由安全”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~
❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页