JavaScript is required to for searching.
跳过导航链接
退出打印视图
系统管理指南:安全性服务     Oracle Solaris 10 8/11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分安全性概述

1.  安全性服务(概述)

第 2 部分系统、文件和设备安全性

2.  管理计算机安全性(概述)

3.  控制对系统的访问(任务)

4.  控制对设备的访问(任务)

5.  使用基本审计报告工具(任务)

6.  控制对文件的访问(任务)

7.  使用自动安全性增强工具(任务)

第 3 部分角色、权限配置文件和特权

8.  使用角色和特权(概述)

9.  使用基于角色的访问控制(任务)

10.  基于角色的访问控制(参考)

11.  特权(任务)

12.  特权(参考)

第 4 部分加密服务

13.  Oracle Solaris 加密框架(概述)

14.  Oracle Solaris 加密框架(任务)

使用加密框架(任务列表)

使用 Oracle Solaris 加密框架保护文件(任务列表)

使用加密框架保护文件(任务)

如何使用 dd 命令生成对称密钥

如何使用 pktool 命令生成对称密钥

如何计算文件摘要

如何计算文件的 MAC

如何加密和解密文件

管理加密框架(任务列表)

管理加密框架(任务)

如何列出可用提供者

如何添加软件提供者

如何禁止使用用户级机制

如何禁止使用内核软件提供者

如何列出硬件提供者

如何禁用硬件提供者机制和功能

如何刷新或重新启动所有加密服务

15.  Oracle Solaris 密钥管理框架

第 5 部分验证服务和安全通信

16.  使用验证服务(任务)

17.  使用 PAM

18.  使用 SASL

19.  使用 Oracle Solaris 安全 Shell(任务)

20.  Oracle Solaris 安全 Shell(参考)

第 6 部分Kerberos 服务

21.  Kerberos 服务介绍

22.  规划 Kerberos 服务

23.  配置 Kerberos 服务(任务)

24.  Kerberos 错误消息和故障排除

25.  管理 Kerberos 主体和策略(任务)

26.  使用 Kerberos 应用程序(任务)

27.  Kerberos 服务(参考)

第 7 部分Oracle Solaris 审计

28.  Oracle Solaris 审计(概述)

29.  规划 Oracle Solaris 审计

30.  管理 Oracle Solaris 审计(任务)

31.  Oracle Solaris 审计(参考)

词汇表

索引

管理加密框架(任务)

本节介绍如何管理 Oracle Solaris 加密框架中的软件提供者和硬件提供者。如果需要,可以禁用软件提供者和硬件提供者。例如,可以禁用某个软件提供者的算法实现。然后,可以强制系统使用其他软件提供者的算法。

如何列出可用提供者

