Sun 企業辯證機制使用指南

如何調換主與從屬 KDC

此程序需要先已將從屬 KDC 伺服器設定為一個可調換從屬(請參見 "如何設置一個可調換從屬 KDC")。在此程序中,要被調換的主伺服器稱為 kdc1,而將成為新的主伺服器的從屬則稱為 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
    Database propagation to kdc4.acme.com: SUCCEEDED
  5. 在舊的主 KDC 之上﹕移動主 KDC 指令。

    要防止主 KDC 指令被執行,請將 kpropkadmind、及 kadmin.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
    Entry for principal kadmin/kdc4.acme.com with 
              kvno 3, encryption type DES-CBC-CRC
              added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc4.acme.com
    Entry for principal changepw/kdc4.acme.com with kvno 3, encryption type DES-CBC-CRC 
              added to keytab WRFILE:/etc/krb5/kadm5.keytab.
    kadmin.local: quit
    
  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