盒子
盒子
文章目录
  1. IP Security
    1. IP Security 简介
    2. IP Security 实现
      1. 4. 认证算法和加密算法
    3. 协商方式
    4. 工作模式(封装模式)
    5. IPSEC Over GRE(IPSec在里,GRE在外) OR GER Over IPSEC (GRE 在里, IPSec在外)
    6. L2TP(Layer 2 Tunneling Protocol) v.s. IPSec
    7. CI (Continous Integeration) && CD (Continous Delivery)

IP Sec 101

IP Security

Ipsec协议不是一个单独的协议,它包括认证头AH(Authentication Header),封装安全载荷ESP(Encapsulating Security Payload),密钥交换协议IKE(Internet Key Exchange)和用于网络认证及加密的一些算法等。其中,AH和ESP协议用于提供安全服务,IKE协议用于提供密钥交换。

Authentication Header (AH)
Encapsulating Security Payload (ESP)

IPSec also uses other existing encryption standards to make up a protocol suite, which are explained in the next sections.
IPSec has several standards that are supported by Cisco IOS and the PIX Firewall.

IP Security Protocol
Authentication Header (AH)
Encapsulating Security Payload (ESP)
Data Encryption Standard (DES)
Triple DES (3DES)
Diffie-Hellman (D-H)
Message Digest 5 (MD5)
Secure Hash Algorithm-1 (SHA-1)
Rivest, Shamir, and Adelman (RSA) Signatures
Internet Key Exchange (IKE)
Certificate Authorities (CAs)

IP Security 简介

英语:Internet Protocol Security,縮寫為IPsec),是一個协议套件,透过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。

IPsec主要由以下协议组成[1][2]:一、认证头(AH),为IP数据报提供无连接数据完整性、消息认证以及防重放攻击保护[3][4];二、封装安全载荷(ESP),提供机密性、数据源认证、无连接完整性、防重放和有限的传输流(traffic-flow)机密性[5];三、安全關聯(SA),提供算法和数据包,提供AH、ESP操作所需的参数[6]。

IP Security (IPsec) protocols provide security services such as encrypting sensitive data, authentication, protection against replay, and data confidentiality for IP packets.

一种三层隧道加密协议。它为Internet上传输的数据提供了高质量的、可互操作的、基于密码学的安全保证。
特定的通信方之间在IP层通过加密与数据源认证等方式,提供了以下的三种安全服务:

  • 数据机密性(Data Confidentiality): IPsec发送方在通过网络传输包前对包进行加密。
    在传输前,对数据进行加密,可以保证在传输过程中,即使数据包遭截取,信息也无法被读。该特性在IPSec中为可选项,与IPSec策略的具体设置相关。

  • 数据完整性(Data Integrity): IPsec接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改。
    防止传输过程中数据被篡改,确保发出数据和接收数据的一致性。IPSec利用Hash函数为每个数据包产生一个加密检查和,接收方在打开包前先计算检查和,若包遭篡改导致检查和不相符,数据包即被丢弃。

  • 数据来源认证(Data Authentication): IPsec在接收端可以认证发送IPsec报文的发送端是否合法。
    “不可否认性”可以证实消息发送方是唯一可能的发送者,发送者不能否认发送过消息。“不可否认性”是采用公钥技术的一个特征,当使用公钥技术时,发送方用私钥产生一个数字签名随消息一起发送,接收方用发送者的公钥来验证数字签名。由于在理论上只有发送者才唯一拥有私钥,也只有发送者才可能产生该数字签名,所以只要数字签名通过验证,发送者就不能否认曾发送过该消息

  • 防报文重放功能(Antireplay):“反重播”确保每个IP包的唯一性,保证信息万一被截取复制后,不能再被重新利用、重新传输回目的地址。该特性可以防止攻击者截取破译信息后,再用相同的信息包冒取非法访问权。 sender sets the replay bit in the header

IP Security 实现

IP Security 提供了两种安全机:认证和加密。

  1. 认证:使接收方可以确认发送方的真实身份,确认原始数据没有遭到篡改
  2. 加密:发送方发送的数据被加密,防止数据被窃听

协议族:

  1. 网络认证协议AH(Authentication Header,认证头) –> 1st security protocol to provide security services
  2. ESP(Encapsulating Security Payload,封装安全载荷)–> 2nd security protocol to provide security services
  3. IKE(Internet Key Exchange,因特网密钥交换)–>
    IKE协议(互联网密钥交换协议): 两个系统端使用IKE协议来互相验证,并协商建立IPsec通道所需的特定加密参数和两端特定的网段。IKE负责连接双方的身份验证,双方协商得出的密码和使用的加密算法都告知给操作系统,操作系统对两边网段之间的流量数据进行加密传输。

  4. 用于网络认证及加密的一些算法

