Sun 企业鉴别机制指南

交换主 KDC 和从 KDC

这些过程应当用于简化一个主 KDC 与一个从 KDC 的交换。只有当主 KDC 服务器失败出于某个原因而发生故障时,或者主 KDC 需要重新安装时 (例如新的硬件),才应当进行该交换操作。

如何配置一个可交换的从 KDC

本过程应当在您想要让其可以变为主 KDC 的从 KDC 服务器上进行。

  1. 在安装过程中,请使用主 KDC 和可交换的从 KDC 服务器的别名。

    当为 KDC 定义主机名时,请确保每个系统在 DNS 中均包含有一个别名,并在 /etc/krb5/krb5.conf 中定义主机时使用别名。

  2. 安装主 KDC 软件。

    安装主 KDC 软件,提供二进制文件以及交换过程中所需要的其它的文件,这包括从 KDC 服务器所要求的所有文件。安装完毕时不要重新引导系统。

  3. 遵照执行用来安装一个从 KDC.的步骤

    在任何交换之前,该服务器应当象区域中的任何其它的从 KDC 一样工作。请参见 "如何配置一个从 KDC",了解其操作指示。不要安装从软件。在安装主软件时,会安装所要求的所有文件。

  4. 移动主 KDC 命令。

    为了防止从该从 KDC 上运行主 KDC 命令,请将 kpropkadmindkadmin.local 移到一个保留位置。


    kdc4 # mv /usr/krb5/lib/kprop /usr/krb5/lib/kprop.save
    kdc4 # mv /usr/krb5/lib/kadmind /usr/krb5/lib/kadmind.save
    kdc4 # mv /usr/krb5/sbin/kadmin.local /usr/krb5/sbin/kadmin.local.save
    
  5. /etc/init.d/kdc.master 中禁用 kadmind 启动。

    如要防止从 KDC 对更改 KDC 数据库的请求进行处理,请将行正文中用于启动 kadmind 的一行变为注释:


    kdc4 # cat /etc/init.d/kdc.master
    
     .
     .
    
    case "$1" in
    'start')
    
            if [ -f $KDC_CONF_DIR/kdc.conf ]
            then
    #                $BINDIR/kadmind 
            fi
            ;;
  6. root crontab 文件中的 kprop 一行变为注释。

    该步骤防止从 KDC 传播其 KDC 数据库副本。


    kdc4 # crontab -e
    #ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */
    #
    # 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 * * 0,4 /etc/cron.d/logchecker
    10 3 * * 0   /usr/lib/newsyslog
    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/krb5/lib/kprop_script kdc1.acme.sun.com #SUNWkr5ma
    

如何交换主 KDC 和从 KDC

本过程要求从 KDC 服务器业已设置为一个可交换从 KDC (请参见 "如何配置一个可交换的从 KDC")。在本过程中,被替换的主服务器名为 kdc1,而将变为新的主 KDC 的从 KDC 名为 kdc4

  1. 在旧的主 KDC 上: 杀死 kadmind 进程。

    杀死 kadmind 进程,防止对 KDC 数据库进行任何更改。


    kdc1 # /etc/init.d/kdc.master stop
    
  2. 在旧的主 KDC 上: 将 root crontab 文件中的 kprop 一行变为注释。

    该步骤防止旧的主 KDC 传播其 KDC 数据库副本。


    kdc1 # crontab -e
    #ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */
    #
    # 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 * * 0,4 /etc/cron.d/logchecker
    10 3 * * 0   /usr/lib/newsyslog
    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/krb5/lib/kprop_script kdc2.acme.sun.com #SUNWkr5ma
    
  3. 在旧的主 KDC 上: 在 /etc/init.d/kdc.master 中禁用 kadmind 启动。

    如要在服务器重新引导时防止主 KDC 重新启动 kadmind,请将正文中用于启动 kadmind 的一行变为注释:


    kdc1 # cat /etc/init.d/kdc.master
    
     .
     .
    
    case "$1" in
    'start')
    
            if [ -f $KDC_CONF_DIR/kdc.conf ]
            then
    #                $BINDIR/kadmind 
            fi
            ;;
  4. 在旧的主 KDC 上: 运行 kprop_script 来备份和传播数据库。


    kdc1 # /usr/krb5/lib/kprop_script kdc4.acme.com
    数据库传播到 kdc4.acme.com: 已成功
  5. 在旧的主 KDC 上: 移动主 KDC 命令。

    为了防止运行主 KDC 命令,请将 kpropkadmindkadmin.local 移到一个保留位置。


    kdc4 # mv /usr/krb5/lib/kprop /usr/krb5/lib/kprop.save
    kdc4 # mv /usr/krb5/lib/kadmind /usr/krb5/lib/kadmind.save
    kdc4 # mv /usr/krb5/sbin/kadmin.local /usr/krb5/sbin/kadmin.local.save
    
  6. 在 DNS 服务器上: 更改主 KDC 的别名。

    如要更改服务器,请编辑 acme.com 区段文件并更改 masterkdc 的条目。


    masterkdc IN CNAME kdc4
  7. 在 DNS 服务器上: 重新启动因特网域名服务器。

    在两个服务器上运行下列命令来获得新的别名信息:


    # pkill -1 in.named
  8. 在新的主 KDC 上: 移动主 KDC 命令。


    kdc4 # mv /usr/krb5/lib/kprop.save /usr/krb5/lib/kprop
    kdc4 # mv /usr/krb5/lib/kadmind.save /usr/krb5/lib/kadmind
    kdc4 # mv /usr/krb5/sbin/kadmin.local.save /usr/krb5/sbin/kadmin.local
    
  9. 在新的主 KDC 上: 使用 kadmin.local,为 kadmin 创建一个密钥表文件。

    该命令序列创建一个特殊的密钥表文件,其中带有针对 adminchangepw 的授权对象条目。这些授权对象是 kadmind 服务所需的。


    kdc4 # /usr/krb5/sbin/kadmin.local
    kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc4.acme.com
    授权对象 kadmin/kdc4.acme.com 的条目,kvno 为 3,加密类型为 DES-CBC-CRC
               被添加到密钥表 WRFILE:/etc/krb5/kadm5.keytab。kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc4.acme.com
    授权对象changepw/kdc4.acme.com 的条目, kvno 为 3,加密类型为DES-CBC-CRC
                被添加到密钥表 WRFILE:/etc/krb5/kadm5.keytab。
     kadmin.local: 退出
    
  10. 在新的主 KDC 上: 在 /etc/init.d/kdc.master 中启用 kadmind 启动。


    kdc4 # cat /etc/init.d/kdc.master
    
     .
     .
    
    case "$1" in
    'start')
    
            if [ -f $KDC_CONF_DIR/kdc.conf ]
            then
                    $BINDIR/kadmind 
            fi
            ;;
  11. 在新的主 KDC 上: 启动 kadmind


    kdc4 # /etc/init.d/kdc.master start
    
  12. 启用 root crontab 文件中的 kprop 一行。


    kdc4 # crontab -e
    #ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */
    #
    # 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 * * 0,4 /etc/cron.d/logchecker
    10 3 * * 0   /usr/lib/newsyslog
    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/krb5/lib/kprop_script kdc1.acme.sun.com #SUNWkr5ma