跳过导航链接 | |
退出打印视图 | |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11.1 Information Library (简体中文) |
- 配置 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 提供数据保密性可使用的加密算法(转换)。
定义 IPsec 提供验证可使用的验证算法(转换)。
算法条目指定的机制名称必须对应有效的 Solaris 加密框架机制。您可以使用 cryptoadm(1M) 命令获取可用机制的列表。
应用程序可以使用以下函数检索支持的算法及其关联协议:getipsecalgbyname(3NSL)、getipsecalgbynum(3NSL)、getipsecprotobyname(3NSL) 和 getipsecprotobynum(3NSL)。
缺省情况下,对协议和算法的修改仅更新 /etc/inet/ipsecalgs 配置文件的内容。要将新定义用于 IPsec 处理,必须使用 -s 选项将所做更改传递给内核。有关 ipsecalgs 配置如何在系统重启时与内核同步的说明,请参见“附注”部分。
不带参数调用时,ipsecalgs 显示当前在 /etc/inet/ipsecalgs 中定义的映射的列表。可以使用 -l 选项获取协议和算法对应的内核表。
ipsecalgs 支持以下选项:
添加 -P 选项指定的协议的算法。算法名称使用 -n 选项指定。支持的密钥长度和块大小使用 -k、-i 和 -b 选项指定。
指定算法的块长度或 MAC 长度(以字节为单位)。通过逗号分隔值可设置多个块长度。
在没有加密硬件提供器的情况下,为指定的协议指定加密请求的执行模式。请参见 cryptoadm(1M)。exec-mode 可以为以下值之一:
在没有加密硬件提供器的情况下同步处理加密请求。没有加密硬件提供器可用时,该执行模式会缩短延迟。
在没有加密硬件提供器的情况下始终都以异步方式处理加密请求。该执行模式可以提高多 CPU 系统中的资源利用率,但在没有加密硬件提供器可用时会加大延迟。
该选项可以在定义新协议或修改现有协议的执行模式时指定。在没有加密硬件提供器时,缺省情况下使用 sync 执行模式。
与 -a 选项一起使用时,可强制在已有相同名称或编号的条目的情况下添加算法或协议。
指定有效的密钥长度增量(以位为单位)。如果算法的有效密钥长度是使用 -k 选项按范围指定的,必须使用该选项。
指定算法的缺省密钥长度(以位为单位)。如果未指定 -K 选项,则最小密钥长度将按以下方式确定:
如果支持的密钥长度是按范围指定的,则缺省密钥长度将成为最小密钥长度。
如果支持的密钥长度是按枚举指定的,则缺省密钥长度将成为首先列出的密钥长度。
指定算法支持的密钥长度(以位为单位)。可以按枚举或范围指定支持的密钥长度。
如果未使用 -i 选项,-k 选项按枚举指定支持的密钥长度。在这种情况下,keylen-list 是包含一个或多个用逗号分隔的密钥长度的列表,例如:
128,192,256
列出的密钥长度无需增加,如果未使用 -K 选项,列出的第一个密钥长度将用作该算法的缺省密钥长度。
如果使用了 -i 选项,-k 选项将为算法指定支持的密钥长度范围。最小和最大密钥长度必须用破折号 ('-') 字符分隔,例如:
32-448
显示内核算法表。
指定与算法对应的加密框架机制的名称。cryptoadm(1M) 手册页中介绍了加密框架机制。
指定算法编号。协议的算法编号必须是唯一的。IANA 管理算法编号。请参见 RFC 2407。
为算法指定一个或多个名称。使用 -a 选项添加算法时,alg-names 包含一个字符串或逗号分隔的字符串列表,例如:
des-cbs,des
与 -r 选项一起使用来删除算法时,alg-names 包含有效算法名称之一。
添加编号由 protocol-number 指定的协议,其名称由 -p 选项指定。该选项与 -a 和 -R 选项一起使用时,还可指定 IPsec 协议。协议编号由 IANA 管理。请参见 RFC 2407。
指定 IPsec 协议的名称。
从算法表中删除 IPsec 协议。可以使用 -P 选项按编号指定协议,或使用 -p 选项按名称指定协议。与协议相关联的算法也会被删除。
删除算法映射。可以使用 -N 选项按算法编号指定算法,或使用 -A 选项按算法名称指定算法。
将内核与 /etc/inet/ipsecalgs 的内容同步。/etc/inet/ipsecalgs 的内容始终都会更新,但只有使用了 -s 才会将新信息传递到内核。有关 ipsecalgs 配置如何在系统重启时与内核同步的说明,请参见“附注”部分。
以下选项允许配置可选参数。这些选项当前仅用于组合模式算法,即在单个操作中提供加密和验证的算法。
初始化向量 (Initialization Vector, IV) 的长度(以字节为单位)。缺省 IV 长度与块长度相同。
组合模式算法的 MAC 或 ICV 长度(以字节为单位)。
算法所需的 salt 字节数。salt 需要由密钥管理机制提供。
算法标志。这些标志会影响内核处理安全任务(尤其是验证)的方式。ipseckey(1M) 和 ipsecconf(1M) 也会使用这些标志。可以将标志指定为以逗号分隔的标记列表;请参见下文的示例。支持以下标记:
算法使用计数器模式。
算法在同一操作中提供加密和验证。
加密框架机制需要使用 CK_AES_CCM_PARAMS 结构。
加密框架机制需要使用 CK_AES_GMAC_PARAMS 结构。
加密框架机制需要使用 CK_AES_GCM_PARAMS 结构。
该标志指示算法使用分块加密链接。加密框架机制不需要 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
包含配置的 IPsec 协议和算法定义的文件。切勿手动编辑该文件。
有关下列属性的说明,请参见 attributes(5):
|
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 区域都有自己的算法集。