Sun 企业鉴别机制指南

如何交换主 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