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 加密框架(任务)

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 服务(任务)

配置 Kerberos 服务(任务列表)

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

配置 KDC 服务器

如何手动配置主 KDC 服务器

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

如何手动配置从 KDC 服务器

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

配置跨领域验证

如何建立分层跨领域验证

如何建立直接跨领域验证

配置 Kerberos 网络应用服务器

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

配置 Kerberos NFS 服务器

如何配置 Kerberos NFS 服务器

如何创建凭证表

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

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

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

配置 Kerberos 客户机

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

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

如何自动配置 Kerberos 客户机

如何交互配置 Kerberos 客户机

如何手动配置 Kerberos 客户机

如何禁用票证授予票证 (Ticket Granting Ticket, TGT) 的验证

如何以 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 服务器的访问

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

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

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

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

27.  Kerberos 服务(参考)

第 7 部分Oracle Solaris 审计

28.  Oracle Solaris 审计(概述)

29.  规划 Oracle Solaris 审计

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

31.  Oracle Solaris 审计(参考)

词汇表

索引

管理 Kerberos 数据库

Kerberos 数据库是 Kerberos 的主干,必须正确维护。本节介绍有关如何管理 Kerberos 数据库的一些过程,例如备份和恢复数据库、设置增量或并行传播以及管理存储文件。如何手动配置主 KDC 服务器中介绍了该数据库的初始设置步骤。

备份和传播 Kerberos 数据库

将 Kerberos 数据库从主 KDC 服务器传播到从 KDC 服务器是最重要的配置任务之一。如果传播发生频率不够高,主 KDC 服务器与从 KDC 服务器将无法保持同步。因此,如果主 KDC 服务器关闭,从 KDC 服务器将不能获取最新的数据库信息。此外,如果出于负载平衡目的将从 KDC 服务器配置为主 KDC 服务器,则将该从 KDC 服务器用作主 KDC 服务器的客户机将不能获取最新的信息。所以,必须确保传播发生频率足够高,或者基于更改 Kerberos 数据库的频率配置服务器以进行增量传播。增量传播优先于手动传播,因为手动传播数据库时需要更多的管理开销。此外,执行完全数据库传播时效率也较低。

配置主 KDC 服务器时,可以在 cron 作业中设置 kprop_script 命令以自动将 Kerberos 数据库备份到 /var/krb5/slave_datatrans 转储文件,并将该数据库传播到从 KDC 服务器。不过,与其他任何文件一样,Kerberos 数据库可能会受损。如果在从 KDC 服务器上发生数据受损,您可能不会注意到,因为下一次数据库自动传播会安装一个全新的副本。但是,如果在主 KDC 服务器上发生数据受损,则在下一次传播期间会将损坏的数据库传播到所有从 KDC 服务器。而且,损坏的备份会覆盖主 KDC 服务器上先前未损坏的备份文件。

由于在这种情况下不存在任何“安全”的备份副本,因此还应设置 cron 作业,以便定期将 slave_datatrans 转储文件复制到其他位置,或者使用 kdb5_utildump 命令创建另一个单独的备份副本。这样,即使数据库受损,也可以使用 kdb5_utilload 命令在主 KDC 服务器上恢复最新的备份。

另一个重要注意事项是:数据库转储文件包含主体密钥,因此需要防止未经授权的用户访问该文件。缺省情况下,只有 root 身份才具有读写数据库转储文件的权限。要防止未经授权的访问,请仅使用 kprop 命令传播数据库转储文件,该命令会对传送中的数据进行加密。此外,kprop 命令仅将数据传播到从 KDC 服务器,这可以最大程度地降低将数据库转储文件意外发送到未经授权的主机的几率。


注意

注意 - 如果传播 Kerberos 数据库之后对其进行了更新,而在下一次传播之前该数据库受损,则从 KDC 服务器将不包含这些更新。这些更新将会丢失。因此,如果在计划的定期传播之前向 Kerberos 数据库添加了重要的更新,应手动传播该数据库,以避免数据丢失。


kpropd.acl 文件

从 KDC 服务器上的 kpropd.acl 文件提供主机主体名称的列表(每个名称占一行),用于指定该 KDC 可以通过传播从其接收更新数据库的系统。如果使用主 KDC 服务器传播到所有从 KDC 服务器,则每个从 KDC 服务器上的 kpropd.acl 文件仅需包含主 KDC 服务器的主机主体名称。

