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

文档信息

前言

第 1 部分安全性概述

1.  安全性服务(概述)

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

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

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

4.  病毒扫描服务(任务)

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

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

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

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

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

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

10.  Oracle Solaris 中的安全属性(参考)

第 4 部分加密服务

11.  加密框架(概述)

12.  加密框架(任务)

13.  密钥管理框架

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

14.  网络服务验证(任务)

15.  使用 PAM

16.  使用 SASL

17.  使用 安全 Shell(任务)

18.  安全 Shell(参考)

第 6 部分Kerberos 服务

19.  Kerberos 服务介绍

20.  规划 Kerberos 服务

21.  配置 Kerberos 服务(任务)

配置 Kerberos 服务(任务列表)

配置额外 Kerberos 服务(任务列表)

配置 KDC 服务器

如何自动配置主 KDC

如何交互配置主 KDC

如何手动配置主 KDC 服务器

如何配置 KDC 以使用 LDAP 数据服务器

如何自动配置从 KDC

如何交互配置从 KDC

如何手动配置从 KDC 服务器

如何刷新主服务器上的票证授予服务密钥

配置跨领域验证

如何建立层次化跨领域验证

如何建立直接跨领域验证

配置 Kerberos 网络应用服务器

如何配置 Kerberos 网络应用服务器

运行 FTP 时如何使用带有 Kerberos 的通用安全服务

配置 Kerberos NFS 服务器

如何配置 Kerberos NFS 服务器

如何创建凭证表

如何向凭证表中添加单个项

如何提供各领域之间的凭证映射

如何使用多种 Kerberos 安全模式设置安全的 NFS 环境

配置 Kerberos 客户机

配置 Kerberos 客户机(任务列表)

如何创建 Kerberos 客户机安装配置文件

如何自动配置 Kerberos 客户机

如何交互配置 Kerberos 客户机

如何为 Active Directory 服务器配置 Kerberos 客户机

如何手动配置 Kerberos 客户机

如何禁用票务授予票证的验证

如何以 root 用户身份访问受 Kerberos 保护的 NFS 文件系统

如何在 Kerberos 领域中配置用户自动迁移

如何配置帐户锁定

同步 KDC 与 Kerberos 客户机的时钟

交换主 KDC 服务器与从 KDC 服务器

如何配置可交换的从 KDC 服务器

如何交换主 KDC 服务器与从 KDC 服务器

管理 Kerberos 数据库

备份和传播 Kerberos 数据库

kpropd.acl 文件

kprop_script 命令

如何备份 Kerberos 数据库

如何恢复 Kerberos 数据库

如何在服务升级后转换 Kerberos 数据库

如何重新配置主 KDC 服务器以使用增量传播

如何重新配置从 KDC 服务器以使用增量传播

如何配置从 KDC 服务器以使用完全传播

如何验证 KDC 服务器是否已同步

如何手动将 Kerberos 数据库传播到从 KDC 服务器

设置并行传播

设置并行传播的配置步骤

管理存储文件

如何删除存储文件

如何使用新的主密钥

在 LDAP 目录服务器上管理 KDC

如何在非 Kerberos 对象类类型中混合 Kerberos 主体属性

如何在 LDAP 目录服务器上销毁领域

增强 Kerberos 服务器的安全性

如何仅启用基于 Kerberos 的应用程序

如何限制对 KDC 服务器的访问

如何使用字典文件提高口令的安全性

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

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

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

25.  Kerberos 服务(参考)

第 7 部分在 Oracle Solaris 中审计

26.  审计(概述)

27.  规划审计

28.  管理审计(任务)

29.  审计(参考)

词汇表

索引

配置 KDC 服务器

安装 Kerberos 软件之后,必须配置 KDC 服务器。配置一个主 KDC 服务器和至少一个从 KDC 服务器可以提供颁发凭证的服务。这些凭证是 Kerberos 服务的基础,因此在尝试其他任务之前必须安装 KDC。

主 KDC 服务器与从 KDC 服务器之间最大的差别是,只有主 KDC 服务器可以处理数据库管理请求。例如,更改口令或添加新主体必须在主 KDC 服务器上完成。然后可以将这些更改传播到从 KDC 服务器。从 KDC 服务器和主 KDC 服务器都可以生成凭证。此功能可在主 KDC 服务器无法响应时提供冗余性。

表 21-1 配置 KDC 服务器(任务列表)

任务
说明
参考
配置主 KDC。
使用自动化过程为领域配置并构建主 KDC 服务器和数据库,这对于脚本来说非常有用。
使用交互式进程为领域配置并构建主 KDC 服务器和数据库,此种方法适用于大部分安装。
对于较为复杂的安装,需要使用手动过程为领域配置并构建主 KDC 服务器和数据库
通过使用手动过程并将 KDC 配置为使用 LDAP,为领域配置并构建主 KDC 服务器和数据库
配置从 KDC 服务器。
使用自动化过程为领域配置并构建从 KDC 服务器,这对于脚本来说非常有用。
使用交互式进程为领域配置并构建从 KDC 服务器,此种方法适用于大部分安装。
对于较为复杂的安装,需要使用手动过程为领域配置并构建从 KDC 服务器
刷新 KDC 服务器上的主体密钥。
更新 KDC 服务器上的会话密钥,以使用新的加密类型。

