说明:
私有性(Confidentiality )指对用户数据进行加密保护,用密文的形式传送。
完整性(Data integrity )指对接收的数据进行验证,以判定报文是否被篡改。
真实性(Data authentication )指验证数据源,以保证数据来自真实的发送者。
防重放(Anti-replay )指防止恶意用户通过重复发送捕获到的数据包所进行的攻击,即接收方会拒绝旧的或重复的数据包。
IPsec具有以下优点:
支持IKE(Internet Key Exchange,因特网密钥交换),可实现密钥的自动协商功能,减少了密钥协商的开销。可以通过IKE建立和维护SA的服务,简化了IPsec的使用和管理。
所有使用IP协议进行数据传输的应用系统和服务都可以使用IPsec,而不必对这些应用系统和服务本身做任何修改。
对数据的加密是以数据包为单位的,而不是以整个数据流为单位,这不仅灵活而且有助于进一步提高IP数据包的安全性,可以有效防范网络攻击。
IPsec的协议实现
IPSec 通过AH (Authentication Header,认证头)和ESP (Encapsulating Security Payload,封装安全载荷)两个安全协议实现了上述目标。为简化 IPSec 的使用和管理,IPSec 还可以通过 IKE(Internet 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头。因此,到底使用哪种模式需要在安全性和性能间进行权衡。
(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慢得多。
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
对于采用自动协商方式,除完成上述配置后,还需要进行相关的 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-name[ seq-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 ] ]
KE 协议简介
1. IKE 协议
IPSec 的安全联盟可以通过手工配置的方式建立,但是当网络中节点增多时,手工配置将非常困难,而且难以保证安全性。这时就要使用 IKE(Internet Key Exchange,因特网密钥交换)自动地进行安全联盟建立与密钥交换的过程。
IKE 协议是建立在由 Internet 安全联盟和密钥管理协议 ISAKMP (Internet Security Association and Key Management Protocol )定义的框架上。它能够为IPSec 提供了自动协商交换密钥、建立安全联盟的服务,以简化IPSec 的使用和管理。
IKE 具有一套自保护机制,可以在不安全的网络上安全地分发密钥、验证身份、建立 IPSec 安全联盟。
2. IKE 的安全机制
DH (Diffie-Hellman)交换及密钥分发。Diffie-Hellman 算法是一种公共密钥算法。通信双方在不传送密钥的情况下通过交换一些数据,计算出共享的密钥。加密的前提是交换加密数据的双方必须要有共享的密钥。IKE 的精髓在于它永远不在不安全的网络上直接传送密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥。即使第三者(如黑客)截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。
完善的前向安全性(Perfect Forward Secrecy,PFS)。PFS 是一种安全特性,指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。PFS 是由 DH 算法保障的。
身份验证。身份验证确认通信双方的身份。对于 pre-shared key 验证方法,验证字用来作为一个输入产生密钥,验证字不同是不可能在双方产生相同的密钥的。验证字是验证双方身份的关键。
身份保护。身份数据在密钥产生之后加密传送,实现了对身份数据的保护。
3. IKE 的交换阶段
IKE 使用了两个阶段为 IPSec 进行密钥协商并建立安全联盟:第一阶段,通信各方彼此间建立了一个已通过身份验证和安全保护的通道,此阶段的交换建立了一个ISAKMP 安全联盟,即 ISAKMP SA (也可称IKE SA);第二阶段,用在第一阶段建立的安全通道为 IPSec 协商安全服务,即为 IPSec 协商具体的安全联盟,建立IPSec SA,IPSec SA用于最终的 IP 数据安全传送。
从下图我们可以看出 IKE 和 IPSec 的关系。
具体安全联盟的建立过程如下图所示:
(1) 当一个报文从某接口外出时,如果此接口应用了IPSec,会进行安全策略的匹
配。
(2) 如果找到匹配的安全策略,会查找相应的安全联盟。如果安全联盟还没有建立,则触发 IKE 进行协商。IKE 首先建立阶段 1 的安全联盟,即IKE SA。
(3) 在阶段 1 安全联盟的保护下协商阶段2 的安全联盟,即IPSec SA。
(4) 使用 IPSec SA 保护通讯数据。
4. IKE 的协商模式
在 RFC2409 (The Internet Key Exchange)中规定,IKE 第一阶段的协商可以采用两种模式:
主模式(Main Mode)和野蛮模式(Aggressive Mode )。主模式被设计成将密钥交换信息与身份、认证信息相分离。这种分离保护了身份信息;交换的身份信息受已生成的 Diffie-Hellman 共享密钥的保护。但这增加了3 条消息的开销。
野蛮模式则允许同时传送与 SA、密钥交换和认证相关的载荷。将这些载荷组合到一条消息中减少了消息的往返次数,但是就无法提供身份保护了。
虽然野蛮模式存在一些功能限制,但可以满足某些特定的网络环境需求。例如:远程访问时,如果响应者(服务器端)无法预先知道发起者(终端用户)的地址、或者发起者的地址总在变化,而双方都希望采用预共享密钥验证方法来创建 IKE SA,那么,不进行身份保护的野蛮模式就是唯一可行的交换方法;另外,如果发起者已知响应者的策略,或者对响应者的策略有全面的了解,采用野蛮模式能够更快地创建 IKE SA。
相关配置:
设置安全策略中引用的IKE Peer (仅用于IKE 协商方式)
对于 IKE 协商方式,无需象手工方式那样配置对等体、SPI 和密钥等参数,IKE 将自动协商这些它们,因而仅需要将安全策略和IKE Peer 关联即可。
在安全策略中引用 IKE Peer
ike-peer
peer-name
删除在安全策略中引用的IKE Peer
undo ike-peer
peer-name
配置IKE协商时的本地 ID
在系统视图下进行下列配置
配置IKE协商时的本地ID
ike local-name
router-name
删除本地ID
undo ike local-name
指定IKE对端属性
1. 创建 IKE Peer并进入 IKE Peer视图
通过 IKE Peer,可以定义了一系列属性数据来描述 IKE协商所需的参数,包括创建IKE提议、协商模式、ID类型、NAT穿越、共享密钥、对端地址和对端名称等。
请在系统视图下进行下列配置。
创建IKE Peer并进入IKE Peer视图
ike peer
peer-name
删除指定的IKE Peer
undo ike peer
peer-name
2. 配置 IKE协商模式
请在 IKE Peer视图下进行下列配置。
配置IKE协商方式
exchange-mode {
main | aggressive }
恢复缺省IKE协商方式
undo exchange-mode
缺省情况下,采用主模式进行 IKE协商。
3. 配置 IKE安全提议
请在 IKE Peer视图下进行下列配置。
配置IKE安全提议
ike-proposal
proposal-number
取消IKE安全提议
undo ike-proposal
缺省情况下,采用主模式时使用已配置的所有 IKE 安全提议,采用野蛮模式时使用
缺省的 IKE安全提议。
4. 配置对端 ID类型
当进行 IKE交换时,可以使用对端的 IP地址作为 ID,也可以使用对端名称作为 ID。
请在 IKE Peer视图下进行下列配置。
配置IKE Peer的ID类型
local-id-type { ip | name }
恢复缺省的ID类型
undo local-id-type
缺省情况下,IKE Peer采用的本端 ID类型为 IP地址形式。
5. 配置 IPSec是否需要 NAT穿越
请在 IKE Peer视图下进行下列配置。
使能IPSec的 NAT穿越
nat traversal
禁止IPSec的 NAT穿越
undo nat traversal
缺省情况下,禁止 NAT穿越功能。
6. 配置身份验证字
如果选择了 Pre-shared key验证方法。需要为每个对端配置预共享密钥。建
立安全连接的两个对端的预共享密钥必须一致。
请在 IKE Peer视图下进行下列配置。
配置与对端共享的
pre-shared key pre-shared-key
key
删除身份验证字
undo pre-shared-key
7. 配置对端 IP地址
请在 IKE Peer视图下进行下列配置。
配置对端地址或地址段
remote-address l
ow-ip-address [
high-ip-address ]
删除配置的对端地址
undo remote-address
8. 配置对端名称
在野蛮模式下,可以使用 remote-name命令配置对端名称。
请在 IKE Peer视图下进行下列配置。
配置对端名称
remote-name
name
删除配置的对端名称
undo remote-name
创建IKE安全提议
IKE提议定义了一套属性数据来描述 IKE协商怎样进行安全通信。配置 IKE提议包括创建 IKE提议、选择加密算法、选择验证方法、选择验证算法、选择 Diffie-Hellman组标识和设置安全联盟生存周期。
用户可以按照优先级创建多条 IKE 提议,但是协商双方必须至少有一条匹配的 IKE提议才能协商成功。
采用主模式时:若在协商发起方的 ike peer中指定 IKE提议,IKE协商时将只发送指定的 IKE提议,响应方在自己的IKE提议配置中寻找与发送方指定的 IKE提议相匹配的 IKE提议,如果没有匹配的则协商失败;若发起方的 ike peer中不指定 IKE提议,IKE协商时将发送发起方所有的 IKE提议,响应方在自己的 IKE提议配置中依次寻找与发送方的 IKE提议相匹配的 IKE提议。
采用野蛮模式时:若在协商发起方的 ike peer中指定 IKE提议,同采用主模式的情况;若发起方的 ike peer中不指定 IKE提议, IKE协商时将只发送发送方默认的 IKE提议,响应方也会用默认的 IKE提议匹配。
IKE显示与调试
IKE 提供以下命令显示当前所有安全联盟的状态和每个 IKE 提议配置的参数。display 命令可在所有视图下进行下列操作,debugging 和 reset 命令只能在用户视图下操作。
显示当前已建立的安全通道
displ
ay ike sa [ secp [
slot/card/port ] ]
查看IKE Peer的配置情况
display ike peer [ name
peer-name ] [
secp [
slot/card/port ] ]
删除当前已建立的安全通道
reset ike sa [
connection-id ] [
secp [
slot/card/port ] ]
显示每个IKE提议配置的参数
display ike proposal [ secp [
slot/card/port ] ]
打开IKE的调试信息
debugging ike { all | error | exchange | message | misc | transport } [ secp [
slot/card/port ]
]
关闭IKE的调试信息
undo debugging ike { error | exchange | message | misc | transport } [ secp [
slot/card/port ]
]