但是,本书中的 Kerberos 安装和后续配置步骤将引导您将同一个 kpropd.acl 文件添加到主 KDC 服务器和从 KDC 服务器。该文件包含所有 KDC 主机主体名称。通过此配置,在传播端 KDC 临时不可用时,可以从任何 KDC 进行传播。而且,通过在所有 KDC 上保留相同副本,可以轻松地维护配置。

kprop_script 命令

kprop_script 命令使用 kprop 命令将 Kerberos 数据库传播到其他 KDC。如果在从 KDC 服务器上运行 kprop_script 命令,则会将该从 KDC 服务器的 Kerberos 数据库副本传播到其他 KDC。kprop_script 接受主机名列表作为参数,该列表以空格分隔,表示要传播的 KDC。

运行 kprop_script 时,将在 /var/krb5/slave_datatrans 文件中创建 Kerberos 数据库的备份,并将该文件复制到指定的 KDC。在完成传播之前,Kerberos 数据库处于锁定状态。

如何备份 Kerberos 数据库

  1. 成为主 KDC 服务器上的超级用户。
  2. 使用 kdb5_util 命令的 dump 命令备份 Kerberos 数据库。
    # /usr/sbin/kdb5_util dump [-verbose] [-d dbname] [filename [principals...]]
    -verbose

    显示要备份的每个主体和策略的名称。

    dbname

    定义要备份的数据库的名称。请注意,可以指定文件的绝对路径。如果未指定 -d 选项,则缺省数据库名称为 /var/krb5/principal

    filename

    定义用于备份数据库的文件。可以指定该文件的绝对路径。如果未指定文件,数据库将转储到标准输出。

    principals

    定义要备份的一个或多个主体的列表(以空格分隔)。必须使用全限定主体名称。如果未指定任何主体,则将备份整个数据库。

示例 23-12 备份 Kerberos 数据库

在以下示例中,Kerberos 数据库将备份到名为 dumpfile 的文件。由于指定了 -verbose 选项,备份时会显示每个主体。

# kdb5_util dump -verbose dumpfile 
kadmin/kdc1.eng.example.com@ENG.EXAMPLE.COM 
krbtgt/ENG.EXAMPLE.COM@ENG.EXAMPLE.COM 
kadmin/history@ENG.EXAMPLE.COM 
pak/admin@ENG.EXAMPLE.COM 
pak@ENG.EXAMPLE.COM
changepw/kdc1.eng.example.com@ENG.EXAMPLE.COM

在以下示例中,将备份 Kerberos 数据库中的 pakpak/admin 主体。

# kdb5_util dump -verbose dumpfile pak/admin@ENG.EXAMPLE.COM pak@ENG.EXAMPLE.COM
pak/admin@ENG.EXAMPLE.COM
pak@ENG.EXAMPLE.COM

如何恢复 Kerberos 数据库

  1. 成为主 KDC 服务器上的超级用户。
  2. 在主 KDC 服务器上,停止 KDC 守护进程。
    kdc1 # svcadm disable network/security/krb5kdc
    kdc1 # svcadm disable network/security/kadmin
  3. 使用 kdb_util 命令 的 load 命令恢复 Kerberos 数据库。
    # /usr/sbin/kdb5_util load [-verbose] [-d dbname] [-update] [filename] 
    -verbose

    显示要恢复的每个主体和策略的名称。

    dbname

    定义要恢复的数据库的名称。请注意,可以指定文件的绝对路径。如果未指定 -d 选项,则缺省数据库名称为 /var/krb5/principal

    -update

    更新现有数据库。否则,会创建新数据库或覆盖现有数据库。

    filename

    定义用于恢复数据库的文件。可以指定该文件的绝对路径。

  4. 启动 KDC 守护进程。
    kdc1 # svcadm enable -r network/security/krb5kdc
    kdc1 # svcadm enable -r network/security/kadmin

示例 23-13 恢复 Kerberos 数据库

在以下示例中,将从 dumpfile 文件将名为 database1 的数据库恢复到当前目录。由于未指定 -update 选项,恢复操作将创建一个新数据库。

# kdb5_util load -d database1 dumpfile

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

如果您的 KDC 数据库是在运行 Solaris 8 或 Solaris 9 发行版的服务器上创建的,转换该数据库可允许您利用改进的数据库格式。

开始之前

