目录
IPSEC提供的安全服务
IPSEC协议簇
编辑
安全协议
1.传输模式
2. 隧道模式
AH ---鉴别头协议
AH提供的安全服务:
AH头部
AH的保护范围
1.传输模式
2.隧道模式
编辑
ESP ---封装安全载荷协议
ESP提供的安全服务:
ESP的头部
ESP的保护范围
1.传输模式
2.隧道模式
编辑
AH+ESP
1.传输模式
2.隧道模式
IKE-互联网密钥交换
第一阶段
第二阶段
数据传输阶段
手工建立SA流程
IKE的配置
IPSEC协议簇补充
IKEV2
IPSEC VPN的应用场景
IPSEC VPN网关部署
NAT下的VPN部署场景
IPSEC ----协议簇---一个基于网络层,应用密码学的安全信息协议组。
IPSEC 协议簇是针对 IPV6 设计的,在 IPV6 的产品中, IPSEC 是强制使用, 保证其数据传输的安全性 ;但是,也可以使用在IPV4 中,作为一个可选项来使用。
IPSEC提供的安全服务
机密性 ---数据加密完整性 ---防篡改可用性数据源鉴别---身份认证预共享密钥---PSK ---相当于两边对了一个暗号,这个暗号需要事先确定好。证书---遵循PKI体系---相当于一个被公认让你的身份证。不可否认性 ---数字签名重传攻击保护- --抗重放---IPSEC通过启用 序列号 的方法来进行防重放攻击。---相当于启用一个一次性的数字,不会再次生效。有限的流量保护 ---在IPSEC中可以抓取感兴趣流,即可以 设定哪些流量需要进入到ipsec通道 中,进行保密传输,哪些不需要进入通道
IPSEC协议簇
安全协议
工作方式---这里两种不同的工作方式,指的其实是两种不同的封装方式。
1.传输模式
主要应用场景经常用于主机和主机之间端到端通信的数据保护。因为没有创建隧 道,所以,不能穿越公网,一般用于私网内部。封装方式不改变原有的IP包头,在原始的数据包头后面出入IPSEC的包头,将原来数据封装成为被保护的数据。主要针对IP层及以上的数据进行保护,具体的保护方法和范围需要由选用的安全协议来决定。
2. 隧道模式
主要应用场景因为可以跨公网创建隧道,所以,经常用于私网和私网之间通过公网进行通信,建立安全的VPN隧道。封装方式增加新的IP头部,之后是IPSEC的头部,再之后是原始的数据包封装。
安全协议
AH ---鉴别头协议
封装位置在 网络层和传输层之间 ,其协议号为 51 ;
AH提供的安全服务:
1,数据完整性保障---AH的主要工作就是保证数据的完整性的。注意:AH 协议无法提供加解密的服务 。2,数据源认证---身份认证3,抗重放攻击
AH头部
安全参数索引---SPI ---用来标识唯一的 SA(安全联盟:用于通信双方的基本信息的协商) 的。---- IPSEC SA ----注意,这个SA也是分通信方向的,如果需要构建这个安全通道,需要构建两条通信方向相反的SA 才行 。----不同的SA通道需要通过SPI进行标识,相当于SA的一个ID号。序列号---防重放---不允许重复
AH的保护范围
1.传输模式
2.隧道模式
注意 : AH 在进行完整性校验时,因为包含 IP 头部,而 IP 头部中的部分数据比如TTL, TOS(标识优先级) 这些参数,在传递的过程中会发生变化,所以, AH 在进行校验时将不包含这些参数。注意 : 因为AH在进行完整性校验的时候,包含有IP地址信息,但是,NAT技术会修改IP地址信息,所以,AH协议无法通过NAT环境,否则将导致校验失败。
ESP ---封装安全载荷协议
封装位置在 网络层和传输层之间 ,其协议号为 50;
ESP提供的安全服务:
1,数据完整性保障2,数据源认证---身份认证3,抗重放攻击4,ESP可以提供数据的加解密服务 ,并且, 加解密是可选的。
ESP的头部
注意
ESP尾部主要目的是进行数据的填充 。因为数据进行加密主要使用的 对称加密算法,而其中分组加密需要针对固定长度的分组进行加密 ,如果最后分组的长度不足,则需要填充。满足加密的条件。还有就是下一头部因为包含数据信息,所以,也放在尾部进行保护,因为负载部分和尾部部分是会进行加密的。
ESP的保护范围
加密范围 --- 除了IP头部内容和ESP头部的内容外 ,剩余所有网络层以上的数据都会进行加密。
认证范围---不包含最外层的IP头部,但是包含ESP头部。
1.传输模式
2.隧道模式
AH和ESP的对比
AH+ESP
1.传输模式
2.隧道模式
结论: 只要有AH协议参与的封装都无法通过NAT环
IKE-互联网密钥交换
主要用来完成IPSEC中需要的密钥相关参数的协商工作 。可以动态建立ipsec sa方法 ---IKE V1,IKE V2
IKE ---SKEME,OAKLEY,ISAKMP
ISAKMP(互联网安全联盟密钥管理协议)---IKE协议的本体--- 主要用来完成IPSEC中需要的密钥相关参数的协商工作。可以动态建立ipsec sa --- UDP 500 ---源目标端口都必须是500。SKEME,OAKLEY ---这两个协议可以理解为是IKE协商过程中使用到的资源库。
第一阶段
主要目的是为了获得 建立IPSEC SA时使用的密钥 ,以及进行 身份认证 。--- IKE(ISAKMP SA) ---这个SA是双向逻辑的,不区分源和目标。 (协商加密参数的参数)
主模式----- 默认使用IP地址作为身份标识(不能改变IP因为它是和PSK 绑定关系) ---需要通过6个数据包进行交互,安全性更高。
第一二个数据包--IKE SA交换
1 ,CI ---cookie ---这个参数每个数据包中都会携带,在IKEV2中,变成了 SPI,在这里作用类似。2 ,SA ---里面携带的是需要协商的安全参数---“五元组”加密算法,哈希算法,身份认证, DH 组, SA 存活期AES MD5 PSK DH2 84600S(默认值)注意 :手工建立的SA,一经建立,则将永久有效;但是IKE建立的SA,需要配置生存周期,周期时间到了之后,将重新建立SA。SA两端的数值不要求完全相 同,如果时间不同,则按照小的来执行。第二个回包: 主要确认安全参数,如果安全参数都可以对的上,则将继续完成后面的协商。如果参数没有对上,则将回复一个 负载拒绝报文 ,结束 IKE SA 的建立。
第三四个数据包---DH密钥交换---对称密钥
1,NI,Nr---代表的是随机数2,X,Y ---DH算法中需要公开的参数这里,为了加强安全性, DH 算法会生成 四种密钥 。PRF---hash算法的一种
种子密钥---剩余三种密钥都需要加入种子密钥运算得出,并且,种子密钥中计算时,会携带预共享密钥。
SKEYID_e ---加密密钥---g^ir (代表的就是DH算法中计算出来的Z),CKY-I/CKY-R(前面双方携带的cookie值)---- 用于第一个阶段5,6数据包和第二阶段数据包加密使用 。SKEYID_a- ---验证密钥--- 用于第二阶段hash时使用的密钥 ---HMAC算法(结合密钥的HASH算法),安全性比不加入密钥的HASH算法更高。SKEYID_d ---推导密钥--- 用于计算最终密钥(最终加密数据的密钥)的素材
第五六个数据包---进行身份认证---加密传输
1,ID ---身份信息---在主模式下,默认使用IP地址作为身份信息2,hash ---针对之前SA信息再进行HASH运算,比对结果。这里的HASH运算会加入验证密钥一起进行,更加安全。
注意:前四个数据包是明文,五六数据包是密文
野蛮模式---可以自定义身份标识,速度快,只需要三个数据包就可以完成协商,安全性低
注意:在野蛮模式中,可以自定义身份标识,主要是因为身份信息不需要加密,并且,前两个数据包都无法加密,所以,野蛮模式安全性较低。仅第三个数据包会进行加密( 前两个数据包是明文,第三个数据密文) 。但是, 野蛮模式适用于NAT环境以及IP地址不固定的环境。
两种模式对比
第二阶段
基于已经建立的安全通道,来协商建立IPSEC SA的安全参数,完成后,则标志着IPSEC SA的建立。---快速模式(Quickmode)-- -UDP 500
IKE SA是双向只需要建立一条,IPSEC SA是单向的,要建立两条方向相反的数据链路
需要协商的安全参数:
加密算法---正式传输数据时使用的加密算法(加密算法协商完成后,会计算密钥第一阶段 计算出来的推导密钥会加入到该密钥的计算中)HASH 算法---正式传输数据时进行完整性校验的算法安全协议---AH/ESP封装模式---传输模式/隧道模式存活时间
PFS ---密钥完美向前保密 ---正常工作中,第二阶段的最终密钥是通过第一阶段的推导密钥计算出来的,但是,这样做不安全,推导密钥泄露可能导致最终密钥泄露。所以,可以开启这个PFS技术(注意:要开启需要两端设备都开启才行),之后,则将在第二阶段重新进行一次DH交换,计算最终的密钥。从而提高安全性。
数据传输阶段
VPN黑洞 ---隧道建立之后,如果其中一段的设备异常重启,另一端还在有效期内,则他发送的数据将有去无回,就形成了VPN黑洞解决方法--- DPD死亡对等体检测 。类似于心跳检测机制---采用空闲计时器原理---两边同时开启一个固定时间的计时器,期间数据值直接发过去,如果计时器超时,则数据发送前,先发送一个DPD检测报文,如果收到对方的DPD应答报文,则将重置计时器。如果没有收到,并且,连续5次都没有收到,则将拆掉安全通道。
手工建立SA流程
IKE的配置
1,抓取感兴趣流
[r1]acl 3000 ---这里只能选择使用高级ACL列表,因为后面调用的时候,仅能调用高级的。[r1-acl-adv-3000]rulepermit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255
2,配置IKE安全提议
[r1]ike proposal 1 ---后面需要添加一个提议的编号[r1-ike-proposal-1]encryption-algorithm aes-cbc-128 ---定义加密算法---缺省是DES算法[r1-ike-proposal-1]authentication-algorithm md5 ---定义校验算法---缺省是SHA1[r1-ike-proposal-1]authentication-method pre-share ---定义认证方式---缺省是预共享密钥[r1-ike-proposal-1]dh group2 ---定义DH组---缺省DH组1[r1-ike-proposal-1]sa duration ? ---定义SA的老化时间----建议:老化时间修改的时候,要大 于600S。INTEGER<60-604800> Value of time(in seconds), default is 86400[r1-ike-proposal-1]sa duration 86400
3,配置IKE对等体
[r1]ike peer aa v1---需要声明对等体的名称(自定义),第一次进入时,需要写版本号[r1-ike-peer-aa]ike-proposal 1 ---关联IKE安全提议[r1-ike-peer-aa]exchange-mode ? ---选择一阶段的模式aggressive Aggressive mode ---野蛮模式main Main mode ---主模式[r1-ike-peer-aa]exchange-mode main ---这里缺省选择的是主模式[r1-ike-peer-aa]pre-shared-key cipher 123456 --- 定义预共享密钥的具体值,注意,两边必须一样[r1-ike-peer-aa]remote-address 23.0.0.2 ---三位一体1:邻居对等体的建邻地址;2:参与查找预共享密钥;3:作为身份标识验证对端身份
4,配置IPSEC的安全提议
[r1]ipsec proposal aa ---需要定义一个提议的名称[r1-ipsec-proposal-aa]transform esp ---定义安全协议---缺省esp[r1-ipsec-proposal-aa]esp encryption-algorithm aes-128 ---定义数据加密算法---缺省des[r1-ipsec-proposal-aa]esp authentication-algorithm md5 ---定义数据验证算法---缺省 md5[r1-ipsec-proposal-aa]encapsulation-mode tunnel ---选择封装模式---缺省为隧道模式
5,配置IPSEC安全策略
[r1]ipsec policy aa 1 isakmp ---需要定义策略的名称和编号,并且需要选择手工模式还是IKE 的方式。[r1-ipsec-policy-isakmp-aa-1]security acl ? ---关联ACL列表INTEGER<3000-3999> Apply advanced ACL[r1-ipsec-policy-isakmp-aa-1]security acl 3000[r1-ipsec-policy-isakmp-aa-1]ike-peer aa ---关联IKE对等体[r1-ipsec-policy-isakmp-aa-1]proposal aa ---关联ipsec提议
6,接口调用
[r1-GigabitEthernet0/0/1]ipsec policy aa
注意:对端R3的IPSEC 也是相同的配置,在R3的g0/0/0接口调用
查看SA命令
display ike sa 查看IKE SAdisplay ipsec sa 查看IPSEC SA
IPSEC协议簇补充
解释域:主要是用来存储前面协商的一些参数
SPD ---安全策略数据库SAD ---安全关联数据库
IKEV2
IKEV1的缺点:
1,协商速度慢如果第一阶段使用主模式---6 + 3 = 9 条消息完成IPSEC SA的协商;如果第一阶段使用野蛮模式---3 + 3 = 6条消息完成IPSEC SA的协商。
IKEV2针对协商速度进行了优化:在 IKEV2 中,第一阶段协商 IKE SA 仅需要两个数据包就可以完成;而第二个阶段,在协商 IPSEC SA 时,也仅需要两个数据包就可以完成---2 + 2 = 4
2,IKEV1不支持远程用户接入
如果IKEV1 想要接入远程用户,可以结合 l2tp来构建VPN隧道,只能借助l2tp,通过 ppp协议完成远程用户的认证。而 IKEV2增加EAP的认证方式来完成身份认证 ,则可以实现远程用户的接入。
注意 :防火墙上,一般 V1 和 V2 同时开启,发起协商的时候,一般使用 IKEV2 ,接受协商的时候,同时支持V1 和 V2 。
IPSEC VPN的应用场景
IPSEC VPN网关部署
IPSEC 不支持动态路由协议
VPN设备安置在内网和公网的边界位置,这种方式最为简单,就是数据来到出口后,判断是否需要走VPN 隧道,匹配上的流量则通过 VPN 隧道安全的传输到对端私网中。(两边的私网网段需要区分开,否则将导致地址冲突)
网关部署的问题:
不太安全,因为边界设备将承载很多攻击行为,而VPN 设备只是保证业务数据安全的设备。
解决方案:
1.使用防火墙在边界充当VPN设备(但是,一台设备需要承担太多的功能,可能导致性能不足)2,VPN设备下沉到内网中---VPN的单臂部署(NAT下的VPN部署场景)
NAT下的VPN部署场景
IKE协商
第一个问题 ---我们企业一般会采用NAPT的方式来进行NAT转换。但是,在IKE协商中,要求源目端口号必须时UDP 500,否则可能导致协商失败。所以,在NAPT的环境下,则可能更改端口号,导致协商失败。----解决方案:NAT -T
第二个问题---身份认证的问题---主模式无法通过NAT环境----解决方案:使用野蛮模式
数据传输阶段
第一问题 ---AH在进行完整性校验的时候,会包含IP地址信息,所以,NAT如果转换了IP地址,则将导致校验失败。所以,在NAT环境下,无法使用AH协议。解决方案:使用 ESP协议( 但是,使用ESP协议还需要分情况来看 )
1. 如果ESP选择传输模式
四层封装的时候,里面存在 伪头部校验 。所谓伪头部就是传输层的协议在进行封装的时候,也需要进行完整性校验,但是,这个完整性校验的时候,还需要包含三层IP 头部中的部分数据一起进行校验。这些数据中,就包含了IP 地址的信息。在正常的 NAT 中环境,数据进行 NAT 转换(转换IP 地址或者端口号)数据包中传输层的伪头部校验也会重新计 算,但是,在ESP 选择传输模式的封装下,因为此时,传输层的内容已经被加密了,所以,NAT 转换后无法修改校验和,所以,导致对方在接受的时候,会出现校验和不匹配的问题,导致通信中断。所以,ESP在传输模式也时无法通过NAT 环境了。
2. ESP 隧道模式
在这种环境下,因为添加了新的IP 头部,并且, NAT 修改的也是新 IP 头部。这个头部的内容没有进行完整性校验,所以,可以被修改。并且,四层在进行伪头部校验时使用的数据是原始IP 头部中的内容,新的 IP 头部内容变更,也无法影响到伪头部校验的结果。所以,ESP 隧道模式的封装可以通过NAT 环境。
NAT -T ----NAT穿越技术
NAT-T会将IKE协商的数据包中的源端口和目标端口都修改为4500,并且,允许源端口不是4500,但是目标端口必须是4500。