ipsec协议(转)

from:http://lulu1101.blog.51cto.com/4455468/816875
ipsec协议

2012-03-25 23:40:28

IPSec 协议简介

IPSec (IP Security)协议族是IETF 制定的一系列协议,它为 IP 数据报提供了高质量的、可互操作的、基于密码学的安全性。特定的通信方之间在 IP 层通过加密与数据源验证等方式,来保证数据报在网络上传输时的私有性、完整性、真实性和防重放。 
说明:
私有性(Confidentiality )指对用户数据进行加密保护,用密文的形式传送。
完整性(Data integrity )指对接收的数据进行验证,以判定报文是否被篡改。
真实性(Data authentication )指验证数据源,以保证数据来自真实的发送者。
防重放(Anti-replay )指防止恶意用户通过重复发送捕获到的数据包所进行的攻击,即接收方会拒绝旧的或重复的数据包。
 

IPsec具有以下优点:

支持IKEInternet Key Exchange,因特网密钥交换),可实现密钥的自动协商功能,减少了密钥协商的开销。可以通过IKE建立和维护SA的服务,简化了IPsec的使用和管理。

所有使用IP协议进行数据传输的应用系统和服务都可以使用IPsec,而不必对这些应用系统和服务本身做任何修改。

对数据的加密是以数据包为单位的,而不是以整个数据流为单位,这不仅灵活而且有助于进一步提高IP数据包的安全性,可以有效防范网络攻击。

IPsec的协议实现

IPSec 通过AH  (Authentication Header,认证头)和ESP (Encapsulating Security Payload,封装安全载荷)两个安全协议实现了上述目标。为简化 IPSec  的使用和管理,IPSec 还可以通过 IKEInternet  Key  Exchange,因特网密钥交换协议)进行自动协商交换密钥、建立和维护安全联盟的服务。

IPsec提供了两种安全机制:认证和加密。认证机制使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。加密机制通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。

IPsec协议中的AH协议定义了认证的应用方法,提供数据源认证和完整性保证;ESP协议定义了加密和可选认证的应用方法,提供数据可靠性保证。

(1)     AH 协议(IP协议号为51

AH 是报文头验证协议,主要提供的功能有数据源验证、数据完整性校验和防报文重放功能;然而,AH 并不加密所保护的数据报。

(2)     ESP 协议(IP协议号为50

ESP 是封装安全载荷协议。它除提供AH 协议的所有功能外(但其数据完整性校验不包括 IP头),还可提供对 IP 报文的加密功能。

说明:

AH 和ESP 可以单独使用,也可以同时使用。对于AH 和ESP,都有两种操作模式:传输模式和隧道模式。

(3)  IKE 协议

IKE 协议用于自动协商AH 和 ESP 所使用的密码算法,并将算法所需的必备密钥放到恰当位置。

说明: IKE 协商并不是必须的,IPSec 所使用的策略和算法等也可以手工协商。

IPSec 基本概念

1. 安全联盟

IPSec 在两个端点之间提供安全通信,端点被称为 IPSec 对等体。

IPSec  能够允许系统、网络的用户或管理员控制对等体间安全服务的粒度。通过 SA  (Security   Association,安全联盟),IPSec 能够对不同的数据流提供不同级别的安全保护。

安全联盟是 IPSec 的基础,也是 IPSec 的本质。SA 是通信对等体间对某些要素的约定,例如,使用哪种协议(AH、ESP 还是两者结合使用)、协议的操作模式(传输模式和隧道模式)、加密算法(DES 和 3DES)、特定流中保护数据的共享密钥以及密钥的生存周期等。 
安全联盟由一个三元组来唯一标识,这个三元组包括 SPI(Security   Parameter  Index,安全参数索引)、目的IP 地址、安全协议号(AH 或 ESP)。SPI 是为唯一标识 SA 而生成的一个 32 比特的数值,它在AH 和 ESP 头中传输。  

安全联盟具有生存周期。生存周期的计算包括两种方式:

以时间为限制,每隔指定长度的时间就进行更新;

以流量为限制,每传输指定的数据量(字节)就进行更新。

2. 安全联盟的协商方式

安全联盟的协商方式有两种,一种是手工方式(manual),一种是 IKE自动协商(isakmp)方式。

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

IKE自动协商(isakmp)方式相对比较简单,只需要配置好IKE协商安全策略的信息,由IKE自动协商来创建和维护SA。

当与之进行通信的对等体设备数量较少时,或是在小型静态环境中,手工配置SA是可行的。对于中、大型的动态网络环境中,推荐使用IKE协商建立SA

 

3. IPSec协议的操作模式

IPSec协议有两种操作模式:传输模式和隧道模式。SA中指定了协议的操作模式。在传输模式下,AH或 ESP被插入到IP头之后但在所有传输层协议之前,或所有其他 IPSec协议之前。在隧道模式下,AH或 ESP插在原始 IP头之前,另外生成一个新头放到 AH或 ESP之前。不同安全协议在传输模式和隧道模式下的数据封装形式(传输协议以 TCP为例)如下图所示:

从安全性来讲,隧道模式优于传输模式。它可以完全地对原始 IP数据报进行验证和加密;此外,可以使用 IPSec对等体的 IP地址来隐藏客户机的 IP地址。从性能来讲,隧道模式比传输模式占用更多带宽,因为它有一个额外的 IP头。因此,到底使用哪种模式需要在安全性和性能间进行权衡。
 

4. 验证算法与加密算法

 
 
(1)  验证算法
AH和 ESP都能够对 IP报文的完整性进行验证,以判别报文在传输过程中是否被篡改。验证算法的实现主要是通过杂凑函数,杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,该输出称为消息摘要。IPSec对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。一般来说 IPSec使用两种验证算法:
MD5:MD5通过输入任意长度的消息,产生 128bit的消息摘要。
SHA-1:SHA-1通过输入长度小于 2的 64次方比特的消息,产生 160bit的消息摘要。SHA-1的摘要长于 MD5,因而是更安全的。
 
(2)  加密算法
ESP能够对 IP报文内容进行加密保护,防止报文内容在传输过程中被窥探。加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。一般来说 IPSec使用两种加密算法:
DES:使用 56bit的密钥对一个 64bit的明文块进行加密。
3DES:使用三个 56bit的 DES密钥(共 168bit密钥)对明文进行加密。
无疑,3DES具有更高的安全性,但其加密数据的速度要比 DES慢得多。
 

IPSec配置

 
 
1. 手工协商配置
IPSec配置主要包括手工协商配置和自动协商配置。其中,手工协商配置包括:
1> 配置访问控制列表
访问控制列表的作用:根据是否与访问控制列表匹配,可以确定哪些 IP包需经 IPSec处理后再发送,哪些IP包直接转发。需要保护的安全数据流使用扩展 IP访问控制列表进行定义。

acl acl-number

rule normal special }{ permit deny pro-number[source source-addr source-wildcard any ][source-port operator port1 port2 ] ] [ destination dest-addr dest- wildcard any ][destination-port operator port1 port2 ] ] [icmp-type icmp-type icmp-code][logging]

