一、 IPSEC 原理
(一) IPSEC 的基本功能
1、   IPSEC 的功能
IPSEC 提供通过 IP 网络的数据安全传输的机制。确保数据的机密性、完整性、真实性。
IPSEC 是一套协议,不一定特应的机密、认证和算法。

 

2 IPSEC 的安全性
  数据的机密性: IPSEC 在传输时加密数据,保证不被窃听数据,即使被拦截也不可读。
  数据完整性:以确保数据没有被篡改。
  数据原始认证:即确保数据是希望发送者发送的。
  Anti-replay: 确保每一个数据包是唯一的非复制的。

 

(二) ipsec 协议

 

1、   IKE: 提供一种安全参数协商和创建验证密钥的框架。提供安全密钥交换能力。
2、  ESP :提供加密和认证。 ESP 主要用于 IPSEC 。提供内容加密,也提供认证和完整性检查。提供 DES,3DES AES 加密。

3、 AH :是一种安全协议,提供数据认证。只提供认证和完整性检查,只能提供数据是合法者传送,且数据未被改。提供: HMAC-SHA1 HMAC-MD5 HMAC 的认证

 

(三) IPSEC 的两种模式
      1 、隧道模式:加密和保护完整的 IP 数据包。隧道模式加密或隐藏数据包的 IP 头。加密设备自身拥有 IP 地址用于新的报头。可以被 ESP AH 或者两者一起部署。因新的 IP 报头导致增加了约 20 字节
      2 、传输模式:因为隧道模式中数据包扩展约 20 字节。在转发小的数据包会出现问题。传输模式通过增加 ESP AH IP 头和传输协议和数据间,而 不是增加新的 IP 报头。所以会有更少的数据包扩展。这种模式和 GRE 合在一起用很好。因为 GRE 会增加自已的 IP 报头。隐藏终端的 IP 地址。

 

标准数据:
L2
IP
TCP/UDP  4 层以上数据
 
传输模式:
L2
IP
ESP 头或 AH
TCP/UDP  4 层以上数据
ESP

 

隧道模式:
L2
新的 IP
ESP 头或 AH
IP
TCP/UDP  4 层以上数据
ESP

 

 

(四) IKE (互联网密钥交换)

 

 

IKE 的两个阶段:

 

1、 IKE SA:

 

1 IKE 第一阶段的作用:
IKE SA 。建立 IKE 两端的 SA 。协商 IKE 策略集,认证对端,为第二阶段 IPSEC SA 的传输,在端点间建一个安全通信通道。   第一阶段有两种模式:主模式和侵占模式。
2 IKE 1 阶段有三次协商过程及主要参数 :

 

(1)              IKE SA 交换: 协商砍认有关安全策略的过程。交换加密算法、认证算法、认证方法。
加密算法 :DES  3DES

认证算法:如: MD5 SHA 等。

认证方法:如: pre-share( 预共享密钥 ) rsa-sig(RSA 签名认证 ) rsa-ener(RSA 加密 nonces 认证 )

   2 Diffie-heleman 密钥交换

 

        一种公钥交换模式。交换 diffie-heleman 公共值和辅助信息。加密密钥在这个时候产生。有两组:一组定义了 768 位算法;一组定义了 1024 位的 MOPP 算法。根据这些产生对称密钥。即配 IKE 中的 group 参数的配置

 

3 )认证对端身份

 

  用于交换双方的 ID 信息和验证数据。进行身份验证和对整个一阶段的 IKE SA 交换进行验证。主要是配置这三种认证方法( pre-share( 预共享密钥 ) rsa-sig(RSA 签名认证 ) rsa-ener(RSA 加密 nonces 认证 ) )的具体认证参数。前面只是指定了用哪种认证方法,但没有确定每种认证方法的认证参数和内容。这里就是指定选中的认证方法的认证参数和内容。

 

 

 

2、   IPSEC SA 阶段:第二阶段:

 

IKE SA 第一阶段创建 IKE 安全通道下,生成 IPSEC SA

主要是协商 IPSEC 参数,建立 IPSEC SA ,及协商 IPSEC 生命周期等。

 

安全联盟 SA ,也叫 ipsec sa ,也叫转换集。

 

SA SPI 安全索引、目标 IP 地址、 IPSEC 协议( 包括加密算法、认证算法、传输模式、生命周期)组成。这三项组成唯一的 SA

 

 

   

二、 配置步骤:

 

1、  IKE 第一阶段的协商配置。 ISAKMP 的配置。

 

加密算法
认证算法

认证方法:如: pre-share( 预共享密钥 ) rsa-sig(RSA 签名认证 ) rsa-ener(RSA 加密 nonces 认证 )

            Diffie-helemen 密钥交换

 

 