Oracle Solaris 加密框架可为多种类型的使用者提供算法:

  1. 以简要格式列出提供者。

    注 - 不同的 Oracle Solaris 发行版中提供者列表的内容和格式会有所不同。在您的系统上运行 cryptoadm list 命令可查看系统支持的提供者。


    一般用户只能使用用户级机制。

    % cryptoadm list
    user-level providers:
        /usr/lib/security/$ISA/pkcs11_kernel.so
        /usr/lib/security/$ISA/pkcs11_softtoken.so
    
    kernel software providers:
        des
        aes
        blowfish
        arcfour
        sha1
        md5
        rsa
    
    kernel hardware providers:
        ncp/0
  2. 列出 Oracle Solaris 加密框架中的提供者及其机制。

    以下输出中列出了所有机制。但是,所列出的一些机制可能无法使用。要仅列出管理员已批准使用的机制,请参见示例 14-16

    为了便于显示,输出格式有所调整。

    % cryptoadm list -m
    user-level providers:
    =====================
    /usr/lib/security/$ISA/pkcs11_kernel.so: CKM_MD5,CKM_MD5_HMAC,
    CKM_MD5_HMAC_GENERAL,CKM_SHA_1,CKM_SHA_1_HMAC,CKM_SHA_1_HMAC_GENERAL,
    …
    /usr/lib/security/$ISA/pkcs11_softtoken.so: 
    CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN,
    CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN,
    CKM_AES_CBC,CKM_AES_CBC_PAD,CKM_AES_ECB,CKM_AES_KEY_GEN,
    …
    kernel software providers:
    ==========================
    des: CKM_DES_ECB,CKM_DES_CBC,CKM_DES3_ECB,CKM_DES3_CBC
    aes: CKM_AES_ECB,CKM_AES_CBC
    blowfish: CKM_BF_ECB,CKM_BF_CBC
    arcfour: CKM_RC4
    sha1: CKM_SHA_1,CKM_SHA_1_HMAC,CKM_SHA_1_HMAC_GENERAL
    md5: CKM_MD5,CKM_MD5_HMAC,CKM_MD5_HMAC_GENERAL
    rsa: CKM_RSA_PKCS,CKM_RSA_X_509,CKM_MD5_RSA_PKCS,CKM_SHA1_RSA_PKCS
    swrand: No mechanisms presented.
    
    kernel hardware providers:
    ==========================
    ncp/0: CKM_DSA,CKM_RSA_X_509,CKM_RSA_PKCS,CKM_RSA_PKCS_KEY_PAIR_GEN,
    CKM_DH_PKCS_KEY_PAIR_GEN,CKM_DH_PKCS_DERIVE,CKM_EC_KEY_PAIR_GEN,
    CKM_ECDH1_DERIVE,CKM_ECDSA

示例 14-15 查找现有加密机制

在下面的示例中,列出了用户级库 pkcs11_softtoken 提供的所有机制。

% cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
Mechanisms:
CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN,
CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN,
…
CKM_SSL3_KEY_AND_MAC_DERIVE,CKM_TLS_KEY_AND_MAC_DERIVE

示例 14-16 查找可用加密机制

策略确定可使用的机制。管理员负责设置策略。管理员可以选择禁用特定提供者的机制。-p 选项显示管理员设置的策略允许的机制列表。

% cryptoadm list -p
user-level providers:
=====================
/usr/lib/security/$ISA/pkcs11_kernel.so: all mechanisms are enabled.
random is enabled.
/usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled.
random is enabled.

kernel software providers:
==========================
des: all mechanisms are enabled.
aes: all mechanisms are enabled.
blowfish: all mechanisms are enabled.
arcfour: all mechanisms are enabled.
sha1: all mechanisms are enabled.
md5: all mechanisms are enabled.
rsa: all mechanisms are enabled.
swrand: random is enabled.

kernel hardware providers:
==========================
ncp/0: all mechanisms are enabled.

如何添加软件提供者

  1. 承担 Primary Administrator(主管理员)角色,或成为超级用户。

    Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 "使用 Solaris Management Console(任务)"

  2. 列出系统可用的软件提供者。
    % cryptoadm list
    user-level providers:
        /usr/lib/security/$ISA/pkcs11_kernel.so
        /usr/lib/security/$ISA/pkcs11_softtoken.so
    
    kernel software providers:
        des
        aes
        blowfish
        arcfour
        sha1
        md5
        rsa
    
    kernel hardware providers:
        ncp/0
  3. 使用 pkgadd 命令添加提供者的软件包。
    # pkgadd -d /path/to/package pkginst

    该软件包必须包含由 Oracle 提供的证书签名的软件。要从 Oracle 申请证书并对提供者进行签名,请参见《Oracle Solaris 开发者安全性指南》中的附录 F "打包和签署加密提供者"

    该软件包应具有用于以下用途的脚本:通知加密框架另一个具有一组机制的提供者可用。有关打包要求的信息,请参见《Oracle Solaris 开发者安全性指南》中的附录 F "打包和签署加密提供者"

  4. 刷新提供者。

    如果添加了软件提供者或者添加了硬件并为该硬件指定了策略,则需要刷新提供者。

    # svcadm refresh svc:/system/cryptosvc
  5. 在列表中找到新增的提供者。

    在本例中,安装了一个新的内核软件提供者。

    # cryptoadm list 
    …
    kernel software providers:
        des
        aes
        blowfish
        arcfour
        sha1
        md5
        rsa
        swrand
        ecc <-- added provider
    …

