VPN也就是虚拟专用网的简称,可以简单地理解为它是一种在不同网段间搭起一个私网的技术。VPN的目标就是让当前主机或当前网段内的主机可以和目标网段的主机进行通讯,就好像它们在同一网段内一样。

IPSEC VPN

互联网安全协议(英语:Internet Protocol Security,缩写为IPsec),是一个协议包。它不是单个协议,而是由一些互相关联的,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议集合。它可以用在信息加密,密钥交换,信息安全等各个方面,VPN只是其中的一种应用方式。

IPsec VPN是指利用IPsec协议打造安全加密的专用通道(tunnel),来实现跨网安全通信的VPN技术。IPsec VPN可以打造站点到站点,端到端,或是端到站点的VPN,保证数据的安全传输,因此它的应用最为广泛。

利用IPsec VPN将不同的网段连成一片

IPsec能够起到的功能有:

  • 数据源认证(Data origin authentication),确保发送源真实可靠。
  • 保护数据完整性(Data integrity),确保数据不被中截获篡改。
  • 保证数据私密性(Data confidentiality),确保数据加密不被明文形式读取。
  • 防止中间人攻击(Man-in-the-Middle),防止中间人截获数据。
  • 防止数据被重放(Anti-Replay),防止数据被黑客读取篡改后再传输给接收方。

为IPsec服务的总共有三个协议,分为两类:

  • IKE(Internet Key Exchange)

 IKE(Internet key Exchange)互联网密钥交换协议,它是针对密钥安全的,是用来保证密钥的安全传输、交换以及存储,主要是对密钥进行操作,并不对用户的实际数据进行操作。

  • AH(Authentication Header)
  • ESP(Encapsulating Security Protocol)

这两个协议主要工作是如何保护数据安全,也就是如何加密数据,是直接对用户数据进行操作的。AH协议可以同时提供数据完整性确认、数据来源确认、防重放等安全特性,它常用摘要算法(单向Hash函数)MD5和SHA1实现该特性,实际应用中使用AH已经很少。相关工作主要是用ESP协议完成。ESP可以同时提供数据完整性确认、数据加密、防重放等安全特性,它通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性。

了解更多…

了解更多…

IPsec除了能够为隧道提供数据保护来实现VPN之外,IPsec还可以自己单独作为隧道协议来提供隧道的建立,如果IPsec自己单独作为隧道协议来使用,那么IPsec就不需要借助任何其它隧道协议就能独立实现VPN功能;IPsec到底是只使用数据保护功能再配合其它隧道协议,还是自己独立实现隧道来完成VPN功能,可以由配置者自己决定。

注:AH和ESP都有防止数据被篡改的认证机制,而ESP还有加密数据的机制,AH没有加密数据的机制,只有通过封装来实现对数据的保护机制,不像ESP可以对数据直接加密。

重点:这里的ESP和AH的认证和下面的认证(Authentication)不是一个概念,下面的是指两个对等体之间的认证,就是保证双方vpn通道的对接点(如两台route或防火墙)是合法的不是黑客冒充的,而AH和ESP中的认证时指对于ipsec中交换的秘钥的合法可靠性和对于数据的合法可靠性的认证,防止被中间篡改。不过一般只用ESP协议,因为ESP既有认证机制也有加密机制。

IPsec通常有一个发起方,一个响应方,需要IPSec进行保护的流量就称为兴趣流,具体认证过程是双方协商的。发起方和响应方协商的内容主要包括:双方身份的确认和密钥种子刷新周期、AH/ESP的组合方式及各自使用的算法,还包括兴趣流、封装模式等。发起方、响应方协商的结果就是SA。 IPsec的所有会话都是在通道中传输的,包括协商密钥,传递用户数据;这样的通道称为SA(Security Association),SA通常是包括密钥及密钥生存期、算法、封装模式、发起方、响应方地址、兴趣流等内容。SA有两个,分为IKE SA和IPsec SA,两个SA分别定义了如何保护密钥以及如何保护数据,其实这两个SA都是由IKE建立起来的,所以将IKE的整个运行过程分成了两个Phase(阶段),即:第一阶段和第二阶段。

IKE Phase One     IKE Phase One的主要工作就是建立IKE SA(ISAKMP SA),IKE SA的服务对象并不是用户数据,而是密钥流量以及为IPsec SA阶段服务的IKE SA的协商阶段被称为main mode(主模式),但是IKE也是需要保护自己的流量安全的(这些流量并非用户流量),所以IKE SA之间也需要协商出一整套安全策略,否则后续的密钥和IPsec SA的建立就不能得到安全保证;IKE SA之间需要协商的套安全策略包括:

1、认证方式(Authentication,用于对合法对端的认证)

共总有Pre-Shared Keys (PSK),Public Key Infrastructure (PKI),RSA encrypted nonce三种,默认为PKI。

2、加密算法(Encryption)

总共有DES,3DES,AES 128,AES 192,AES 256,默认为DES。

3、Hash算法(HMAC,用于对秘钥和数据的认证)

