手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

ipsecalgs(1M)

名称

ipsecalgs - 配置 IPsec 协议和算法表

用法概要

ipsecalgs 
ipsecalgs -l
ipsecalgs -s
ipsecalgs -a [-P protocol-number | -p protocol-name] -k keylen-list 
     [-i inc] [-K default-keylen] -b blocklen-list -n alg-names
     -N alg-number -m mech-name [-I initialization-vector_length]
     [-M MAC-length] [-S length-of-salt] [-F flags] [-f] [-s]
ipsecalgs -P protocol-number -p protocol-name 
     [-e exec-mode] [-f] [-s]
ipsecalgs -r -p protocol-name [] -n alg-name [-s]
ipsecalgs -r -p protocol-name [] -N alg-number [-s]
ipsecalgs -R -P protocol-number [-s]
ipsecalgs -R -p protocol-name [-s]
ipsecalgs -e exec-mode -P protocol-number [-s]
ipsecalgs -e exec-mode -p protocol-name [-s]

描述

使用 ipsecalgs 命令可查询和修改存储在 /etc/inet/ipsecalgs 中的 IPsec 协议和算法。可以使用 ipsecalgs 命令执行以下操作:

  • 列出当前定义的 IPsec 协议和算法

  • 修改 IPsec 协议定义

  • 修改 IPsec 算法定义

切勿手动编辑 /etc/inet/ipsecalgs 文件。ISAKMP DOI 描述了有效的 IPsec 协议和算法。请参见 RFC 2407。从一般意义上说,系统解释域 (domain of interpretation, DOI) 定义数据格式、网络通信交换类型和安全相关信息的命名约定(例如安全策略或加密算法和模式)。对于 ipsecalgs,DOI 定义了算法及其所属协议的命名和编号约定。这些编号由 Internet 号码分配机构 (Internet Assigned Numbers Authority, IANA) 定义。每个算法都属于一个协议。算法信息包含支持的密钥长度、块长度或 MAC 长度以及与该算法对应的加密机制的名称。IPsec 模块 ipsecesp(7P) 和 ipsecah(7P) 使用这些信息确定可应用于 IPsec 通信的验证和加密算法。

预定义了以下协议:

IPSEC_PROTO_ESP

定义 IPsec 提供数据保密性可使用的加密算法(转换)。

IPSEC_PROTO_AH

定义 IPsec 提供验证可使用的验证算法(转换)。

算法条目指定的机制名称必须对应有效的 Solaris 加密框架机制。您可以使用 cryptoadm(1M) 命令获取可用机制的列表。

应用程序可以使用以下函数检索支持的算法及其关联协议:getipsecalgbyname(3NSL)、getipsecalgbynum(3NSL)、getipsecprotobyname(3NSL) 和 getipsecprotobynum(3NSL)。

缺省情况下,对协议和算法的修改仅更新 /etc/inet/ipsecalgs 配置文件的内容。要将新定义用于 IPsec 处理,必须使用 –s 选项将所做更改传递给内核。有关 ipsecalgs 配置如何在系统重启时与内核同步的说明,请参见“附注”部分。

不带参数调用时,ipsecalgs 显示当前在 /etc/inet/ipsecalgs 中定义的映射的列表。可以使用 –l 选项获取协议和算法对应的内核表。

选项

ipsecalgs 支持以下选项:

–a

添加 –P 选项指定的协议的算法。算法名称使用 –n 选项指定。支持的密钥长度和块大小使用 –k、–i 和 –b 选项指定。

–b

指定算法的块长度或 MAC 长度(以字节为单位)。通过逗号分隔值可设置多个块长度。

–e

在没有加密硬件提供器的情况下,为指定的协议指定加密请求的执行模式。请参见 cryptoadm(1M)。exec-mode 可以为以下值之一:

sync

在没有加密硬件提供器的情况下同步处理加密请求。没有加密硬件提供器可用时,该执行模式会缩短延迟。

async

在没有加密硬件提供器的情况下始终都以异步方式处理加密请求。该执行模式可以提高多 CPU 系统中的资源利用率,但在没有加密硬件提供器可用时会加大延迟。

