智汇华云:IPSec VPN原理介绍与实现

2023-06-22 21:36

  IPSec VPN是目前应用最广泛、最安全的VPN,从个人手机到平板电脑再到路由器、企业的防火墙都能轻松的创建IPSec VPN,保护使用者的数据安全防止数据被劫持,嗅探,因此掌握IPSec VPN原理以及常见问题排查对于运维及开发人员来说都至关重要。本期华云数据“智汇华云”专栏将为您奉上IPSec VPN原理介绍与实现。

  IKE协议有v1版本和v2版本,目前我们主要使用v1版本,v1版本是基于UDP500 和4500(NAT使用)端口号的应用层协议。IKE协议的主要作用是交换IPSec对等体两端的SA(Security Association),SA一般包括:

  第一阶段叫做IKE(ISAKMP) SA,协商出来的SA给第二阶段使用,这一阶段又有两种协商模式,使用中一般使用主模式,比较安全

  aggressive(野蛮模式),只需要4个数据包,由于不安全容易被暴力破解,一般不使用

  1.AH(Authentication Header) 认证头协议,协议号为51。工作原理是在每一个数据包的标准IP报头后面添加一个AH报文头,基本不使用。

  *与AH不同的是,ESP将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但ESP没有对IP头的内容进行保护。

  IPSec的封装模式也有两种,实际使用的时候双方协商出封装协议和封装模式,一并使用:

  1.传输模式(host-to-host transport mode),在传输模式中,AH头或ESP头入到IP头与传输层协议头之间,保护TCP/UDP/ICMP负载。传输模式不改变报文头,基本不使用。

  2.隧道模式(tunneling mode ),隧道模式下,AH协议的完整性验证范围为包括新增IP头在内的整个IP报文。ESP协议验证报文的完整性检查部分包括ESP头、原IP头、传输层协议头、数据和ESP报尾,但不包括新IP头,因此ESP协议无法保证新IP头的安全。ESP的加密部分包括原IP头、传输层协议头、数据和ESP报尾。

  上面讲的都是IPSec协议上的定义和规范,具体到IPSec在linux系统的实现上主要有各种swan(openswan,strongswan,libreswan),这些应用程序负责协商双方的加密算法,加密方式,隧道模式,路由策略。并通过linux的xfrm内核接口调用下发到数据面中。

  IPSec在Linux上有两种数据面,目前一般使用第二种Linux内核的XFRM框架,除非是很老的机器没有这个的时候会用第一种:

  1.KLIPS ,很古老,2.6版本以前的Linux版本使用。通过创建出虚拟IPSec接口,路由IPSec数据包,可以很方便添加firewall规则。

  ip xfrm命令可以手动创建两台之间使用ipsec隧道通信,跳过libreswan的控制面SA协商

  抓包看两台机器之间的ping包,可以发现ping包已经被加密为ESP报文。

下一篇:VPN技术的新突破
上一篇:NSA发布IPSec VPN安全指南
相关文章
返回顶部小火箭