IPSEC安全机制中两种协议的比较:
AH协议 (IP协议号为51): 提供数据源认证、数据完整性校验和防报文重放功能,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。AH的工作原理是在每一个数据包上添加一个身份验证报文头,此报文头插在标准IP包头后面,对数据提供完整性保护。,但因为IP头部分包含很多变量,比如type of service(TOS),flags,fragment offset,TTL以及header checksum。所以这些值在进行authtication前要全部清零。否则hash会mismatch导致丢包。因此AH不支持NAT转换。

ESP协议 (IP协议号为50): 提供加密、数据源认证、数据完整性校验和防报文重放功能。ESP的工作原理是在每一个数据包的标准IP包头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾。与AH协议不同的是,ESP将需要保护的用户数据进行加密后再封装到IP包中,以保证数据的机密性。

IKE提供端与端之间的动态认证,IKE为Ipsec提供自动协商交换密钥、建立SA的服务
IKE协商建立的SA有两种定义的生命周期:基于时间和基于流量

IPSEC SA:
SA(Security Association,安全联盟)SA是IPsec的基础,也是IPsec的本质。IPsec在两个端点之间提供安全通信,端点被称为IPsec对等体。SA是通信对等体间对某些要素的约定,例如,使用哪种协议(AH、ESP还是两者结合使用)、协议的封装模式(传输模式和隧道模式)、加密算法(DES、3DES和AES)、特定流中保护数据的共享密钥以及密钥的生存周期等。

建立SA的方式有手工配置和IKE自动协商两种。

SA是单向的,在两个对等体之间的双向通信,最少需要两个SA来分别对两个方向的数据流进行安全保护。同时,如果两个对等体希望同时使用AH和ESP来进行安全通信,则每个对等体都会针对每一种协议来构建一个独立的SA。

SA由一个三元组来唯一标识,这个三元组包括SPI(Security Parameter Index,安全参数索引)、目的IP地址、安全协议号(AH或ESP)。

SPI是用于唯一标识SA的一个32比特数值,它在AH和ESP头中传输。在手工配置SA时,需要手工指定SPI的取值。使用IKE协商产生SA时,SPI将随机生成。
通过IKE协商建立的SA具有生存周期,手工方式建立的SA永不老化。

IKE协商建立的SA的生存周期有两种定义方式:

  • 基于时间的生存周期,定义了一个SA从建立到失效的时间;
  • 基于流量的生存周期,定义了一个SA允许处理的最大流量。
    生存周期到达指定的时间或指定的流量,SA就会失效。SA失效前,IKE将为IPsec协商建立新的SA,这样,在旧的SA失效前新的SA就已经准备好。在新的SA开始协商而没有协商好之前,继续使用旧的SA保护通信。在新的SA协商好之后,则立即采用新的SA保护通信。

决定了对报文进行何种处理
协议、算法、密钥

每个IPSec SA都是单向的
手工建立/IKE协商生成

IPSec对数据流提供的安全服务通过SA来实现
SPD(Security Policy Database)
SAD(Security Association Database)

SA[Security Associations]是单向,在两个对等体之间的双向通信,最少需要两个SA来分别对两个方向的数据流进行安全保护。

4. 认证算法和加密算法

4.1 认证算法
认证算法的实现主要是通过杂凑函数。杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,
该输出称为消息摘要。IPsec对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。

IPsec使用两种认证算法:

  1. MD5:MD5通过输入任意长度的消息,产生128bit的消息摘要
  2. SHA-1:SHA-1通过输入长度小于2的64次方bit的消息,产生160bit的消息摘要

4.2 加密算法
加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。

目前设备的IPsec实现三种加密算法:

  1. DES(Data Encryption Standard):使用56bit的密钥对一个64bit的明文块进行加密。
  2. 3DES(Triple DES):使用三个56bit的DES密钥(共168bit密钥)对明文进行加密。
  3. AES(Advanced Encryption Standard):使用128bit、192bit或256bit密钥长度的AES算法对明文进行加密。

这三个加密算法的安全性由高到低依次是:AES、3DES、DES,安全性高的加密算法实现机制复杂,运算速度慢。对于普通的安全要求,DES算法就可以满足需要。

协商方式

两种协商方式建立SA:

手工方式(manual):
配置比较复杂,创建SA所需的全部信息都必须手工配置,而且不支持一些高级特性(例如定时更新密钥),但优点是可以不依赖IKE而单独实现IPsec功能。

IKE自动协商(isakmp):
方式相对比较简单,只需要配置好IKE协商安全策略的信息,由IKE自动协商来创建和维护SA。
当与之进行通信的对等体设备数量较少时,或是在小型静态环境中,手工配置SA是可行的。对于中、大型的动态网络环境中,推荐使用IKE协商建立SA。