该选项可以在定义新协议或修改现有协议的执行模式时指定。在没有加密硬件提供器时,缺省情况下使用 sync 执行模式。

–f

与 –a 选项一起使用时,可强制在已有相同名称或编号的条目的情况下添加算法或协议。

–i

指定有效的密钥长度增量(以位为单位)。如果算法的有效密钥长度是使用 –k 选项按范围指定的,必须使用该选项。

–K

指定算法的缺省密钥长度(以位为单位)。如果未指定 –K 选项,则最小密钥长度将按以下方式确定:

  • 如果支持的密钥长度是按范围指定的,则缺省密钥长度将成为最小密钥长度。

  • 如果支持的密钥长度是按枚举指定的,则缺省密钥长度将成为首先列出的密钥长度。

–k

指定算法支持的密钥长度(以位为单位)。可以按枚举或范围指定支持的密钥长度。

如果未使用 –i 选项,–k 选项按枚举指定支持的密钥长度。在这种情况下,keylen-list 是包含一个或多个用逗号分隔的密钥长度的列表,例如:

128,192,256

列出的密钥长度无需增加,如果未使用 –K 选项,列出的第一个密钥长度将用作该算法的缺省密钥长度。

如果使用了 –i 选项,–k 选项将为算法指定支持的密钥长度范围。最小和最大密钥长度必须用破折号 ('-') 字符分隔,例如:

32-448
–l

显示内核算法表。

–m

指定与算法对应的加密框架机制的名称。cryptoadm(1M) 手册页中介绍了加密框架机制。

–N

指定算法编号。协议的算法编号必须是唯一的。IANA 管理算法编号。请参见 RFC 2407。

–n

为算法指定一个或多个名称。使用 –a 选项添加算法时,alg-names 包含一个字符串或逗号分隔的字符串列表,例如:

des-cbs,des

与 –r 选项一起使用来删除算法时,alg-names 包含有效算法名称之一。

–P

添加编号由 protocol-number 指定的协议,其名称由 –p 选项指定。该选项与 –a 和 –R 选项一起使用时,还可指定 IPsec 协议。协议编号由 IANA 管理。请参见 RFC 2407。

–p

指定 IPsec 协议的名称。

–R

从算法表中删除 IPsec 协议。可以使用 –P 选项按编号指定协议,或使用 –p 选项按名称指定协议。与协议相关联的算法也会被删除。

–r

删除算法映射。可以使用 –N 选项按算法编号指定算法,或使用 –A 选项按算法名称指定算法。

–s

将内核与 /etc/inet/ipsecalgs 的内容同步。/etc/inet/ipsecalgs 的内容始终都会更新,但只有使用了 –s 才会将新信息传递到内核。有关 ipsecalgs 配置如何在系统重启时与内核同步的说明,请参见“附注”部分。

以下选项允许配置可选参数。这些选项当前仅用于组合模式算法,即在单个操作中提供加密和验证的算法。

–I

初始化向量 (Initialization Vector, IV) 的长度(以字节为单位)。缺省 IV 长度与块长度相同。

–M

组合模式算法的 MAC 或 ICV 长度(以字节为单位)。

–S

算法所需的 salt 字节数。salt 需要由密钥管理机制提供。

–F

算法标志。这些标志会影响内核处理安全任务(尤其是验证)的方式。ipseckey(1M) 和 ipsecconf(1M) 也会使用这些标志。可以将标志指定为以逗号分隔的标记列表;请参见下文的示例。支持以下标记:

COUNTERMODE

算法使用计数器模式。

COMBINED

算法在同一操作中提供加密和验证。

CCM

加密框架机制需要使用 CK_AES_CCM_PARAMS 结构。

GMAC

加密框架机制需要使用 CK_AES_GMAC_PARAMS 结构。

GCM

加密框架机制需要使用 CK_AES_GCM_PARAMS 结构。

CBC

该标志指示算法使用分块加密链接。加密框架机制不需要 params 结构。这也是缺省值,可以省略该标志。

