IPSEC VPN详解
IPSEC 是一种基于网络层,应用密码学的安全通信协议族。目的是在网络层环境ipv4,ipv6提供灵活的安全传输服务。IPSEC VPN基于IPSEC构建在IP层实现的安全虚拟专用网。VPN-- virtual private network 虚拟私有网,利用隧道技术实现
目录
IPSEC 是一种基于网络层,应用密码学的安全通信协议族。目的是在网络层环境ipv4,ipv6提供灵活的安全传输服务。IPSEC VPN基于IPSEC构建在IP层实现的安全虚拟专用网。
VPN-- virtual private network 虚拟私有网,利用隧道技术实现
数字认证
数字认证是以数字证书为核心的加密技术,可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的安全性、完整性。
数字证书包含:
-
用户身份信息
-
用户公钥信息
-
身份验证机构的信息及签名数据
数字证书分类:
-
签名证书----身份验证,不可抵赖性。
-
加密证书----加密,完整性与机密性。
由CA机构来保证数字证书的可信,而CA机构由PKI体系确保流程的规范性
身份认证
确保对端通信方没有被第三者替代或伪造
IPSEC的安全服务:
-
机密性
-
完整性
-
数据源鉴别
-
重传保护
-
不可否认性
IPSEC有两种工作模式——传输模式、隧道模式
IPSEC的技术协议族架构
IPSEC有两个安全封装协议
-
ESP(encapsulation security header 封装安全载荷 协议号50)
-
加密算法
-
鉴别算法
-
机密性 完整性 可用性
-
-
-
AH(authenticition header 鉴别头 协议号51)
-
鉴别算法
-
完整性 可用性
-
-
IPESC建立安全通信工作步骤:
第一步,身份认证
-
使用证书或预共享密钥(pre-share)认证
第二步,协商建立SA(安全联盟)
-
选择协议
-
AH
-
ESP
-
-
选择工作模式
-
传输模式
-
隧道模式
-
-
选择数据加密算法
-
AES
-
-
选择密钥交换算法
-
RSA
-
-
选择鉴别算法HMAC
-
md5
-
IPSEC架构
建立安全联盟的方式有两种,一种是静态,一种是动态。如果需要建立安全联盟的节点较多时静态手工配置将会非常困难,也容易出错,并且安全低。因此可以使用动态的方式进行协商来解决,IKE(internet key exchange)自动协商安全联盟建立密钥交换过程。
安全联盟SA ---security association 是通信对等体之间对某些要素的约定,通信的双方符合SA约定的内容,就可以建立SA。
SA 标识:安全参数索引、目的IP地址、安全协议号
IKE (internet key exchange密钥管理与分发协议),其中解释域负责运行
-
协商封装协议以及工作模式 esp ah
-
协商加密和鉴别算法
-
密钥参数的协商---密钥产生算法、密钥有效期、密钥分发者身份认证、密钥长度、认证算法
传输模式
使用场景
-
主机之间端到端安全通信
-
通信问题已经解决,需要ipsec解决安全问题
隧道模式
使用场景
-
私网之间的安全通信
-
通信问题和安全问题都需要解决
如果遇到既有安全也有通信问题的场景:
-
用ipsec的隧道模式
-
用其他隧道协议+ipsec的传输模式
AH
安全服务
-
数据源认证----通过计算验证码时加入一个共享密钥来实现,和ospf的认证类似。
-
数据抗重放---AH包头中的序列号
-
数据完整性---hash算法,校验hash值来实现
没有机密性,没有使用加密算法
ESP
安全服务:
-
数据完整性
-
数据源认证
-
数据抗重放
-
数据机密性
-
数据流保护
IKE 工作阶段
-
第一阶段:IKE SA 对等体之间的身份认证换建立一个iskmp 安全联盟,即iskmp sa。主要是IPSEC之间的密钥生成和交换
-
主模式
-
野蛮模式
-
-
第二阶段:用已经建立的安全联盟 iskmp sa(ike sa)的安全通道为ipsec协商安全服务,建立ipsec sa,产生用于业务数据加密的密钥。
-
快速模式
-
主模式
6个包交互,使用IP地址作为身份标识,默认传递自己的接口地址作为身份标识,对方的公网地址作 为对端身份标识去检查。
但使用IP作为身份标识会产生一个问题——NAT会替换IP地址导致IP作为身份信息不可靠。
安全提议:加密算法、hash算法、身份认证方式、密钥交换算法、密钥有效期
具体交互信息
第一个包,承载协议是UDP,源目端口都是500
野蛮模式
野蛮模式虽然是三个包但是安全性没问题,同时不再以IP地址作为身份标识,ID设置灵活性很高,有助于不同厂商ipsec对接,也解决了主模式在NAT场景下的局限。
主模式与野蛮模式的对比
主模式 | 野蛮模式 | |
---|---|---|
消息交互 | 交互6个消息 | 交互3个消息 |
身份标识 | 以IP地址作为身份ID,自动生成本端身份ID和对端身份ID | 可以以多种形式(IP,字符串等)手动或自动的生成本端和对端的身份ID |
域共享密钥 | 只能基于IP地址来确定预共享密钥 | 基于ID信息(主机名和IP地址)来确定预共享密钥 |
安全性 | 较高前4个消息以明文传输,最后两个消息加密,将对端身份进行了保护 | 较低前两个消息以明文传输,最后一个消息进行加密,不保护对端身份 |
速度 | 较慢 | 较快 |
IPSEC的NAT问题
NAT会破坏IPSEC的完整性——NAT会替换源IP地址,这样会导致:
-
身份ID不匹配
-
第一阶段的主模式使用IP作为身份标识,无法完成身份认证
-
-
接收方无法用被替换后的IP产生的校验和与报文中使用原始IP获得的校验和匹配
-
AH协议会校验外层IP地址,无法与NAT兼容
-
ESP不会对外层IP做认证或校验,所以完整性算法不会被NAT破坏。
但是nat在修改IP地址的时候也要修改伪首部校验和,这样就不会出现伪首部校验失败的问题,但是ESP等加密封装会把4层加密,加密后nat就无法修改伪首部校验和,导致校验失败,数据包被丢弃。ESP的传输模式原始包头不会保留,接收方使用新IP会导致伪首部校验失败。
ESP的隧道模式会将原始IP包头、源目IP一起封装,并赋予一个新IP包头和源目IP,且ESP的隧道模式下NAT修改IP是在新头部中,而伪首部校验和针对是原始IP头故而不会导致伪首部校验失败。因此ESP隧道模式可以与NAT兼容。
结论:综上所述在NAT场景下IPSEC的仅ESP协议支持,并且IKE SA的仅支持野蛮模式。
IPSEC的多VPN问题
ESP加密数据----ESP协议没有端口号
这就意味着如果存在多个VPN通信的情况下,设备无法区分不同的通信
原因:
-
隧道协商过程中,IKE规定源和目的端口都必须为UDP 500,在多VPN场景下源端口可能会在防火墙设备NAT后发生变化,从而导致IKE协商失败。
-
数据传输过程中,由于ESP工作在网络层,没有传输头部,从而无法进行NAPT端口复用,导致数据传输失败。
NAT环境下IPSEC最终解决方案:NAT-T技术,改技术规定在NAT模式下IPSEC的IKE SA阶段使用目的端口UDP 500或4500作为端口号,源端口允许被修改(这种情况下防火墙写策略时不要规定其源端口号),IPSEC SA数据加密流传输阶段规定使用目的端口UDP 4500来传输ESP加密流,源端口允许被修改,解决了ESP没有端口号的问题。
ipsec不支持动态协议,因为ipsec自始至终都没有创建该协议所需要的接口;并不像GRE协议,需要创建Tunnel口,并且配置IP。
DSVPN
使用场景:多点加密
功能上类似于在公网口上使用MGRE搭建隧道再使用IPSEC加密,但不同的是,在实现方式上是在隧道里面直接对流量加密,而不是作用于公网口上,不需要再抓取流量。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)