2>     配置安全提议
安全提议保存 IPSec需要使用的特定安全性协议以及加密/验证算法, 为 IPSec协商安全联盟提供各种安全参数。为了能够成功的协商 IPSec的安全联盟,两端必须使用相同的安全提议。
包括以下几点:
定义安全提议   ipsec proposal proposal-name
设置安全协议对 IP报文的封装模式 (安全隧道的两端所选择的 IP报文封装模式必须一致。) encapsulation-mode transport tunnel }
选择安全协议  transform ah-new ah-esp-new esp-new }
选择加密算法与认证算法(不同的安全协议可以采用不同的验证算法和加密算法。目前, AH支持MD5和SHA-1验证算法;ESP协议支持MD5、SHA-1验证算法和DES、3DES、AES加密算法。) 
transform ah-new ah-esp-new esp-new }
 
3>     配置安全策略
包括以下几点:
创建安全策略  ipsec policy policy-name sequence-number manual
在安全策略中引用安全提议(通过手工方式建立安全联盟,一条安全策略只能引用一个安全提议,并且若已设置了安全提议,必须先删除原先的安全提议后才能设置新的安全提议。)  proposal proposal-name
在安全策略中引用访问控制列  security acl access-list-number
配置隧道的起点和终点  tunnel local ip-address
                                            tunnel remote ip-address
配置安全联盟的 SPI      sa inbound ah esp spi spi-number
                                                           sa outbound ah esp spi spi-number
配置安全联盟使用的密钥(在安全隧道的两端, 本端的输入安全联盟SPI及密钥必须和对端的输出安全联盟SPI及密钥保持一致;本端的输出安全联盟 SPI 及密钥必须和对端的输入安全联盟 SPI及密钥保持一致。)

AH16进制密钥   sa inbound outbound ah hex-key-string hex-key

AH 字符密钥     sa inbound outbound ah string-key string-key

ESP16进制密钥  sa inbound outbound esp encryption-hex hex-key 

 ESP字符密钥    sa inbound outbound esp string-key string-key

 
 
4> 在接口上应用安全策略  ipsec policy policy-name
  

2. 自动协商配置

 
 
对于采用自动协商方式,除完成上述配置后,还需要进行相关的 IKE配置。
IKE创建安全策略联盟的配置包括:
用 IKE创建安全策略联盟   ipsec policy policy-name sequence-number isakmp
配置安全策略引用的访问控制列表   security acl access-list-number
指定安全隧道的终点(对于用 IKE 协商方式创建的安全策略联盟,不需设置本端地址,IKE 能自动地从应用该安全策略的接口上获取本端的地址。)  tunnel remote ip-address
配置安全策略中引用的安全提议   proposal proposal-name1 proposal-name2...proposal-name6 ]


 3.IPSec显示与调试

IPSec 提供以下命令显示安全联盟、安全联盟生存周期、安全提议、安全策略的信息以及 IPSec处理的报文的统计信息。

display命令可在所有视图下进行操作,debugging命令只能在用户视图下操作。

显示安全联盟的相关信息 display ipsec sa [ brief | remote ip-address policy policy-nameseq-number ] | duration ] [ secp slot/card/port  ] ]

显示IPSec处理报文的统计信息 display ipsec statistics [ secp [ slot/card/port  ] ]

显示安全提议的信息 display ipsec proposal [ name proposal-name ] [ secp [slot/card/port  ] ]

显示安全策略的信息 display ipsec policy [ brief | name policy-name [ seq-number ] ] [secp [ slot/card/port  ] ]

显示安全策略模板的信息 display ipsec policy-template [ brief | name policy-name [ seq-number ] ] [ secp slot/card/port  ] ]

打开IPSec的调试功能 debugging ipsec { all | sa | packet [ policy policy-name [ seq-number ] | parameters ip-address protocol spi-number ] | misc  | secp-setting }  [ secp [slot/card/port  ] ]

禁止IPSec的调试功能 undo debugging ipsec { all | sa | packet [ policy policy-name [ seq-number ] | parameters ip-address protocol spi-number ] | misc | secp-setting }  [ secp [slot/card/port  ] ]

上一篇:云计算/云存储---Ceph和Openstack的cinder模块对接方法


下一篇:OpenStack核心组件-cinder存储服务