IPsec 中的新增功能Solaris 10 8/07:从此发行版开始,IPsec 以隧道模式全面实现隧道,并且支持隧道的实用程序有所修改。
Solaris 10 1/06:从此发行版开始,IKE 与 NAT 遍历支持完全兼容,如 RFC 3947 和 RFC 3948 中所述。IKE 操作使用加密框架中的 PKCS #11 库,从而提高了性能。 加密框架为使用 metaslot 的应用程序提供了 softtoken 密钥库。IKE 使用 metaslot 时,可以选择在磁盘上、已连接的板上或在 softtoken 密钥库中存储密钥。
IPsec 介绍IPsec 通过验证包、加密包或同时执行这两种操作来保护 IP 包。IPsec 在 IP 模块内部执行,刚好在应用层之下。因此,Internet 应用程序可以直接利用 IPsec,而不必配置自身以使用 IPsec。若使用得当,IPsec 是保证网络通信安全的有效工具。
调用 IPsec 时,IPsec 将安全机制应用于发往 IP 目标地址的 IP 数据报。接收者使用其 SADB 中的信息来检验到达的包是否合法并对其进行解密。应用程序也可以调用 IPsec,以便在每个套接字级别将安全机制应用于 IP 数据报。 请注意,套接字的行为不同于端口:
IPsec RFCInternet 工程任务组 (Internet Engineering Task Force, IETF) 已经发布了许多介绍 IP 层安全体系结构的互联网信息文档和标准 (Requests for Comment, RFC)。所有 RFC 均受 Internet 协会版权保护。有关指向 RFC 的链接,请参见 http://ietf.org/。以下 RFC 列表包含更为常见的 IP 安全参考:
IPsec 术语IPsec RFC 定义许多用于识别何时在系统上实现 IPsec 的术语。下表列出了 IPsec 术语,提供了常用的首字母缩写词并定义了每个术语。有关在密钥协商中使用的术语的列表,请参见表 22–1。 表 19–1 IPsec 术语、首字母缩写词和用法
IPsec 包流图 19–1 显示了当已经在外发包上调用 IPsec 时,作为 IP datagram(IP 数据报)一部分的带有 IP 地址的包如何继续传送。此流程图说明了可以对包应用验证头 (authentication header, AH) 和封装安全有效负荷 (encapsulating security payload, ESP) 实体的位置。如何应用这些实体以及如何选择算法将在后续各节中进行介绍。 图 19–2 显示了 IPsec 传入过程。 图 19–1 应用于外发包过程的 IPsec![]()
图 19–2 应用于传入包过程的 IPsec![]()
IPsec 安全关联IPsec 安全关联 (security association, SA) 指定由通信主机识别的安全属性。单个 SA 保护单一方向的数据,此保护针对单个主机或一组(多点传送)地址。由于多数通信为对等通信或客户机/服务器通信,因此,必须存在两个 SA 来保证两个方向的通信安全。 以下三个元素唯一地标识 IPsec SA:
SPI 是任意 32 位的值,与 AH 或 ESP 包一起传输。ipsecah(7P) 和 ipsecesp(7P) 手册页说明了由 AH 和 ESP 提供的保护范围。完整性校验值用于验证包。如果验证失败,则会丢弃包。 安全关联存储在安全关联数据库 (security associations database, SADB) 中。基于套接字的管理引擎 pf_key 接口使特权应用程序可以管理数据库。
IPsec 中的密钥管理安全关联 (security association, SA) 需要使用材料创建密钥以便进行验证和加密。对此加密材料的管理称为密钥管理。Internet 密钥交换 (Internet Key Exchange, IKE) 协议自动处理密钥管理。您还可以使用 ipseckey 命令手动管理密钥。 IPv4 和 IPv6 包上的 SA 可以使用任一密钥管理方法。除非您有充分的理由使用手动密钥管理,否则,请首选使用自动密钥管理。例如,与 Solaris 系统之外的系统进行交互操作可能需要手动密钥管理。
IPsec 保护机制
AH 使用验证算法来保护数据。ESP 使用加密算法来保护数据。ESP 还可以使用验证算法来保护数据。算法的每种实现方式称为机制。 验证头authentication header(验证头)为数据报提供了数据验证、高完整性以及重放保护。AH 保护 IP 数据报的更为重要的部分。如下图所示,AH 插在 IP 数据包头和传输头之间。 ![]() 传输头可以是 TCP、UDP、SCTP 或 ICMP。如果使用的是 tunnel(隧道),则传输头可以是另一个 IP 数据包头。 封装安全有效负荷encapsulating security payload, ESP(封装安全有效负荷)模块为 ESP 所封装的内容提供了保密性。ESP 也提供 AH 提供的服务。但是,ESP 仅为 ESP 所封装的数据报部分提供保护。 ESP 的验证服务是可选的。借助这些服务,您可以对同一数据报结合使用 ESP 和 AH,而无需考虑冗余设置。由于 ESP 使用支持加密的技术,因此 ESP 必须符合美国出口控制法。 由于 ESP 封装其数据,因此 ESP 仅保护数据报中跟在其后的数据,如下图所示。 ![]() 在 TCP 包中,ESP 仅封装 TCP 数据包头及其数据。如果包是 IP-in-IP 数据报,则 ESP 会保护内部的 IP 数据报。由于每个套接字的策略允许自封装,因此,ESP 可以在需要时封装 IP 选项。 如果设置了自封装,会生成 IP 数据包头的副本来构建 IP-in-IP 数据报。例如,如果未在 TCP 套接字上设置自封装,会以下列格式发送数据报:
如果在 TCP 套接字上设置了自封装,则会以下列格式发送数据报:
有关进一步介绍,请参见IPsec 中的传输模式和隧道模式。 使用 AH 和 ESP 时的安全注意事项表 19–2 由 IPsec 中的 AH 和 ESP 提供的保护
IPsec 中的验证算法和加密算法IPsec 安全协议使用两种类型的算法,即验证和加密。AH 模块使用验证算法。ESP 模块可以使用加密算法以及验证算法。您可以使用 ipsecalgs 命令获取系统上的算法及其属性的列表。有关更多信息,请参见 ipsecalgs(1M) 手册页。您也可以使用 getipsecalgbyname(3NSL) 手册页中介绍的功能来检索算法属性。 Solaris 系统上的 IPsec 利用 Solaris 加密框架来使用算法。此框架提供了一个主要的算法仓库,同时还提供了其他服务。使用此框架,IPsec 可以利用高性能的加密硬件加速器。此框架还提供了资源控制功能。例如,您可以使用此框架来限制在内核的加密操作中花费的 CPU 时间。 详细信息,请参见以下内容: IPsec 中的验证算法验证算法将生成完整性校验和值或基于数据和密钥的摘要。AH 模块使用验证算法。ESP 模块也可以使用验证算法。 IPsec 中的加密算法加密算法使用密钥来加密数据。IPsec 中的 ESP 模块使用加密算法。算法以块大小为单位对数据进行操作。 不同的 Solaris 10 OS 发行版提供不同的缺省加密算法。
IPsec 保护策略IPsec 保护策略可以使用任何安全机制。IPsec 策略可以在以下级别应用:
IPsec 会将系统范围的策略应用于外发数据报和传入数据报。外发数据报既可以在受保护的情况下发送,也可以在不受保护的情况下发送。如果应用了保护,则算法可能是特定的,也可能是非特定的。由于存在系统可识别的其他数据,因此可以将其他一些规则应用于外发数据报。传入数据报可以被接受或丢弃。确定丢弃还是接受传入数据报时取决于若干个条件,这些条件有时会重叠或冲突。可以通过确定首先要解析的规则来解决冲突。将自动接受通信,但是当策略项表明通信应跳过所有其他策略时除外。 可以跳过通常保护数据报的策略。您既可以在系统范围策略内指定例外,也可以在每个套接字策略中请求跳过。对于系统内的通信,将执行策略,但是不会应用实际的安全机制。相反,应用于系统内部包上的外发策略将转移到应用了那些机制的传入包。 可以使用 ipsecinit.conf 文件和 ipsecconf 命令来配置 IPsec 策略。有关详细信息和示例,请参见 ipsecconf(1M) 手册页。 IPsec 中的传输模式和隧道模式IPsec 标准定义了 IPsec 操作的两种不同模式:传输模式和隧道模式。模式不影响包的编码。在每种模式下,包受 AH、ESP,或二者的保护。如果内部包是 IP 包,这两种模式在策略应用程序方面有所不同,如下所示:
在传输模式下,外部头、下一个头以及下一个头支持的任何端口都可用于确定 IPsec 策略。实际上,IPsec 可在一个端口不同粒度的两个 IP 地址之间强制实行不同的传输模式策略。例如,如果下一个头是 TCP(支持端口),则可为外部 IP 地址的 TCP 端口设置 IPsec 策略。类似地,如果下一个头是 IP 数据包头,外部头和内部 IP 数据包头可用于决定 IPsec 策略。 隧道模式仅适用于 IP-in-IP 数据报。如果在家中的计算机用户要连接到中心计算机位置,以隧道模式进行隧道连接将会很有用。在隧道模式下,IPsec 策略强制实施于内部 IP 数据报的内容中。可针对不同的内部 IP 地址强制实施不同的 IPsec 策略。也就是说,内部 IP 数据包头、其下一个头及下一个头支持的端口,可以强制实施策略。与传输模式不同,在隧道模式下,外部 IP 数据包头不指示其内部 IP 数据报的策略。 因此,在隧道模式下,可为路由器后面的 LAN 的子网和这些子网上的端口指定 IPsec 策略。也可在这些子网上为特定的 IP 地址(即主机)指定 IPsec 策略。这些主机的端口也可以具有特定的 IPsec 策略。但是,如果有动态路由协议在隧道上运行,请勿使用子网选择或地址选择,因为对等网络上的网络拓扑的视图可能会更改。更改可能使静态 IPsec 策略失效。有关包括配置静态路由的隧道设置过程示例,请参见使用 IPsec 保护 VPN。 在 Solaris OS 中,只能在 IP 隧道连接网络接口上强制执行隧道模式。ipsecconf 命令提供 tunnel 关键字来选择 IP 隧道连接网络接口。当规则中出现 tunnel 关键字时,在此规则中指定的所有选定器都应用到内部包中。 在传输模式下,ESP、AH、或二者可以保护该数据报。 下图显示了不受保护的 TCP 包的 IP 数据包头。 图 19–3 携带 TCP 信息的不受保护的 IP 包![]()
在传输模式下,ESP 按下图所示的方式保护数据。阴影部分表示包的加密部分。 图 19–4 携带 TCP 信息的受保护的 IP 包![]()
图 19–5 由验证头保护的包![]()
实际上,在数据出现在数据报中之前,AH 便已包含数据。因此,即使在传输模式下,AH 提供的保护也会包含一些 IP 数据包头。 在隧道模式下,整个数据报处于 IPsec 数据包头的保护之内。图 19–3 中的数据报由外部 IPsec 数据包头(在此示例中为 ESP)以隧道模式保护,如下图所示。 图 19–6 以隧道模式保护的 IPsec 包![]()
ipsecconf 命令包括用于将隧道设置为隧道模式或传输模式的关键字。
虚拟专用网络和 IPsec已配置的隧道是点对点接口。使用隧道,可以将一个 IP 包封装到另一个 IP 包中。正确配置的隧道同时要求隧道源和隧道目标。有关更多信息,请参见 tun(7M) 手册页和 针对 IPv6 支持配置隧道。 隧道可创建明显的 IP physical interface(物理接口)。物理链接的完整性取决于基础安全协议。如果您安全地设置了安全关联 (security association, SA),则可以信任隧道。退出隧道的包必须源于隧道目标中指定的对等设备。如果此信任存在,则可以使用按接口 IP 转发来创建 virtual private network, VPN(虚拟专用网络)。 您可以使用 IPsec 来构造 VPN。IPsec 保证连接安全。例如,使用 VPN 技术将办公室与独立网络连接的组织可以部署 IPsec 来保证两个办公室之间的通信安全。 下图说明了两个办公室如何使用 Internet 来形成其网络系统上部署有 IPsec 的 VPN。 图 19–7 虚拟专用网络![]()
有关设置过程的详细示例,请参见如何使用通过 IPv4 实现的处于隧道模式的 IPsec 隧道保护 VPN。有关 IPv6 网络的信息,请参见如何使用通过 Ipv6 实现的处于隧道模式的 IPsec 隧道保护 VPN。 IPsec 和 NAT 遍历IKE 可以通过 NAT 盒 (NAT box) 来协商 IPsec SA。此功能使系统可以从远程网络安全地连接,即使当系统位于 NAT 设备之后也可如此。例如,在家工作或从会议地点登录的雇员可以使用 IPsec 保护其通信。 NAT 表示网络地址转换。NAT 盒 (NAT box) 用于将专用内部地址转换为唯一的 Internet 地址。NAT 常见于 Internet 的公共访问点,例如宾馆。有关更全面的论述,请参见使用 Solaris IP 过滤器的 NAT 功能。 当 NAT 盒 (NAT box) 位于通信系统之间时使用 IKE 的能力称为 NAT 遍历,即 NAT-T。在 Solaris 10 发行版中,NAT-T 具有以下限制:
以下 RFC 介绍了 NAT 的功能和 NAT-T 的限制。可以从 http://www.rfc-editor.org 中检索这些 RFC 的副本。
有关如何通过 NAT 使用 IPsec 的信息,请参见为移动系统配置 IKE(任务列表)。 IPsec 和 SCTPSolaris 10 发行版支持流控制传输协议 (Streams Control Transmission Protocol, SCTP)。支持使用 SCTP 协议和 SCTP 端口号来指定 IPsec 策略,但是这种方法不可靠。RFC 3554 中指定的 SCTP 的 IPsec 扩展尚未实现。这些限制可能会使为 SCTP 创建 IPsec 策略的过程更为复杂。 SCTP 可以在单个 SCTP 关联的上下文中使用多个源地址和目标地址。当 IPsec 策略应用于单个源地址或目标地址时,通信可能会在 SCTP 切换此关联的源地址或目标地址时失败。IPsec 策略仅识别初始地址。有关 SCTP 的信息,请参阅 RFC 和SCTP 协议。 IPsec 和 Solaris ZonesIPsec 是在全局区域中配置的。IPsec 策略配置文件 ipsecinit.conf 仅存在于全局区域中。该文件既可具有应用到非全局区域的项,又可具有应用到全局区域的项。有关如何在区域上使用 IPsec 的信息,请参见使用 IPsec 保护通信。有关区域的信息,请参见《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》中的第 16 章 “Solaris Zones 介绍”。 IPsec 实用程序和文件表 19–3 介绍用于配置和管理 IPsec 的文件和命令。为了体现完整性,此表包括密钥管理文件和命令。
Solaris 10 发行版中 IPsec 的更改有关 Solaris 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Solaris 10 新增功能》。自 Solaris 9 发行版以来,IPsec 包括以下功能:
|
联系客服