确保数据库使用的是旧格式。

  1. 在主 KDC 服务器上,停止 KDC 守护进程。
    kdc1 # svcadm disable network/security/krb5kdc
    kdc1 # svcadm disable network/security/kadmin
  2. 创建一个目录用来存储数据库的临时副本。
    kdc1 # mkdir /var/krb5/tmp
    kdc1 # chmod 700 /var/krb5/tmp
  3. 转储 KDC 数据库。
    kdc1 # kdb5_util dump /var/krb5/tmp/prdb.txt
  4. 保存当前数据库文件的副本。
    kdc1 # cd /var/krb5
    kdc1 # mv princ* tmp/
  5. 装入数据库。
    kdc1 # kdb5_util load /var/krb5/tmp/prdb.txt
  6. 启动 KDC 守护进程。
    kdc1 # svcadm enable -r network/security/krb5kdc
    kdc1 # svcadm enable -r network/security/kadmin

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

此过程中的步骤可用于重新配置现有的主 KDC 服务器,以使用增量传播。此过程中使用以下配置参数:

  1. kdc.conf 中添加项。

    需要启用增量传播,并选择主 KDC 服务器在日志中记录的更新的数目。有关更多信息,请参见 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
                    admin_keytab = /etc/krb5/kadm5.keytab
                    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
            }
  2. 创建 kiprop 主体。

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

    kdc1 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    kadmin: addprinc -randkey kiprop/kdc1.example.com
    Principal "kiprop/kdc1.example.com@EXAMPLE.COM" created.
    kadmin: addprinc -randkey kiprop/kdc2.example.com
    Principal "kiprop/kdc2.example.com@EXAMPLE.COM" created.
    kadmin:
  3. kiprop 主体添加到 kadmind 密钥表文件中。

    通过将 kiprop 主体添加到 kadm5.keytab 文件中,允许 kadmind 命令在启动时对自身进行验证。

    kadmin: ktadd -k /etc/krb5/kadm5.keytab kiprop/kdc1.example.com
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-256 CTS mode
              with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
              with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type Triple DES cbc
              mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type ArcFour
              with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type DES cbc mode
              with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    kadmin: quit
  4. 在主 KDC 服务器上,向 kadm5.acl 中添加 kiprop 项。

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

    kdc1 # cat /etc/krb5/kadm5.acl
    */admin@EXAMPLE.COM *
    kiprop/kdc2.example.com@EXAMPLE.COM p
  5. 注释掉 root crontab 文件中的 kprop 行。

    此步骤禁止从 KDC 服务器传播其 KDC 数据库副本。

    kdc1 # crontab -e
    #ident  "@(#)root       1.20    01/11/06 SMI"
    #
    # The root crontab should be used to perform accounting data collection.
    #
    # The rtc command is run to adjust the real time clock if and when
    # daylight savings time changes.
    #
    10 3 * * * /usr/sbin/logadm
    15 3 * * 0 /usr/lib/fs/nfs/nfsfind
    1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
    30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
    #10 3 * * * /usr/lib/krb5kprop_script kdc2.example.sun.com #SUNWkr5ma
  6. 重新启动 kadmind
    kdc1 # svcadm restart network/security/kadmin
  7. 重新配置所有使用增量传播的从 KDC 服务器。

    有关完整说明,请参见如何重新配置从 KDC 服务器以使用增量传播

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

  1. krb5.conf 添加项。

    这些新项启用增量传播并将轮询时间设置为 2 分钟。

    kdc2 # cat /etc/krb5/krb5.conf
    [kdcdefaults]
            kdc_ports = 88,750
    
    [realms]
            EXAMPLE.COM= {
                    profile = /etc/krb5/krb5.conf
                    database_name = /var/krb5/principal
                    admin_keytab = /etc/krb5/kadm5.keytab
                    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
            }
  2. kiprop 主体添加到 krb5.keytab 文件中。
    kdc2 # /usr/sbin/kadmin -p kws/admin
    Enter password: <Type kws/admin password>
    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: quit
  3. 禁用 kpropd
    kdc2 # svcadm disable network/security/krb5_prop
  4. 重新启动 KDC 服务器。
    kdc2 # svcadm restart network/security/krb5kdc

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

此过程说明如何重新配置运行 Solaris 10 发行版的从 KDC 服务器,以使用完全传播。通常,只有当主 KDC 服务器运行 Solaris 9 发行版或更早发行版时才需要使用此过程。在这种情况下,主 KDC 服务器不支持增量传播,因此需要配置从 KDC 服务器以允许进行传播。