示例 14-17 添加用户级软件提供者

在下面的示例中,将安装签名的 PKCS #11 库。

# pkgadd -d /cdrom/cdrom0/SolarisNew
Answer the prompts
# svcadm refresh system/cryptosvc
# cryptoadm list
user-level providers:
==========================
    /usr/lib/security/$ISA/pkcs11_kernel.so
    /usr/lib/security/$ISA/pkcs11_softtoken.so
    /opt/SUNWconn/lib/$ISA/libpkcs11.so.1 <-- added provider

使用加密框架测试库的开发者可以手动安装该库。

# cryptoadm install provider=/opt/SUNWconn/lib/\$ISA/libpkcs11.so.1

有关对提供者进行签名的信息,请参见第三方软件的二进制文件签名

如何禁止使用用户级机制

如果不应使用库提供者的某些加密机制,可以删除这些所选的机制。此过程以 pkcs11_softtoken 库中的 DES 机制为例。

  1. 成为超级用户或承担拥有 Crypto Management(加密管理)权限配置文件的角色。

    要创建拥有 Crypto Management(加密管理)权限配置文件的角色并将该角色指定给用户,请参见示例 9-7

  2. 列出特定用户级软件提供者提供的机制。
    % cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
    /usr/lib/security/$ISA/pkcs11_softtoken.so:
    CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN,
    CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN,
    CKM_AES_CBC,CKM_AES_CBC_PAD,CKM_AES_ECB,CKM_AES_KEY_GEN,
    …
  3. 列出可使用的机制。
    $ cryptoadm list -p
    user-level providers:
    =====================
    …
    /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled.
    random is enabled.
    …
  4. 禁用不应使用的机制。
    $ cryptoadm disable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so \
    > mechanism=CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB
  5. 列出可使用的机制。
    $ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
    /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled,
    except CKM_DES_ECB,CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled.

示例 14-18 启用一个用户级软件提供者机制

在下面的示例中,将使禁用的 DES 机制再次可用。

$ cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
/usr/lib/security/$ISA/pkcs11_softtoken.so:
CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN,
CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN,
…
$ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
/usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled,
except CKM_DES_ECB,CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled.
$ cryptoadm enable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so \
> mechanism=CKM_DES_ECB
$ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
/usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled,
except CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled.

示例 14-19 启用所有用户级软件提供者机制

在下面的示例中,将启用用户级库的所有机制。

$ cryptoadm enable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so all
$ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
/usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled.
random is enabled.

示例 14-20 永久禁用用户级软件提供者

在下面的示例中,将删除 libpkcs11.so.1 库。

$ cryptoadm uninstall provider=/opt/SUNWconn/lib/\$ISA/libpkcs11.so.1
$ cryptoadm list
user-level providers:
    /usr/lib/security/$ISA/pkcs11_kernel.so
    /usr/lib/security/$ISA/pkcs11_softtoken.so

kernel software providers:
…

如何禁止使用内核软件提供者

