企业分支之间经常有互联的需求,企业互联的方式很多,可以使用专线线路或者Internet线路。部分企业从成本和需求出发会选择使用Internet线路进行互联,但是使用Internet线路存在安全风险,如何保障数据在传输时不会被窃取?
前面我们已经学习了GRE的简单应用了,但是在GRE隧道中不会对报文进行加密因此通过抓包是可以看到数据的报文信息,那怎么确保信息数据的安全呢?
一、IPSec基本概念
1.1 IPSec简介
IPsec(IP Security)协议族是IETF制定的一系列安全协议,它为端到端IP报文交互提供了基于密码学的、可互操作的、高质量的安全保护机制。通过对数据加密、认证,IPsec使得数据能够在Internet网络上安全的传输。IPsec VPN技术可以和多种VPN技术结合使用,使得企业互联更加灵活安全。
IPSec不是一个单独的协议,它给出了IP网络上数据安全的一整套体系结构,包括AH(Authentication Header)、ESP(Encapsulating Security Payload)、IKE(Internet Key Exchange)等协议。
IPSec通过加密与验证等方式,从以下几个方面保障了用户业务数据在Internet中的安全传输:
-
数据来源验证:接收方验证发送方身份是否合法: -
数据加密:发送方对数据进行加密,以密文的形式在nternet上传送,接收方对接收的加密数据进行解密后处理或直接转发; -
数据完整性:接收方对接收的数据进行验证,以判定报文是否被改; -
抗重放:接收方拒绝旧的或重复的数据包,防止恶意用户通过重复发送捕获到的数据包所进行的攻击。
1.2 数据加密
数据加密方式简介: 数据加密可以避免数据转发时被读取。数据加密一般有两种方案:
-
对称加密:使用同一个密码加密/解密,效率很高,但是对称加密在互相交互密钥时存在密钥被截取的风险。 -
非对称加密:使用公钥加密,私钥解密,安全性很高但是加解密效率很低。
这里不对数据加密进行过深的探讨,毕竟我也不是专业的。
1.3 数据认证
数据认证方式简介: 数据认证的主要目的是确认数据是否被篡改,数据认证主要基于Hash算法。
-
数据通过Hash算法计算出一个唯一的Hash值,Hash值携带在数据中转发给对端。 -
对端设备对数据重新进行Hash,得出Hash值。将收到的Hash值与计算出的Hash值进行比对,一致说明没有被篡改。
IPsec提供了两种安全机制:加密和认证。
-
IPsec采用对称加密算法对数据进行加密和解密。数据发送方和接收方使用相同的密钥进行加密、解密。 -
IPsec采用HMAC(Hash-based Message Authentication Code)功能,比较数字签名进行数据完整性和真实性认证。
1.4 IPsec加密基本思路
IPsec同时使用对称加密与非对称加密,保证了安全也兼顾了性能。
-
将对称加密所用的密钥,使用非对称算法加密并传递。 -
数据通过交互后的对称密钥加密。
简单说就是双方通过使用非对称加密算法对同一密码进行加密得到一个对称秘钥,然后使用该对称秘钥对数据进行加密。一个前提就是密码是双方知道的,一般还是通过口头告知、文档等形式获取。
1.5 安全联盟介绍
SA(Security Association,安全联盟) 可以帮助IPsec对特定要素进行约定,比如:加密算法使用DES,认证算法使用MD5,封装方式使用Tunnel等。
IPsec技术在数据加密,数据验证,数据封装等方面有多种实现方式或算法,两端的设备使用IPsec进行通信时需要保证一致的加密算法,验证算法等。因此需要一种机制帮助两端设备协商这些参数。
建立IPsec SA一般有两种方式:
-
手工方式:手工方式建立IPsec SA管理成本很高,加密验证方式需要手工配置,手工刷新SA,且SA信息永久存在安全性较低,适用于小型网络。 -
IKE方式:IKE方式建立IPsec SA管理成本比较低,加密验证方式通过DH算法生成,SA信息有生成周期,且SA动态刷新,适用于小型,中大型网络。
IKE SA的主要作用是构建一条安全的通道,用于交互IPsec SA。
IPsec SA,由一个三元组来唯一标识,这个三元组包括安全参数索引SPI(Security Parameter Index)、目的IP地址和使用的安全协议号(AH或ESP)。
前面我们说到了IPSec框架中涉及到数据加密和认证,而实际情况下加密算法和认证算法很多,而IPSec中必须保证两端算法一致才能协商成功,那怎么协商呢?就是通过SA来定义,通过在SA中指定加密算法、认证算法、封装模式、传输层协议等内容。而在IPSec中有两个阶段:IKE阶段和IPSec阶段,两个是承上启下的作用。
1.6 密钥交换介绍
IPSec需要交互一个双方认可的对称秘钥,那怎么交互呢?
现网中交互对称密钥一般会使用密钥分发协议:IKE(Internet Key Exchange,因特网密钥交换)。
IKE协议建立在ISAKMP(Internet Security Association and Key Management Protocol, Internet安全联盟和密钥管理协议)定义的框架上,是基于UDP的应用层协议。它为IPsec提供了自动协商密钥、建立IPsec安全联盟的服务,能够简化IPsec的配置和维护工作。
IKE支持的认证算法有:MD5、SHA1、SHA2-256、SHA2-384、SHA2-512、SM3。
IKE支持的加密算法有:DES、3DES、AES-128、AES-192、AES-256、SM1和SM4。
ISAKMP由RFC2408定义,定义了协商、建立、修改和删除SA的过程和包格式。ISAKMP只是为SA的属性和协商、修改、删除SA的方法提供了一个通用的框架,并没有定义具体的SA格式。 ISAKMP报文可以利用UDP或者TCP,端口都是500,一般情况下常用UDP协议,所以在防火墙上放通IPSec的流量可以允许UDP 500/4500端口的流量通过。
1.7 安全协议介绍
IPSec的加密与解密大致是在原有的报文头部增加一层或多层头部以实现加密,在传输层中
IPsec有两种传输层协议提供认证或加密服务:AH(Authentication Header,认证头),ESP(Encapsulating Security Payload,封装安全载荷)。
-
AH仅支持认证功能,不支持加密功能。 -
ESP支持认证和加密功能。
AH仅支持认证功能,不支持加密功能。 AH在每一个数据包的标准IP报头后面添加一个AH报文头。AH对数据包和认证密钥进行Hash计算,接收方收到带有计算结果的数据包后,执行同样的Hash计算并与原计算结果比较,传输过程中对数据的任何更改将使计算结果无效,这样就提供了数据来源认证和数据完整性校验。AH协议的完整性验证范围为整个IP报文。
ESP支持认证和加密功能。 ESP在每一个数据包的标准IP报头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾(ESP Trailer和ESP Auth data)。与AH不同的是,ESP将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但ESP没有对IP头的内容进行保护,除非IP头被封装在ESP内部(采用隧道模式)。
关键字段含义:
-
Sequence Number:是一个从1开始的单项递增的计数器,唯一地标识每一个数据包,用于防止重放攻击。 -
SPI:IPsec安全参数索引,用于唯一标识IPsec安全联盟。 -
Authentication Data:该字段包含数据完整性校验值 ICV(Integrity Check Value),用于接收方进行完整性校验。可选择的认证算法有MD5、SHA1、SHA2、SM3。
简单理解就是将内网源IP怎样进行再封装增加传输层报头,AH仅支持认证功能,不支持加密功能,而ESP支持认证和加密功能,我一般情况下都是使用的ESP协议。
1.8 封装模式介绍
在传输层使用安全协议还涉及到一个封装模式的问题。封装模式是指将AH或ESP相关的字段插入到原始IP报文中,以实现对报文的认证和加密,封装模式有传输模式和隧道模式两种。现网中多使用隧道模式进行封装。 就是说这个报文的字段摆放顺序是怎样的。
在传输模式中,AH头或ESP头被插入到IP头与传输层协议头之间,保护TCP/UDP/ICMP负载。由于传输模式未添加额外的IP头,所以原始报文中的IP地址在加密后报文的IP头中可见。
在隧道模式下,AH头或ESP头被插到原始IP头之前,另外生成一个新的报文头放到AH头或ESP头之前,保护IP头和负载。
总结:IPSec是一个框架,通过IPSec实现的VPN称为IPSec VPN。IPSec通过加密和认证来实现安全传输。第一阶段首先需要协商秘钥一致,通过秘钥交换IKE来协商,生成一个IKE的SA(安全联盟),里面定义了加密算法、认证算法、隧道模式等。第二阶段使用一阶段的IKE SA进行加密数据,可以选择AH或者ESP进行封装,AH不支持加密,ESP支持加密和认证,封装模式可以选择隧道模式或者传输模式,区别在于封装后数据包的头部不一样,一般情况下使用ESP安全协议以及隧道传输模式即可。
本文由 mdnice 多平台发布