目录

IPSEC的技术协议族架构

IPESC建立安全通信工作步骤:

IPSEC架构

IKE 工作阶段

IPSEC的NAT问题

IPSEC的多VPN问题

DSVPN


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通信的情况下,设备无法区分不同的通信

 原因:

  1. 隧道协商过程中,IKE规定源和目的端口都必须为UDP 500,在多VPN场景下源端口可能会在防火墙设备NAT后发生变化,从而导致IKE协商失败。

  2. 数据传输过程中,由于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加密,但不同的是,在实现方式上是在隧道里面直接对流量加密,而不是作用于公网口上,不需要再抓取流量。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