手册页部分 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 区域都有自己的算法集。