IPSEC 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 SA
display 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。
  • 25
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值