如何自动配置主 KDC

在 Oracle Solaris 11 发行版中,使用下列过程可以自动配置主 KDC。

  1. 成为管理员,或者承担已指定给 Kerberos 服务器管理配置文件的角色或用户名。

    有关更多信息,请参见如何获取管理权限

  2. 创建 KDC。

    运行 kdcmgr 实用程序创建 KDC。您需要提供主密钥口令和管理主体的口令。

    kdc1# kdcmgr -a kws/admin -r EXAMPLE.COM create master
    
    Starting server setup
    ---------------------------------------
    
    Setting up /etc/krb5/kdc.conf
    
    Setting up /etc/krb5/krb5.conf
    
    Initializing database '/var/krb5/principal' for realm 'EXAMPLE.COM', 
    master key name 'K/M@EXAMPLE.COM' 
    You will be prompted for the database Master Password. 
    It is important that you NOT FORGET this password. 
    Enter KDC database master key: <Type the password>
    Re-enter KDC database master key to verify: <Type it again>
    
    Authenticating as principal root/admin@EXAMPLE.COM with password. 
    WARNING: no policy specified for kws/admin@EXAMPLE.COM; defaulting to no policy 
    Enter password for principal "kws/admin@EXAMPLE.COM": <Type the password>
    Re-enter password for principal "kws/admin@EXAMPLE.COM": <Type it again>
    Principal "kws/admin@EXAMPLE.COM" created. 
    
    Setting up /etc/krb5/kadm5.acl. 
    
    --------------------------------------------------- 
    Setup COMPLETE. 
    
    kdc1#

如何交互配置主 KDC

在 Oracle Solaris 发行版中,使用下列过程可以交互配置主 KDC。

  1. 成为管理员,或者承担已指定给 Kerberos 服务器管理配置文件的角色或用户名。

    有关更多信息,请参见如何获取管理权限

  2. 创建 KDC。

    运行 kdcmgr 实用程序创建 KDC。您需要提供主密钥口令和管理主体口令。

    kdc1# kdcmgr create master
    
    Starting server setup
    ---------------------------------------
    
    Enter the Kerberos realm: EXAMPLE.COM
    
    Setting up /etc/krb5/kdc.conf
    
    Setting up /etc/krb5/krb5.conf
    
    Initializing database '/var/krb5/principal' for realm 'EXAMPLE.COM', 
    master key name 'K/M@EXAMPLE.COM' 
    You will be prompted for the database Master Password. 
    It is important that you NOT FORGET this password. 
    Enter KDC database master key: <Type the password>
    Re-enter KDC database master key to verify: <Type it again>
    
    Enter the krb5 administrative principal to be created: kws/admin
    
    Authenticating as principal root/admin@EXAMPLE.COM with password. 
    WARNING: no policy specified for kws/admin@EXAMPLE.COM; defaulting to no policy 
    Enter password for principal "kws/admin@EXAMPLE.COM": <Type the password>
    Re-enter password for principal "kws/admin@EXAMPLE.COM": <Type it again>
    Principal "kws/admin@EXAMPLE.COM" created. 
    
    Setting up /etc/krb5/kadm5.acl. 
    
    --------------------------------------------------- 
    Setup COMPLETE. 
    
    kdc1#

示例 21-1 显示 KDC 服务器的状态

kdcmgr status 命令可用于显示有关主或从 KDC 服务器的信息。

如何手动配置主 KDC 服务器

在此过程中,将配置增量传播。此外,还将使用以下配置参数:

开始之前