2、  配置 IKE 第二阶段。即 ipsec sa 的配置
       
         配置: 加密算法

认证算法

传输模式

生命周期

 

3、   配置加密映射表,并把 ipsec sa 关联于加密映射表
并把访问控制列表应用于加密映射表,设定对端 IP 地址
(还可以先配置一个动态加密映射表关联 IPSEC SA ,再把动态加密映射表关联到加密映射表)

 

 

4、  配置受保护的数据流的访问列表
配置需要加密的数据流,即受保护的数据。哪些数据可以通过 ××× 隧道传输到另一方
用访问控制表列来控制

 

5、  把映射表应用于建立 ××× 隧道的接口

 

 

 

 

 

 

 

 

 

 

三、 配置实例:

 

(一)   IKE 策略的配置

 

(config)#crypto isakmp enable                         // 启用 IKE
(config)#no crypto isakmp enable
(config)#crypto isakmp policy {policy_number}          // 定义策略,后面是策略号
(isakmap)#encryption {des |3des}                      // 定义加密算法
(isakmp)#hash  {sha|md5}                           // 定义散列算法,即认证算法
(isakmp)#authentication {pre-share | rsa-sig  | rsa-encr }   // 定义认证方法

 

Pre-share: 通过手工配置预共享密钥为认证方法。
Rsa-sig: 要求使用 CA 并且提供防止抵赖功能。默认值
Rsa-encr: 不要 CA ,提供防止抵赖功能。

 

(isakmp)#group {1 | 2}                              // 定义 diffie-heleman 密钥组
(isakmp)#lifetime {seconds}                         // 定义 IKE SA 的生命周期   

 

 

三种认证方法的配置:

 

1、  pre-share

 

  (config)#crypto isakmp key {key-string } {address | hostname} {peer-address | peer-hostname }

 

Key-sting: 共享密钥
例:
(config)#crypto isakmp key zj8s address 192.168.3.11    // 指定对端路由器接口的 IP 地址或名称。

 

 

 

 

(二)   IPSEC SA 的配置,即 IKE 第二步的配置

 

(config)# crypto ipsec transform-set  {name} {ah-md5-hmac | ah-sha-hmac } {esp-des |esp-3des |esp-rfc-1829}    //name 为变换集名。 后面分别是认证算法和加密算法定义

 

crypto-transfom #mode {tunnel |transport }       // 选择模式,是隧 道模式还是传输模式

 

config #crypto ipsec security-association liftmme seconds {seconds}  // 按时间定义 IPSEC SA 全局生命期,当达到一定秒数则生命到期。

 

config #crypto ipsec security-association liftmme killobytes {killobytes}  // 按字节数定义 IPSEC SA 全局生命期。当达到一定的秒数则生命到期。

 

 

( ) 定义访问列表,以定义受保护的数据流

 

(config)#access-list 101 permit 192.168.9.0 0.0.0.255     192.168.3.0 0.0.0.255
(confgi)#access-list 101 deny any any

 

 

 

 

( ) 定义保密图

 

   可先定义动态保密图,与变换集相关联,再把动态保密图应用到保密图中。
   也可直接把变换集关联到保密图中。

 

 

2、  定义动态保密图(也叫动态保密映射表)

 

 

(cryptomap)# set transform-set {transform-set-name}       // 引用定义的变换集,即 ipsec SA
(cryptomap)# match address access-list {lsit-number}      // 引用受保护的数据流的访问列表                 
(cryptomap)#set peer {hostmae |addrss }                // 设置对端 IP 地址或名称

 

config #crypto map {map-name} {map-sequence} ipsec-isakmp  dynamic {dyn-map-name}

 

// 把动态保密图加入到保密图中。
Ipsec-isakmp: 指自动用 IKE 创建的策略。还可以手动创建 IKE 策略  
    Map-name map-sequence 是保密图的名和序号
Dyn-map-name: 是上面定义过的动态保密图的名称。

 

2 、可以直接定义保密图
config)#crypto map { map-name} {map-sequence} {ipsec-isakmp | ipsec-manual}  // 定义保密图名和序号。 Ipsec-isakmp 是自动用 IKE 创建策略。 Ipsec-manual 是手工创建

 

(cryptomap)# set transform-set {transform-set-name}       // 引用定义的变换集,即 ipsec SA
(cryptomap)# match address access-list {lsit-number}      // 引用受保护的数据流的访问列表                 
(cryptomap)#set peer {hostmae |addrss }                // 设置对端 IP 地址或名称

 

 

 

(五)把保密映射表应用到接口

 

 

config-if # crypto map {map-name}    // 把保密图应用到接口