系统管理指南:安全性服务

管理 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 数据库处于锁定状态。

Procedure如何备份 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

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


示例 22–10 备份 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

Procedure如何恢复 Kerberos 数据库

  1. 成为主 KDC 的超级用户。

  2. 使用 kdb_util 命令的 load 命令恢复 Kerberos 数据库。


    # /usr/sbin/kdb5_util load [-verbose] [-d dbname] [-update] [filename] 
    -verbose

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

    dbname

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

    -update

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

    filename

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


示例 22–11 恢复 Kerberos 数据库

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


# kdb5_util load -d database1 dumpfile

Procedure如何重新装入 Kerberos 数据库

如果未在运行 Solaris 10 发行版的服务器上创建 KDC 数据库,则通过重新装入该数据库,可以利用改进的数据库格式。

开始之前

请确保数据库使用的是旧格式。请参见特定说明。

  1. 在主 KDC 上,停止 KDC 守护进程。


    kdc1 # svcadm disable network/security/krb5kdc
    
    kdc1 # svcadm disable network/security/kadmin
    
  2. 转储 KDC 数据库。


    kdc1 # kdb5_util dump /tmp/prdb.txt
    
  3. 保存当前数据库文件的副本。


    kdc1 # cd /var/krb5
    
    kdc1 # mkdir old
    
    kdc1 # mv princ* old/
    
  4. 装入数据库。


    kdc1 # kdb5_util load /tmp/prdb.txt
    
  5. 启动 KDC 守护进程。


    kdc1 # svcadm enable network/security/krb5kdc
    
    kdc1 # svcadm enable network/security/kadmin
    

Procedure如何重新配置主 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-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 上,将 kiprop 项添加到 kpropd.acl

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


    kdc1 # cat /etc/krb5/kpropd.acl
    
    host/kdc1.example.com@EXAMPLE.COM
    
    host/kdc2.example.com@EXAMPLE.COM
    
    */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 服务器。

Procedure如何重新配置从 KDC 以使用增量传播

  1. krb5.conf 中添加项。

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


    kdc2 # 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_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-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
    

Procedure如何配置从 KDC 以使用完全传播

此过程说明如何重新配置运行 Solaris 10 发行版的从 KDC 服务器,以使用完全传播。通常,只有运行 Solaris 9 发行版或更早发行版的主 KDC 服务器才需要使用此过程。在这种情况下,主 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 正常工作,该从 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-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
    

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

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

  1. 在 KDC 主服务器上,运行 kproplog 命令。


    kdc1 # /usr/sbin/kproplog -h
    
  2. 在从 KDC 服务器上,运行 kproplog 命令。


    kdc2 # /usr/sbin/kproplog -h
    
  3. 检查最后一个序列号和最后一个时间标记的值是否匹配。


示例 22–12 验证 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 服务器也不包括这些信息。


Procedure如何手动将 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
    

示例 22–13 使用 kprop_script 手动将 Kerberos 数据库传播到从 KDC

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


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

设置并行传播

在大多数情况下,会以独占的方式使用主 KDC 将其 Kerberos 数据库传播到从 KDC。但是,如果站点上有很多从 KDC,则可以考虑共享装入传播进程,即所谓的并行传播


注 –

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


通过并行传播,特定的从 KDC 可以与主 KDC 共享传播功能。通过共享此功能,可以更快地完成传播并减轻主 KDC 的工作。

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

图 22–2 并行传播配置示例

该图显示了带有两个传播从 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 传播的 KDC 的主机主体名称添加到其 kpropd.acl 文件中,可完成此步骤。


示例 22–14 设置并行传播

图 22–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 数据库之后,才应删除存储文件。由于存储文件不会随数据库一起自动删除,所以必须删除存储文件以完成清除。

Procedure如何删除存储文件

  1. 成为包含存储文件的 KDC 的超级用户。

  2. 删除存储文件。


    # rm stash-file
    

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


    注 –

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