如果加密框架提供了某个提供者(如 AES)的多种模式,则可以禁用速度较慢的机制或被破坏的机制。此过程以 AES 算法为例。

  1. 成为超级用户或承担拥有 Crypto Management(加密管理)权限配置文件的角色。

    要创建拥有 Crypto Management(加密管理)权限配置文件的角色并将该角色指定给用户,请参见示例 9-7

  2. 列出特定内核软件提供者提供的机制。
    $ cryptoadm list -m provider=aes
    aes: CKM_AES_ECB,CKM_AES_CBC
  3. 列出可使用的机制。
    $ cryptoadm list -p provider=aes
    aes: all mechanisms are enabled.
  4. 禁用不应使用的机制。
    $ cryptoadm disable provider=aes mechanism=CKM_AES_ECB
  5. 列出可使用的机制。
    $ cryptoadm list -p provider=aes
    aes: all mechanisms are enabled, except CKM_AES_ECB.

示例 14-21 启用内核软件提供者机制

在下面的示例中,将使禁用的 AES 机制再次可用。

cryptoadm list -m provider=aes
aes: CKM_AES_ECB,CKM_AES_CBC
$ cryptoadm list -p provider=aes
aes: all mechanisms are enabled, except CKM_AES_ECB.
$ cryptoadm enable provider=aes mechanism=CKM_AES_ECB
$ cryptoadm list -p provider=aes
aes: all mechanisms are enabled.

示例 14-22 临时禁用内核软件提供者

在下面的示例中,将临时禁用 AES 提供者。unload 子命令可用于禁止在卸载某个提供者时自动装入该提供者。例如,安装影响提供者的修补程序时,将使用 unload 子命令。

$ cryptoadm unload provider=aes
$ cryptoadm list 
…
kernel software providers:
    des
    aes (inactive)
    blowfish
    arcfour
    sha1
    md5
    rsa
    swrand

AES 提供者只有在加密框架刷新之后才会可用。

$ svcadm refresh system/cryptosvc
$ cryptoadm list 
…
kernel software providers:
    des
    aes
    blowfish
    arcfour
    sha1
    md5
    rsa
    swrand

如果内核使用者正在使用内核软件提供者,则不会卸载该软件。此时将显示错误消息,不过该提供者仍然可供使用。

示例 14-23 永久禁用软件提供者

在下面的示例中,将禁用 AES 提供者。禁用后,该 AES 提供者将不会出现在内核软件提供者的策略列表中。

$ cryptoadm uninstall provider=aes
$ cryptoadm list 
…
kernel software providers:
    des
    blowfish
    arcfour
    sha1
    md5
    rsa
    swrand

如果内核使用者正在使用内核软件提供者,将显示一条错误消息,不过该提供者仍然可供使用。

示例 14-24 重新安装已删除的内核软件提供者

在下面的示例中,将重新安装 AES 内核软件提供者。

$ cryptoadm install provider=aes mechanism=CKM_AES_ECB,CKM_AES_CBC
$ cryptoadm list 
…
kernel software providers:
    des
    aes
    blowfish
    arcfour
    sha1
    md5
    rsa
    swrand

如何列出硬件提供者

硬件提供者将自动定位和装入。有关更多信息,请参见 driver.conf(4) 手册页。

开始之前

如果您的硬件预计会在 Oracle Solaris 加密框架中使用,该硬件将通过 SPI 在内核中注册。框架将检查是否已对硬件驱动程序签名。具体地说,框架将检查是否已使用 Oracle 颁发的证书对驱动程序的目标文件进行签名。

例如,Sun Crypto Accelerator 6000 板 (mca)、UltraSPARC T1 和 T2 处理器上加密加速器的 ncp 驱动程序 (ncp) 以及 UltraSPARC T2 处理器的 n2cp 驱动程序 (n2cp) 将硬件机制插入框架。

有关对提供者进行签名的信息,请参见第三方软件的二进制文件签名

  1. 列出系统上可用的硬件提供者。
    % cryptoadm list
    … 
    kernel hardware providers:
       ncp/0
  2. 列出芯片或板提供的机制。
    % cryptoadm list -m provider=ncp/0
    ncp/0: CKM_DSA,CKM_RSA_X_509,CKM_RSA_PKCS,CKM_RSA_PKCS_KEY_PAIR_GEN,
    CKM_DH_PKCS_KEY_PAIR_GEN,CKM_DH_PKCS_DERIVE,CKM_EC_KEY_PAIR_GEN,
    CKM_ECDH1_DERIVE,CKM_ECDSA
  3. 列出芯片或板上可用的机制。
    % cryptoadm list -p provider=ncp/0
    ncp/0: all mechanisms are enabled.