在此过程中,将配置名为 kdc3 的从 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 服务器正常工作,它必须有主机主体。请注意,当主体实例为主机名时,无论 /etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定 FQDN。

      kadmin: addprinc -randkey host/kdc3.example.com
      Principal "host/kdc3@EXAMPLE.COM" created.
      kadmin: 
    2. 退出 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
                    kdc = kdc3.example.com
                    admin_server = kdc1.example.com
            }
  4. 在主 KDC 服务器上,将主 KDC 服务器和每个从 KDC 服务器的项添加到 kpropd.acl 文件中。

    有关此文件的完整说明,请参见 kprop(1M) 手册页。

    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.example.com@EXAMPLE.COM
    host/kdc2.example.com@EXAMPLE.COM
    host/kdc3.example.com@EXAMPLE.COM
  5. 在所有的从 KDC 服务器上,从主 KDC 服务器复制 KDC 管理文件。

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

    • /etc/krb5/krb5.conf

    • /etc/krb5/kdc.conf

    • /etc/krb5/kpropd.acl

  6. 在所有的从 KDC 服务器上,确保未填充 Kerberos 访问控制列表文件 kadm5.acl

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

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

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

  7. 在新的从 KDC 服务器上,启动 kadmin 命令。

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

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

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

      kadmin: ktadd host/kdc3.example.com
      Entry for principal host/kdc3.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/kdc3.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/kdc3.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/kdc3.example.com with kvno 3, encryption type ArcFour
                with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      Entry for principal host/kdc3.example.com with kvno 3, encryption type DES cbc mode
                with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
      kadmin: 
    2. 退出 kadmin
      kadmin: quit
  8. 在主 KDC 服务器上,将从 KDC 服务器名称添加到 cron 作业中,该作业通过运行 crontab -e 自动运行备份。

    kprop_script 行的末尾添加每个从 KDC 服务器的名称。

    10 3 * * * /usr/lib/krb5/kprop_script kdc2.example.com kdc3.example.com

    您可能还希望更改备份的时间。此项将在每天的凌晨 3:10 启动备份过程。

  9. 在新的从 KDC 服务器上,启动 Kerberos 传播守护进程。
    kdc3 # svcadm enable network/security/krb5_prop
  10. 在主 KDC 服务器上,使用 kprop_script 备份并传播数据库。

    如果已存在数据库的备份副本,则不必完成其他备份。有关进一步的说明,请参见如何手动将 Kerberos 数据库传播到从 KDC 服务器

    kdc1 # /usr/lib/krb5/kprop_script kdc3.example.com
    Database propagation to kdc3.example.com: SUCCEEDED
  11. 在新的从 KDC 服务器上,使用 kdb5_util 创建一个存储文件。
    kdc3 # /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>
  12. 可选在新的从 KDC 服务器上,使用 NTP 或其他时钟同步机制同步主 KDC 服务器时钟。

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

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

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

如果配置了增量传播,则此过程可确保已更新从 KDC 服务器上的信息。

  1. 在主 KDC 服务器上,运行 kproplog 命令。
    kdc1 # /usr/sbin/kproplog -h
  2. 在从 KDC 服务器上,运行 kproplog 命令。
    kdc2 # /usr/sbin/kproplog -h
  3. 检查最后一个序列号和最后一个时间戳的值是否匹配。

示例 23-14 检验 KDC 服务器是否同步

以下是在主 KDC 服务器上运行 kproplog 命令的结果样例。

kdc1 # /usr/sbin/kproplog -h

Kerberos update log (/var/krb5/principal.ulog)
Update log dump:
    Log version #: 1
    Log state: Stable
    Entry block size: 2048
    Number of entries: 2500
    First serial #: 137966
    Last serial #: 140465
    First time stamp: Fri Nov 28 00:59:27 2004
    Last time stamp: Fri Nov 28 01:06:13 2004

以下是在从 KDC 服务器上运行 kproplog 命令的结果样例。

kdc2 # /usr/sbin/kproplog -h

Kerberos update log (/var/krb5/principal.ulog)
Update log dump:
    Log version #: 1
    Log state: Stable
    Entry block size: 2048
    Number of entries: 0
    First serial #: None
    Last serial #: 140465
    First time stamp: None
    Last time stamp: Fri Nov 28 01:06:13 2004

请注意,最后一个序列号和最后一个时间戳的值相同,表示从 KDC 服务器与主 KDC 服务器同步。

在从 KDC 服务器的输出中,可以注意到从 KDC 服务器的更新日志中不存在任何更新项。这是因为与主 KDC 服务器不同,从 KDC 服务器不保留更新。此外,由于第一个序列号或第一个时间戳不是相关信息,因此从 KDC 服务器也不包括这些信息。

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

此过程说明如何使用 kprop 命令传播 Kerberos 数据库。如果需要在定期的 cron 作业之外将从 KDC 服务器与主 KDC 服务器同步,可使用此过程。与 kprop_script 不同,可以使用 kprop 仅传播当前数据库备份,而无需先创建 Kerberos 数据库的新备份。