总共有SHA-1,MD5,默认为SHA-1。

4、密钥算法

(Diffie-Hellman) Groups 1 (768 bit),Group 2(1024 bit),Group 5(1536 bit),默认为Groups 1 (768 bit)。

5、Lifetime 随用户定义,默认为86,400 seconds,但没有volume limit。 NAT穿越(NAT Traversal)默认为开启状态,无须手工配置。

 

IKE Phase Two     IKE Phase Two的目的是要建立IPsec SA,由于IKE SA的服务对象并不是用户数据,而是密钥流量,以及为IPsec SA服务的,IKE SA是为IPsec SA做准备的,所以如果没有IKE SA,就不会有IPsec SA;IPsec SA是基于IKE SA来建立的,建立IPsec SA的过程称为 快速模式(quick mode)。IPsec SA才是真正为用户数据服务的,用户的所有流量都是在IPsec SA中传输的,用户流量靠IPsec SA来保护,IPsec SA同样也需要协商出一整套安全策略,其中包括:

1、加密算法(Encryption)

总共有DES,3DES,AES 128,AES 192,AES 256,默认为DES。

2、Hash算法(HMAC用于对数据的认证)

总共有SHA-1,MD5,默认为SHA-1。

3、Lifetime

随用户定义,默认为3600 seconds,即1小时;默认volume limit为4,608,000 Kbytes,即4.608 Gbyte。

相关术语

认证(Authentication)

    IKEV1会在VPN对等体之间采用认证机制(Authentication),认证可以有效确保会话是来自于真正的对等体而不是攻击者,因为如果最开始本身就是在和一个攻击者或黑客进行会话和协商,那么后面的所有工作都是白废,所以保证只和合法的对等体会话是非常重要的;IKEV1的认证方式有三种:

一、Pre-Shared Keys (PSK)

二、Public Key Infrastructure (PKI) using X.509 Digital Certificates

三、RSA encrypted nonce

其中Pre-Shared Keys (PSK)是最简单的,使用由管理员事先在双方定义好的密码,认证时,只有双方密码匹配之后,后续的工作才能继续;配置时通常可以包含IP地址,子网以及掩码,也可以指定为任意地址来代替固定地址,适用于IP地址不固定的环境。 PKI是使用第三方证书做认证,叫做Certificate Authority (CA),,里面包含名字、序列号,有效期以及其它可以用来确认身份的参数;证书也可以被取消。

密钥算法(Diffie-Hellman)

    虽然IKE使用了认证来保证会话一定是来自合法的对等体,但是单靠认证也无法保证密钥的安全,因为数据还是有可能被第三者截获,所以IKE还必须有一套机制来保证密钥的安全,因为只要密钥泄露,就全玩完了。在密钥方面,IKE使用了称为Diffie-Hellman的算法在VPN对等体之间建立安全的密钥用来加密数据, Diffie-Hellman使用了极为复杂的数学算法,最后将在VPN对等体之间计算出只有它们自己才知道的密钥,即使他们的会话被第三者监控,也无法推算出密钥

IKE V2 认证过程

IKEv2的具体认证过程是双方协商的。IKEv2简化了安全联盟的协商过程。IKEv2正常情况使用2次交换共4条消息就可以完成一个IKE SA和一对IPSec SA,如果要求建立的IPSec SA大于一对时,每一对SA只需额外增加1次交换,也就是2条消息就可以完成。IKEv2支持EAP身份认证。IKEv2可以借助认证服务器对远程接入的PC、手机等进行身份认证、分配私网IP地址。

  • 如果双方使用证书或者共享密钥验证:

发起方发送:本方DN,本方证书(如果用证书的话),本方信任的CA(可选),要求响应方提供的DN或CN(可选),认证数据(对 响应方在SA_INIT阶段发送的Nr以及目前为止交换的所有数据包的签名)

响应方发送:本方DN,本方证书,认证数据(对发起方在SA_INIT阶段发送的Ni以及目前为止交换的所有数据包的签名)

双方确认对方的认证数据有效后AUTH阶段完成

  • 如果响应方使用证书,发起方使用EAP的话(大多数的VPN客户接入的认证方式)

发起方发送:本方识别名,本方信任的CA,要求响应方提供的DN或CN
响应方发送:本方DN,本方证书,认证数据,EAP开始
发起方确认认证数据有效后开始EAP交互,直至响应方通知EAP成功
发起方发送:认证数据
响应方发送:认证数据
双方确认对方的认证数据有效后AUTH阶段完成

strongswan生成的证书

strongswan生成的证书

strongswan pki –issue –outform pem –cacert caCert.pem –cakey caKey.pem \ –in clientPub.pem –dn “C=CN, O=TZ, CN=TZ Client” > clientCert.pem

格式:pem 用到ca证书(公钥)和ca私钥,私钥加密,接收方可用公钥解密 用到客户端公钥,就是为了发给别人(服务端),如果服务端已经有了就不用? DN在这里生成,它是证书持有人唯一的标识符(或称DN-distinguished name),这个名字在 Internet上应该是唯一的。