如何禁用硬件提供者机制和功能

可以有选择地禁用硬件提供者的机制和随机数功能。有关重新启用它们的信息,请参见示例 14-25。此示例中的硬件 Sun Crypto Accelerator 1000 板提供了一个随机数生成器。

  1. 成为超级用户或承担拥有 Crypto Management(加密管理)权限配置文件的角色。

    要创建拥有 Crypto Management(加密管理)权限配置文件的角色并将该角色指定给用户,请参见示例 9-7

  2. 选择要禁用的机制或功能。

    列出硬件提供者。

    # cryptoadm list
    ...
    Kernel hardware providers:
        dca/0
    • 禁用选定的机制。
      # cryptoadm list -m provider=dca/0
      dca/0: CKM_RSA_PKCS, CKM_RSA_X_509, CKM_DSA, CKM_DES_CBC, CKM_DES3_CBC
      random is enabled.
      # cryptoadm disable provider=dca/0 mechanism=CKM_DES_CBC,CKM_DES3_CBC
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are enabled except CKM_DES_CBC,CKM_DES3_CBC.
      random is enabled.
    • 禁用随机数生成器。
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are enabled. random is enabled.
      # cryptoadm disable provider=dca/0 random
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are enabled. random is disabled.
    • 禁用所有机制。不禁用随机数生成器。
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are enabled. random is enabled.
      # cryptoadm disable provider=dca/0 mechanism=all
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are disabled. random is enabled.
    • 禁用该硬件上所有功能和机制。
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are enabled. random is enabled.
      # cryptoadm disable provider=dca/0 all
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are disabled. random is disabled.

示例 14-25 启用硬件提供者的机制和功能

在下面的示例中,将有选择地启用单个硬件的已禁用机制。

# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled except CKM_DES_ECB,CKM_DES3_ECB
.
random is enabled.
# cryptoadm enable provider=dca/0 mechanism=CKM_DES3_ECB
# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled except CKM_DES_ECB. 
random is enabled.

在下面的示例中,将仅启用随机数生成器。

# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,…. 
random is disabled.
# cryptoadm enable provider=dca/0 random
# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,….
random is enabled.

在下面的示例中,将仅启用机制。随机数生成器将继续处于禁用状态。

# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,….
random is disabled.
# cryptoadm enable provider=dca/0 mechanism=all
# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled. random is disabled.

在下面的示例中,将启用板上的所有功能和机制。

# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled, except CKM_DES_ECB,CKM_DES3_ECB.
random is disabled.
# cryptoadm enable provider=dca/0 all
# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled. random is enabled.

如何刷新或重新启动所有加密服务

缺省情况下,将启用 Oracle Solaris 加密框架。无论 kcfd 守护进程因何种原因失败,都可使用服务管理工具重新启动加密服务。有关更多信息,请参见 smf(5)svcadm(1M) 手册页。有关重新启动加密服务对区域的影响,请参见加密服务和区域

  1. 检查加密服务的状态。
    % svcs cryptosvc
     STATE          STIME    FMRI
    offline         Dec_09   svc:/system/cryptosvc:default
  2. 成为超级用户或承担等效角色来启用加密服务。

    角色包含授权和具有一定特权的命令。有关角色的更多信息,请参见配置 RBAC(任务列表)

    # svcadm enable svc:/system/cryptosvc

示例 14-26 刷新加密服务

在下面的示例中,将在全局区域中刷新加密服务。因此,每个非全局区域中的内核级加密策略也将被刷新。

# svcadm refresh system/cryptosvc