可以使用 –l 选项显示算法标志。

示例

示例 1 添加 IPsec 加密协议

以下示例显示如何添加 IPsec 加密协议:

example# ipsecalgs -P 3 -p "IPSEC_PROTO_ESP"
示例 2 添加 Blowfish 算法

以下示例显示如何添加 Blowfish 算法:

example# ipsecalgs -a -P 3 -k 32-488 -K 128 -i 8 -n "blowfish" \
  -b 8 -N 7 -m CKM_BF_CBC
示例 3 更新内核算法表

以下示例使用当前定义的协议和算法定义更新内核算法表:

example# svcadm refresh ipsecalgs
示例 4 添加 AES Galois/计数器模式 (Galois/Counter Mode, GCM) 算法

以下命令可添加此算法。

example# ipsecalgs -a -P3 -k 128-256 -K 128 -i 64 -N 20 -b 16 \
-n "aes-gcm16,aes-gcm" -m CKM_AES_GCM -M 16 -I 8 -S 4 \
-F GCM,COMBINED,COUNTER

文件

/etc/inet/ipsecalgs

包含配置的 IPsec 协议和算法定义的文件。切勿手动编辑该文件。

属性

有关下列属性的说明,请参见 attributes(5):

属性类型
属性值
可用性
system/core-os
接口稳定性
Committed(已确定)

另请参见

cryptoadm(1M)、ipsecconf(1M)、ipseckey(1M)、svcadm(1M)、getipsecalgbyname(3NSL)、getipsecprotobyname(3NSL)、ike.config(4)、attributes(5)、smf(5)、ipsecah(7P)、ipsecesp(7P)

由 Piper, Derrell 编著的《The Internet IP Security Domain of Interpretation for ISAKMP》,RFC 2407。Network Working Group 出版。1998 年 11 月。

附注

如果协议或算法定义被删除或更改,则依赖这些定义的服务可能变得不可用。例如,如果 IPSEC_PROTO_ESP 协议被删除,则 IPsec 无法对包进行加密和解密。

在系统启动时将 ipsecalgs 配置与内核同步是通过以下 smf(5) 服务提供的:

svc:/network/ipsec/ipsecalgs:default

IPsec 服务按如下方式交付:

svc:/network/ipsec/policy:default (enabled)
svc:/network/ipsec/ipsecalgs:default (enabled)
svc:/network/ipsec/manual-key:default (disabled)
svc:/network/ipsec/ike:default (disabled)

以禁用状态交付的服务之所以按该方式交付是因为:系统管理员必须先为其创建配置文件,然后才能启用这些服务。请参见 ipseckey(1M) 和 ike.config(4)。policy 服务的缺省策略是允许传递所有的通信而不使用 IPsec 保护。请参见 ipsecconf(1M)。

正确的管理过程是为每个服务创建配置文件,然后使用 svcadm(1M) 启用每个服务,如以下示例所示:

example# svcadm enable ipsecalgs

可以使用 svcs(1) 命令来查询服务的状态。

如果 ipsecalgs 配置做了修改,应按照如下方式重新同步新配置:

example# svcadm refresh ipsecalgs

可以使用 svcadm(1M) 来对此服务执行管理操作(如启用、禁用、刷新和请求重新启动)。分配有以下授权的用户可以执行这些操作:

solaris.smf.manage.ipsec

请参见 auths(1)、user_attr(4)、rbac(5)。

ipsecalgs smf(5) 服务没有任何用户可配置的属性。

smf(5) 框架在服务特定的日志文件中记录所有错误。可使用以下任一命令检查 logfile 属性:

example# svcs -l ipsecalgs
example# svcprop ipsecalgs
example# svccfg -s ipsecalgs listprop

该命令需要有 sys_ip_config 特权才能操作,可以在全局区域和独占 IP 区域中运行。所有共享 IP 区域可以共享同一可用算法集合,但您可以使用 ipsecconf(1M) 设置系统策略,将不同算法用于不同共享 IP 区域。所有的独占 IP 区域都有自己的算法集。