该过程要求将主机配置为使用 DNS。有关交换主 KDC 服务器的具体命名说明,请参见交换主 KDC 服务器与从 KDC 服务器

  1. 成为主 KDC 服务器上的超级用户。
  2. 编辑 Kerberos 配置文件 (krb5.conf)。

    需要更改领域名称和服务器名称。有关此文件的完整说明,请参见 krb5.conf(4) 手册页。

    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = EXAMPLE.COM
    
    [realms]
            EXAMPLE.COM = {
            kdc = kdc1.example.com
            admin_server = kdc1.example.com
            }
    
    [domain_realm]
            .example.com = EXAMPLE.COM
    #
    # if the domain name and realm name are equivalent, 
    # this entry is not needed
    #
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
    
    [appdefaults]
        gkadmin = {
            help_url = http://download.oracle.com/docs/cd/E23824_01/html/821-1456/aadmin-23.html
            }

    在此示例中,default_realmkdcadmin_server 行和所有 domain_realm 项都已被更改。此外还会编辑定义 help_url 的行。


    注 - 如果要限制加密类型,可以设置 default_tkt_enctypesdefault_tgs_enctypes 行。请参阅使用 Kerberos 加密类型,了解关于限制加密类型的问题说明。


  3. 编辑 KDC 配置文件 (kdc.conf)。

    需要更改领域名称。有关此文件的完整说明,请参见 kdc.conf(4) 手册页。

    kdc1 # cat /etc/krb5/kdc.conf
    [kdcdefaults]
            kdc_ports = 88,750
    
    [realms]
            EXAMPLE.COM = {
                    profile = /etc/krb5/krb5.conf
                    database_name = /var/krb5/principal
                    acl_file = /etc/krb5/kadm5.acl
                    kadmind_port = 749
                    max_life = 8h 0m 0s
                    max_renewable_life = 7d 0h 0m 0s
                    sunw_dbprop_enable = true
                    sunw_dbprop_master_ulogsize = 1000
                    }

    在此示例中,realms 部分的领域名称定义被更改。而且,在 realms 部分,添加了用于启用增量传播和选择主 KDC 服务器将在日志中保留的更新数的行。


    注 - 如果要限制加密类型,可以设置 permitted_enctypessupported_enctypesmaster_key_type 行。请参阅使用 Kerberos 加密类型,了解关于限制加密类型的问题说明。


  4. 使用 kdb5_util 命令创建 KDC 数据库。

    kdb5_util 命令可以创建 KDC 数据库。此外,使用 -s 选项时,该命令会在启动 kadmindkrb5kdc 守护进程之前,创建一个用于向自己验证 KDC 的存储文件。

    kdc1 # /usr/sbin/kdb5_util create -s
    Initializing database '/var/krb5/principal' for realm 'EXAMPLE.COM'
    master key name 'K/M@EXAMPLE.COM'
    You will be prompted for the database Master Password.
    It is important that you NOT FORGET this password.
    Enter KDC database master key: <Type the key>
    Re-enter KDC database master key to verify: <Type it again>
  5. 编辑 Kerberos 访问控制列表文件 (kadm5.acl)。

    填充后,/etc/krb5/kadm5.acl 文件应包含所有获许管理 KDC 的主体名称。

    kws/admin@EXAMPLE.COM   *

    通过该项,EXAMPLE.COM 领域中的 kws/admin 主体可以修改 KDC 中的主体或策略。缺省安装包括一个星号 (*),以匹配所有的 admin 主体。此缺省安装可能会造成安全风险,因此,包括一个所有 admin 主体的列表会更安全。有关更多信息,请参见 kadm5.acl(4) 手册页。

  6. 启动kadmin.local命令并添加主体。

    接下来的子步骤会创建 Kerberos 服务使用的主体。

    kdc1 # /usr/sbin/kadmin.local
    kadmin.local: 
    1. 向数据库添加管理主体。

      可以根据需要添加任意数目的 admin 主体。至少必须添加一个 admin 主体,这样才能完成 KDC 配置过程。此示例中添加了 kws/admin 主体。可以用适当的主体名称替代 kws

      kadmin.local: addprinc kws/admin
      Enter password for principal kws/admin@EXAMPLE.COM:<Type the password>
      Re-enter password for principal kws/admin@EXAMPLE.COM: <Type it again>
      Principal "kws/admin@EXAMPLE.COM" created.
      kadmin.local: 
    2. 创建 kiprop 主体。

      kiprop 主体用于授权来自主 KDC 服务器的更新。

      kadmin.local: addprinc -randkey kiprop/kdc1.example.com
      Principal "kiprop/kdc1.example.com@EXAMPLE.COM" created.
      kadmin.local:
    3. 退出 kadmin.local

      您已经为后续步骤添加了所有需要的主体。

      kadmin.local: quit
  7. 启动 Kerberos 守护进程。
    kdc1 # svcadm enable -r network/security/krb5kdc
    kdc1 # svcadm enable -r network/security/kadmin
  8. 启动 kadmin 并添加更多的主体。

    此时,您可以使用图形化 Kerberos 管理工具添加主体。为此,必须使用之前在此过程中创建的一个 admin 主体名称登录。不过,为简便起见,给出了以下命令行示例。

    kdc1 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. 创建主 KDC 服务器 host 主体。

      基于 Kerberos 的应用程序(例如 kprop)将使用主机主体将变更传播到从 KDC 服务器。也可以通过该主体提供对使用应用程序(如 ssh)的 KDC 服务器的安全远程访问。请注意,当主体实例为主机名时,无论名称服务中的域名是大写还是小写,都必须以小写字母指定 FQDN。

      kadmin: addprinc -randkey host/kdc1.example.com
      Principal "host/kdc1.example.com@EXAMPLE.COM" created.
      kadmin: 
    2. 可选创建 kclient 主体。

      kclient 实用程序在 Kerberos 客户机安装期间使用该主体。如果您没有计划使用此实用程序,则不需要添加该主体。kclient 实用程序的用户需要使用该口令。

      kadmin: addprinc clntconfig/admin
      Enter password for principal clntconfig/admin@EXAMPLE.COM:<Type the password>
      Re-enter password for principal clntconfig/admin@EXAMPLE.COM: <Type it again>
      Principal "clntconfig/admin@EXAMPLE.COM" created.
      kadmin: 
    3. 将主 KDC 服务器的 host 主体添加到主 KDC 服务器的密钥表文件。

      通过将主机主体添加到密钥表文件,允许应用服务器(如 sshd)自动使用该主体。

      kadmin: ktadd host/kdc1.example.com
      Entry for principal host/kdc1.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc1.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc1.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc1.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    4. 退出 kadmin
      kadmin: quit
  9. 可选使用 NTP 或其他时钟同步机制同步主 KDC 服务器的时钟。

    安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必须的。但是,要成功进行验证,每个时钟必须遵守 krb5.conf 文件的 libdefaults 部分中定义的缺省时间。有关 NTP 的信息,请参见同步 KDC 与 Kerberos 客户机的时钟

  10. 配置从 KDC 服务器。

    要提供冗余性,请确保至少安装了一个从 KDC 服务器。有关具体说明,请参见如何手动配置从 KDC 服务器

