Sun 企業辯證機制使用指南

調換主與從屬 KDC

應該使用這些程序,好讓與一個從屬 KDC 調換主 KDC 的工作容易一點。在主 KDC 伺服器由於某種原因失敗,或是必須重新安裝主 KDC 時(例如有新的硬體),才需要這樣做。

如何設置一個可調換從屬 KDC

此程序應該在您想要讓它成為主 KDC 的從屬 KDC 伺服器之上完成。

  1. 在安裝過程中使用主及可調換從屬 KDC 伺服器的別名。

    在定義 KDC 的主機名稱時,確定每個系統都有一個別名包括在 DNS 中,並且在 /etc/krb5/krb5.conf 中定義主機時使用別名。

  2. 安裝主 KDC 軟體。

    安裝主 KDC 軟體提供二進位以及調換過程中所需的其他檔案,其中包括所有從屬 KDC 伺服器需要的檔案。當安裝完成之後請勿將系統重新開機。

  3. 請依照安裝一個從屬 KDC 的步驟進行。

    在任何調換之前,此伺服器應該就像範疇中任何其他從屬 KDC 一樣地運作。請參見 "如何設置一個從屬 KDC" 中的指示。請勿安裝從屬軟體。所有必要的檔案都必須在安裝主軟體時安裝。

  4. 移動主 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
    
  5. 停用 /etc/init.d/kdc.master 中的 kadmind 啟動。

    要防止從屬處理變更 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 資料庫的副本傳播出去。


    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")。在此程序中,要被調換的主伺服器稱為 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