工作模式(封装模式)

  1. 隧道(tunnel)模式:用户的整个IP数据包被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中。
    通常,隧道模式应用在两个安全网关之间的通讯。
  2. 传输(transport)模式:只是传输层数据被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被放置在原IP包头后面。
    通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的通讯。

data encapsulation diagram

https://zh.wikipedia.org/wiki/IPsec

IPsec协议必须处理可靠性和分片的问题
认证头(AH)
认证头(Authentication Header,AH)被用来保证被传输分组的完整性和可靠性。此外,它还保护不受重放攻击。认证头试图保护IP数据报的所有字段,那些在传输IP分组的过程中要发生变化的字段就只能被排除在外。当认证头使用非对称数字签名算法(如RSA)时,可以提供不可否认性(RFC 1826)[10]。

认证头分组图示:

0 1 2 3
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
下一个头 载荷长度 保留
安全参数索引(SPI)
序列号
认证数据(可变长度)
字段含义:

下一个头:标识被传送数据所属的协议。
载荷长度:认证头包的大小。
保留:为将来的应用保留(目前都置为0)。
安全参数索引:与IP地址一同用来标识安全参数。
序列号:单调递增的数值,用来防止重放攻击。
认证数据:包含了认证当前包所必须的数据。

将VPN主要划分为两类,一类是工作于客户端到服务端的模式,像OpenVPN,SSL VPN,L2TP,PPTP这些都是需要客户端主动发起连接,拨到Server端在两者之间建立一个逻辑上的隧道 (tunnel)进行通信。这种方式一般适用于个人到总部场景。

另外一种就是站点到站点(site-to-site)的模式,像OpenSwan,StrongSwan, Raccoon 等软件,这种情况下两端会各有一个设备负责来建立两个站点之间安全通信的隧道,任何需要到对端的通信都会触发设备来建立安全隧道通信。 那么公司原有数据中心与云通信都是双向通信,所以站点到站点更合理。 实际上这里说的 VPN 即是指 IPsec VPN,IPsec 是一种工业标准,只要支持这种标准的设备都可以互相协商建立一个安全的隧道出来,比如支持的硬件设备有路由器,防火墙以及专业的 VPN 设备

IPSEC Over GRE(IPSec在里,GRE在外) OR GER Over IPSEC (GRE 在里, IPSec在外)

  • IPSec建立的隧道在设计时就只支持IP单播,并且也不支持组播,即不能传递路由协议,所以IGP动态路由协议的流量不可能穿越IPSec隧道, 并且也不支持非IP协议的流量。
  • GRE只提供了数据包的封装,它并没有加密功能来防止网络侦听和攻击,不支持对于数据完整性以及身份认证的验证功能。支持传递路由协议。

IPSEC Over GRE:
先把需要加密的数据包封装成IPSEC包,然后再扔到GRE隧道里。作法是把IPSEC的加密图作用在Tunnel口上的,即在Tunnel口上监控(访问控制列表监控本地ip网段-源i和远端ip网段-目的地),是否有需要加密的数据流,有则先加密封装为IPSEC包,然后封装成GRE包进入隧道(这里显而易见的是,GRE隧道始终无论如何都是存在的,即GRE隧道的建立过程并没有被加密),同时,未在访问控制列表里的数据流将以不加密的状态直接走GRE隧道,即存在有些数据可能被不安全地传递的状况。

1
2
3
4
a. 访问控制列表,针对两个网段的数据流,如:
ip access-list extended vpn12
permit ip 10.1.1.0 0.0.0.255 10.2.2.0 0.0.0.255
b. 加密图放在Tunnel口

GRE Over IPSEC:
先把数据分装成GRE包,然后再分装成IPSEC包。做法是在物理接口上监控,是否有需要加密的GRE流量(访问控制列表针对GRE两端的设备ip),所有的这两个端点的GRE数据流将被加密分装为IPSEC包再进行传递,这样保证的是所有的数据包都会被加密,包括隧道的建立和路由的建立和传递。

1
2
3
4
a. 访问列表,针对两个路由器之间的GRE流,如:
ip access-list extended vpn12
permit gre host 172.16.11.2 host 172.16.22.2
b. 加密图作用在物理口。

只有当GRE Over IPSEC的时候,才可以将模式改为传输模式。

L2TP(Layer 2 Tunneling Protocol) v.s. IPSec

CI (Continous Integeration) && CD (Continous Delivery)

软件交付管道以快速、自动化和可重复的方式从源代码生成发布版本。如何完成这项工作的总体设计称为“持续交付”(CD)。启动装配线的过程称为“持续集成”(CI)。确保质量的过程称为“持续测试”,将最终产品提供给用户的过程称为“持续部署”。一些专家让这一切简单、顺畅、高效地运行,这些人被称为运维开发DevOps践行者。

支持一下
扫一扫,支持forsigner
  • 微信扫一扫
  • 支付宝扫一扫