如何配置 KDC 以使用 LDAP 数据服务器

使用以下过程配置 KDC 以使用 LDAP 数据服务器。

此过程中使用以下配置参数:

开始之前

该过程也要求将主机配置为使用 DNS。为使性能更佳,请在同一台服务器上安装 KDC 和 LDAP 目录服务。此外还应运行目录服务器。下面的过程适用于运行 Sun Directory Server Enterprise Edition 7.0 发行版的服务器。

  1. 成为 KDC 上的超级用户。
  2. 配置主 KDC 以使用 SSL 访问目录服务器。

    以下步骤将 Oracle Solaris 发行版 KDC 配置为使用 Directory Server 自签名证书。如果证书已过期,请按照"管理自签名证书"中的说明来续订证书。

    1. 在目录服务器上,导出自签名目录服务器证书。
      # /export/sun-ds6.1/ds6/bin/dsadm show-cert -F der /export/sun-ds6.1/directory2 \ defaultCert > /tmp/defaultCert.cert.der
    2. 在主 KDC 上,导入目录服务器证书。
      # pktool setpin keystore=nss dir=/var/ldap
      # chmod a+r /var/ldap/*.db
      # pktool import keystore=nss objtype=cert trust="CT" infile=/tmp/defaultCert.certutil.der \
              label=defaultCert dir=/var/ldap
    3. 在主 KDC 上,测试 SSL 是否可以正常运行。

      此示例假设 cn=directory manager 条目具有管理特权。

      /usr/bin/ldapsearch -Z -P /var/ldap -D "cn=directory manager" \ -h dsserver.example.com -b "" -s base objectclass='*'
      Subject:
          "CN=dsserver.example.com,CN=636,CN=Directory Server,O=Example Corporation

      注意,CN=dsserver.example.com 条目应该包含全限定主机名,而不是简短版本。

  3. 如有需要,填充 LDAP 目录。
  4. 向现有架构中添加 Kerberos 架构。
    # ldapmodify -h dsserver.example.com -D "cn=directory manager" -f /usr/share/lib/ldif/kerberos.ldif
  5. 在 LDAP 目录中创建 Kerberos 容器。

    krb5.conf 文件中添加下列各项:

    1. 定义数据库类型。

      添加项来定义 realms 部分的 database_module

      database_module = LDAP
    2. 定义数据库模块。
      [dbmodules] LDAP = { ldap_kerberos_container_dn = "cn=krbcontainer,dc=example,dc=com" db_library = kldap ldap_kdc_dn = "cn=kdc service,ou=profile,dc=example,dc=com" ldap_kadmind_dn = "cn=kadmin service,ou=profile,dc=example,dc=com" ldap_cert_path = /var/ldap ldap_servers = ldaps://dsserver.example.com }
    3. 在 LDAP 目录中创建 KDC。

      以下命令创建 krbcontainer 及其他几个对象。还会创建 /var/krb5/.k5.EXAMPLE.COM 主密钥存储文件。

      # kdb5_ldap_util -D "cn=directory manager" create -P abcd1234 -r EXAMPLE.COM -s
  6. 存储 KDC 绑定标识名 (Distinguished Name, DN) 口令。

    当 KDC 绑定到 DS 时会使用这些口令。KDC 会根据其使用的访问类型使用不同的角色。

    # kdb5_ldap_util stashsrvpw "cn=kdc service,ou=profile,dc=example,dc=com"
    # kdb5_ldap_util stashsrvpw "cn=kadmin service,ou=profile,dc=example,dc=com"
  7. 添加 KDC 服务角色。
    1. 创建一个内容如下的 kdc_roles.ldif 文件:
      dn: cn=kdc service,ou=profile,dc=example,dc=com
      cn: kdc service
      sn: kdc service
      objectclass: top
      objectclass: person
      userpassword: test123
      
      dn: cn=kadmin service,ou=profile,dc=example,dc=com
      cn: kadmin service
      sn: kadmin service
      objectclass: top
      objectclass: person
      userpassword: test123
    2. 在 LDAP 目录中创建角色项
      # ldapmodify -a -h dsserver.example.com -D "cn=directory manager" -f kdc_roles.ldif
  8. 为 KDC 相关角色设置 ACL。
    # cat << EOF | ldapmodify -h dsserver.example.com -D "cn=directory manager" 
    # Set kadmin ACL for everything under krbcontainer.
    dn: cn=krbcontainer,dc=example,dc=com
    changetype: modify
    add: aci
    aci: (target="ldap:///cn=krbcontainer,dc=example,dc=com")(targetattr="krb*")(version 3.0;\
          acl kadmin_ACL; allow (all)\
          userdn = "ldap:///cn=kadmin service,ou=profile,dc=example,dc=com";)
    
    # Set kadmin ACL for everything under the people subtree if there are
    # mix-in entries for krb princs:
    dn: ou=people,dc=example,dc=com
    changetype: modify
    add: aci
    aci: (target="ldap:///ou=people,dc=example,dc=com")(targetattr="krb*")(version 3.0;\
          acl kadmin_ACL; allow (all)\
          userdn = "ldap:///cn=kadmin service,ou=profile,dc=example,dc=com";)
    EOF
  9. 编辑 Kerberos 配置文件 (krb5.conf)。

    需要更改领域名称和服务器名称。有关此文件的完整说明,请参见 krb5.conf(4) 手册页。

    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = EXAMPLE.COM
    
    [realms]
            EXAMPLE.COM = {
            kdc = kdc1.example.com
            admin_server = kdc1.example.com
            }
    
    [domain_realm]
            .example.com = EXAMPLE.COM
    #
    # if the domain name and realm name are equivalent, 
    # this entry is not needed
    #
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
    
    [appdefaults]
        gkadmin = {
            help_url = http://download.oracle.com/docs/cd/E23824_01/html/821-1456/aadmin-23.html
            }

    在此示例中,default_realmkdcadmin_server 行和所有 domain_realm 项都已被更改。此外还会编辑定义 help_url 的行。


    注 - 如果要限制加密类型,可以设置 default_tkt_enctypesdefault_tgs_enctypes 行。请参阅使用 Kerberos 加密类型,了解关于限制加密类型的问题说明。


  10. 编辑 KDC 配置文件 (kdc.conf)。

    需要更改领域名称。有关此文件的完整说明,请参见 kdc.conf(4) 手册页。

    kdc1 # cat /etc/krb5/kdc.conf
    [kdcdefaults]
            kdc_ports = 88,750
    
    [realms]
            EXAMPLE.COM = {
                    profile = /etc/krb5/krb5.conf
                    database_name = /var/krb5/principal
                    acl_file = /etc/krb5/kadm5.acl
                    kadmind_port = 749
                    max_life = 8h 0m 0s
                    max_renewable_life = 7d 0h 0m 0s
                    sunw_dbprop_enable = true
                    sunw_dbprop_master_ulogsize = 1000
                    }

    在此示例中,realms 部分的领域名称定义被更改。而且,在 realms 部分,添加了用于启用增量传播和选择主 KDC 服务器将在日志中保留的更新数的行。


    注 - 如果要限制加密类型,可以设置 permitted_enctypessupported_enctypesmaster_key_type 行。请参阅使用 Kerberos 加密类型,了解关于限制加密类型的问题说明。


  11. 编辑 Kerberos 访问控制列表文件 (kadm5.acl)。

    填充后,/etc/krb5/kadm5.acl 文件应包含所有获许管理 KDC 的主体名称。

    kws/admin@EXAMPLE.COM   *

    通过该项,EXAMPLE.COM 领域中的 kws/admin 主体可以修改 KDC 中的主体或策略。缺省安装包括一个星号 (*),以匹配所有的 admin 主体。此缺省安装可能会造成安全风险,因此,包括一个所有 admin 主体的列表会更安全。有关更多信息,请参见 kadm5.acl(4) 手册页。

  12. 启动kadmin.local命令并添加主体。

    接下来的子步骤会创建 Kerberos 服务使用的主体。

    kdc1 # /usr/sbin/kadmin.local
    kadmin.local: 
    1. 向数据库添加管理主体。

      可以根据需要添加任意数目的 admin 主体。至少必须添加一个 admin 主体,这样才能完成 KDC 配置过程。此示例中添加了 kws/admin 主体。可以用适当的主体名称替代 kws

      kadmin.local: addprinc kws/admin
      Enter password for principal kws/admin@EXAMPLE.COM:<Type the password>
      Re-enter password for principal kws/admin@EXAMPLE.COM: <Type it again>
      Principal "kws/admin@EXAMPLE.COM" created.
      kadmin.local: 
    2. 退出 kadmin.local

      您已经为后续步骤添加了所有需要的主体。

      kadmin.local: quit
  13. 可选配置 Kerberos 服务的 LDAP 相关项。

    如果 LDAP 和 KDC 服务器运行在同一台主机上,且 LDAP 服务以 SMF FMRI 配置,则添加 Kerberos 守护进程对 LDAP 服务的依赖性。如果 LDAP 服务重新启动,此依赖性将重新启动 KDC 服务。

    1. 添加对 krb5kdc 服务的依赖性。
      # svccfg -s security/krb5kdc
      svc:/network/security/krb5kdc> addpg dsins1 dependency
      svc:/network/security/krb5kdc> setprop dsins1/entities = \
          fmri: "svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1"
      svc:/network/security/krb5kdc> setprop dsins1/grouping = astring: "require_all"
      svc:/network/security/krb5kdc> setprop dsins1/restart_on = astring: "restart"
      svc:/network/security/krb5kdc> setprop dsins1/type = astring: "service"
      svc:/network/security/krb5kdc> exit
    2. 添加对 kadmin 服务的依赖性。
      # svccfg -s security/kadmin
      svc:/network/security/kadmin> addpg dsins1 dependency
      svc:/network/security/kadmin> setprop dsins1/entities =\
          fmri: "svc:/application/sun/ds:ds--var-opt-SUNWdsee-dsins1"
      svc:/network/security/kadmin> setprop dsins1/grouping = astring: "require_all"
      svc:/network/security/kadmin> setprop dsins1/restart_on = astring: "restart"
      svc:/network/security/kadmin> setprop dsins1/type = astring: "service"
      svc:/network/security/kadmin> exit
  14. 启动 Kerberos 守护进程。
    kdc1 # svcadm enable -r network/security/krb5kdc
    kdc1 # svcadm enable -r network/security/kadmin
  15. 启动 kadmin 并添加更多的主体。

    此时,您可以使用 GUI Kerberos 管理工具添加主体。为此,必须使用之前在此过程中创建的一个 admin 主体名称登录。不过,为简便起见,给出了以下命令行示例。

    kdc1 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. 创建主 KDC 服务器 host 主体。

      基于 Kerberos 的应用程序(如 klistkprop)使用 host 主体。挂载通过验证的 NFS 文件系统时,客户机使用该主体。请注意,当主体实例为主机名时,无论名称服务中的域名是大写还是小写,都必须以小写字母指定 FQDN。

      kadmin: addprinc -randkey host/kdc1.example.com
      Principal "host/kdc1.example.com@EXAMPLE.COM" created.
      kadmin: 
    2. 可选创建 kclient 主体。

      kclient 实用程序在 Kerberos 客户机安装期间使用该主体。如果您没有计划使用此实用程序,则不需要添加该主体。kclient 实用程序的用户需要使用该口令。

      kadmin: addprinc clntconfig/admin
      Enter password for principal clntconfig/admin@EXAMPLE.COM:<Type the password>
      Re-enter password for principal clntconfig/admin@EXAMPLE.COM: <Type it again>
      Principal "clntconfig/admin@EXAMPLE.COM" created.
      kadmin: 
    3. 将主 KDC 服务器的 host 主体添加到主 KDC 服务器的密钥表文件。

      将主机主体添加到密钥表文件会允许自动使用该主体。

      kadmin: ktadd host/kdc1.example.com
      Entry for principal host/kdc1.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc1.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc1.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc1.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    4. 退出 kadmin
      kadmin: quit
  16. 可选使用 NTP 或其他时钟同步机制同步主 KDC 服务器的时钟。

    安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必须的。但是,要成功进行验证,每个时钟必须遵守 krb5.conf 文件的 libdefaults 部分中定义的缺省时间。有关 NTP 的信息,请参见同步 KDC 与 Kerberos 客户机的时钟

  17. 配置从 KDC 服务器。

    要提供冗余性,请确保至少安装了一个从 KDC 服务器。有关具体说明,请参见如何手动配置从 KDC 服务器

如何自动配置从 KDC

在 Oracle Solaris 发行版中,使用下列过程可以自动配置从 KDC。

  1. 成为管理员,或者承担已指定给 Kerberos 服务器管理配置文件的角色或用户名。

    有关更多信息,请参见如何获取管理权限

  2. 创建 KDC。

    运行 kdcmgr 实用程序创建 KDC。您需要提供主密钥口令和管理主体的口令。

    kdc2# kdcmgr -a kws/admin -r EXAMPLE.COM create -m kdc1 slave
    
    Starting server setup
    ---------------------------------------
    
    Setting up /etc/krb5/kdc.conf
    
    Setting up /etc/krb5/krb5.conf
    Obtaining TGT for kws/admin ... 
    Password for kws/admin@EXAMPLE.COM: <Type the password>
    
    Setting up /etc/krb5/kadm5.acl. 
    
    Setting up /etc/krb5/kpropd.acl. 
    
    Waiting for database from master... 
    Waiting for database from master... 
    Waiting for database from master... 
    kdb5_util: Cannot find/read stored master key while reading master key 
    kdb5_util: Warning: proceeding without master key 
    Enter KDC database master key: <Type the password>
    
    --------------------------------------------------- 
    Setup COMPLETE. 
    
    kdc2#

如何交互配置从 KDC

使用以下过程交互配置从 KDC。

  1. 成为管理员,或者承担已指定给 Kerberos 服务器管理配置文件的角色或用户名。

    有关更多信息,请参见如何获取管理权限

  2. 创建 KDC。

    运行 kdcmgr 实用程序创建 KDC。您需要提供主密钥口令和管理主体的口令。

    kdc1# kdcmgr create slave
    
    Starting server setup
    ---------------------------------------
    
    Enter the Kerberos realm: EXAMPLE.COM
    What is the master KDC's host name?: kdc1
    
    Setting up /etc/krb5/kdc.conf
    
    Setting up /etc/krb5/krb5.conf
    Obtaining TGT for kws/admin ... 
    Password for kws/admin@EXAMPLE.COM: <Type the password>
    
    Setting up /etc/krb5/kadm5.acl. 
    
    Setting up /etc/krb5/kpropd.acl. 
    
    Waiting for database from master... 
    Waiting for database from master... 
    Waiting for database from master... 
    kdb5_util: Cannot find/read stored master key while reading master key 
    kdb5_util: Warning: proceeding without master key 
    Enter KDC database master key: <Type the password>
    
    --------------------------------------------------- 
    Setup COMPLETE. 
    
    kdc2#

如何手动配置从 KDC 服务器

在此过程中,将配置新的名为 kdc2 的从 KDC 服务器。此外还会配置增量传播。此过程使用以下配置参数:

开始之前

必须配置主 KDC 服务器。要了解交换从 KDC 服务器的具体说明,请参见交换主 KDC 服务器与从 KDC 服务器

  1. 成为主 KDC 服务器上的超级用户。
  2. 在主 KDC 服务器上,启动 kadmin

    必须使用在配置主 KDC 服务器时创建的一个 admin 主体名称登录。

    kdc1 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. 在主 KDC 服务器上,向数据库中添加从主机主体(如果尚未完成)。

      要使从 KDC 服务器正常工作,它必须有主机主体。请注意,当主体实例为主机名时,无论名称服务中的域名是大写还是小写,都必须以小写字母指定 FQDN。

      kadmin: addprinc -randkey host/kdc2.example.com
      Principal "host/kdc2.example.com@EXAMPLE.COM" created.
      kadmin: 
    2. 在主 KDC 服务器上,创建 kiprop 主体。

      kiprop 主体用于授权来自主 KDC 服务器的增量传播。

      kadmin: addprinc -randkey kiprop/kdc2.example.com
      Principal "kiprop/kdc2.example.com@EXAMPLE.COM" created.
      kadmin:
    3. 退出 kadmin
      kadmin: quit
  3. 在主 KDC 服务器上,编辑 Kerberos 配置文件 (krb5.conf)。

    需要为每个从 KDC 服务器添加一个项。有关此文件的完整说明,请参见 krb5.conf(4) 手册页。

    kdc1 # cat /etc/krb5/krb5.conf
     .
     .
    [realms]
                    EXAMPLE.COM = {
                    kdc = kdc1.example.com
                    kdc = kdc2.example.com
                    admin_server = kdc1.example.com
            }
  4. 在主 KDC 服务器上,向 kadm5.acl 添加 kiprop 项。

    通过此项,主 KDC 服务器可以接收对 kdc2 服务器的增量传播请求。

    kdc1 # cat /etc/krb5/kadm5.acl
    */admin@EXAMPLE.COM *
    kiprop/kdc2.example.com@EXAMPLE.COM p
  5. 在主 KDC 服务器上,重新启动 kadmind 以使用 kadm5.acl 文件中新的项。
    kdc1 # svcadm restart network/security/kadmin
  6. 在所有的从 KDC 服务器上,从主 KDC 服务器复制 KDC 管理文件。

    需要在所有的从 KDC 服务器上执行该步骤,因为主 KDC 服务器已经更新了每个 KDC 服务器需要的信息。可以使用 ftp 或类似的传输机制从主 KDC 服务器获取以下文件的副本:

    • /etc/krb5/krb5.conf

    • /etc/krb5/kdc.conf

  7. 在所有的从 KDC 服务器上,将主 KDC 服务器和每个从 KDC 服务器的项添加到数据库传播配置文件 kpropd.acl 中。

    需要在所有从 KDC 服务器上更新此信息。

    kdc2 # cat /etc/krb5/kpropd.acl
    host/kdc1.example.com@EXAMPLE.COM
    host/kdc2.example.com@EXAMPLE.COM
  8. 在所有的从 KDC 服务器上,确保未填充 Kerberos 访问控制列表文件 kadm5.acl

    未修改的 kadm5.acl 文件类似如下示例:

    kdc2 # cat /etc/krb5/kadm5.acl
    */admin@___default_realm___ *

    如果该文件中包含 kiprop 项,请将其删除。

  9. 在新的从 KDC 服务器上,更改 kdc.conf 中的某个项。

    使用定义 sunw_dbprop_slave_poll 的项替换 sunw_dbprop_master_ulogsize 项。该项将轮询时间设为两分钟。

    kdc1 # cat /etc/krb5/kdc.conf
    [kdcdefaults]
            kdc_ports = 88,750
    
    [realms]
            EXAMPLE.COM= {
                    profile = /etc/krb5/krb5.conf
                    database_name = /var/krb5/principal
                    acl_file = /etc/krb5/kadm5.acl
                    kadmind_port = 749
                    max_life = 8h 0m 0s
                    max_renewable_life = 7d 0h 0m 0s
                    sunw_dbprop_enable = true
                    sunw_dbprop_slave_poll = 2m
            }
  10. 在新的从 KDC 服务器上,启动 kadmin 命令。

    必须使用在配置主 KDC 服务器时创建的一个 admin 主体名称登录。

    kdc2 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: 
    1. 使用 kadmin 将从 KDC 服务器的主机主体添加到从 KDC 服务器的密钥表文件中。

      该项可使 kprop 及其他基于 Kerberos 的应用程序正常工作。请注意,当主体实例为主机名时,无论名称服务中的域名是大写还是小写,都必须以小写字母指定 FQDN。

      kadmin: ktadd host/kdc2.example.com
      Entry for principal host/kdc2.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc2.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc2.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc2.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc2.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    2. kiprop 主体添加到从 KDC 服务器的密钥表文件中。

      通过将 kiprop 主体添加到 krb5.keytab 文件,允许 kpropd 命令在启动增量传播时对其自身进行验证。

      kadmin: ktadd kiprop/kdc2.example.com
      Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type AES-256 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type AES-128 CTS mode
                with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type Triple DES cbc
                mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    3. 退出 kadmin
      kadmin: quit
  11. 在新的从 KDC 服务器上,启动 Kerberos 传播守护进程。
    kdc2 # svcadm enable network/security/krb5_prop
  12. 在新的从 KDC 服务器上,使用 kdb5_util 创建一个存储文件。
    kdc2 # /usr/sbin/kdb5_util stash
    kdb5_util: Cannot find/read stored master key while reading master key
    kdb5_util: Warning: proceeding without master key
    
    Enter KDC database master key: <Type the key>
  13. 可选在新的从 KDC 服务器上,使用 NTP 或其他时钟同步机制同步主 KDC 服务器时钟。

    安装和使用网络时间协议 (Network Time Protocol, NTP) 并非必须的。但是,要成功进行验证,每个时钟必须遵守 krb5.conf 文件的 libdefaults 部分中定义的缺省时间。有关 NTP 的信息,请参见同步 KDC 与 Kerberos 客户机的时钟

  14. 在新的从 KDC 服务器上,启动 KDC 守护进程 (krb5kdc)。
    kdc2 # svcadm enable network/security/krb5kdc

如何刷新主服务器上的票证授予服务密钥

当票证授予服务 (Ticket Granting Service, TGS) 主体仅具有 DES 密钥时(在 Solaris 10 发行版之前创建的 KDC 服务器即为这种情况),该密钥会将票证授予票证 (Ticket Granting Ticket, TGT) 会话密钥的加密类型限制为 DES。如果某个 KDC 更新到支持其他更强加密类型的发行版,管理员可能会希望为该 KDC 生成的所有会话密钥使用这种更强的加密。但是,如果现有的 TGS 主体没有刷新其密钥使之包括新的加密类型,TGT 会话密钥仍会继续限制为 DES。以下过程会刷新密钥,以便可以使用其他的加密类型。

示例 21-2 从主服务器刷新主体密钥

如果以 root 身份登录到 KDC 主服务器,您可以通过以下命令刷新 TGS 服务主体:

kdc1 # kadmin.local -q 'cpw -randkey krbtgt/EXAMPLE.COM@EXAMPLE.COM'