注 - 如果使用的是增量传播,则不要使用此过程。


  1. 成为主 KDC 服务器上的超级用户。
  2. 可选使用 kdb5_util 命令备份数据库。
    # /usr/sbin/kdb5_util dump /var/krb5/slave_datatrans
  3. 使用 kprop 命令将数据库传播到从 KDC 服务器。
    # /usr/lib/krb5/kprop -f /var/krb5/slave_datatrans slave-KDC

示例 23-15 使用 kprop_script 手动将 Kerberos 数据库传播到从 KDC 服务器

如果要备份数据库,并在定期的 cron 作业之外将该数据库传播到从 KDC 服务器,还可以按如下所示使用 kprop_script 命令:

# /usr/lib/krb5/kprop_script slave-KDC

设置并行传播

大多数情况下,会以独占的方式使用主 KDC 服务器将其 Kerberos 数据库传播到从 KDC 服务器。但是,如果站点上有很多从 KDC 服务器,可以考虑分担传播过程的负荷,称为并行传播


注 - 如果使用的是增量传播,则不要使用此过程。


通过并行传播,特定的从 KDC 服务器可以与主 KDC 服务器分担传播工作负荷。通过这种分担,可以更快地完成传播并减轻主 KDC 服务器的工作负荷。

例如,假设站点上有一个主 KDC 服务器和六个从 KDC 服务器(如图 23-2 所示),其中,slave-1slave-3 组成一个逻辑组,slave-4slave-6 组成另一个逻辑组。要设置并行传播,可以使主 KDC 服务器将数据库传播到 slave-1slave-4。然后,这些从 KDC 服务器又可将该数据库传播到自己组中的其他从 KDC 服务器。

图 23-2 并行传播配置示例

image:如图所示,有一个主 KDC 服务器和两个从 KDC 传播服务器。每个从 KDC 传播服务器又将主 KDC 数据库传播到它们的从 KDC 服务器。

设置并行传播的配置步骤

以下不是详细的逐步过程,而是用于启用并行传播的配置步骤的概要列表。这些步骤包括:

  1. 在主 KDC 服务器上,更改其 cron 作业中的 kprop_script 项,以仅包括将执行后续传播的从 KDC 服务器(从 KDC 传播服务器)的参数。

  2. 在每个从 KDC 传播服务器上,将 kprop_script 项添加到其 cron 作业中,其中必须包括要传播的从 KDC 服务器的参数。要成功实现并行传播,应设置 cron 作业,使其在将新 Kerberos 数据库传播到从 KDC 传播服务器本身之后再运行。


    注 - 向从 KDC 传播服务器进行传播所需的时间取决于多种因素,例如网络带宽和 Kerberos 数据库的大小。


  3. 在每个从 KDC 服务器上,设置适当的传播权限。通过将传播端 KDC 的主机主体名称添加到其 kpropd.acl 文件中,可完成此步骤。

示例 23-16 设置并行传播

图 23-2 为例,主 KDC 服务器的 kprop_script 项与以下示例类似:

0 3 * * * /usr/lib/krb5/kprop_script slave-1.example.com slave-4.example.com

slave-1kprop_script 项类似于以下示例:

0 4 * * * /usr/lib/krb5/kprop_script slave-2.example.com slave-3.example.com

请注意,从 KDC 服务器上的传播在主 KDC 服务器将数据库传播到它一小时后开始。

从 KDC 传播服务器上的 kpropd.acl 文件将包含以下项:

host/master.example.com@EXAMPLE.COM

要从 slave-1 传播到的从 KDC 服务器上的 kpropd.acl 文件将包含以下项:

host/slave-1.example.com@EXAMPLE.COM

管理存储文件

存储文件包含 Kerberos 数据库的主密钥,该密钥在创建 Kerberos 数据库时自动创建。如果存储文件损坏,可以使用 kdb5_util 实用程序的 stash 命令替换损坏的文件。仅在使用 kdb5_utildestroy 命令删除 Kerberos 数据库后,才需要删除存储文件。由于存储文件不会自动随数据库一起删除,所以您必须手动删除存储文件以完成清除。

如何删除存储文件

  1. 成为包含存储文件的 KDC 上的超级用户。
  2. 删除存储文件。
    # rm stash-file

    其中,stash-file 是存储文件的路径。缺省情况下,存储文件位于 /var/krb5/.k5. realm


    注 - 如果需要重新创建存储文件,可以使用 kdb5_util 命令的 -f 选项。