Sun Enterprise Authentication Mechanism 1.0.1 ガイド

マスター KDC とスレーブ KDC の切り替え

これらの手順は、マスター KDC とスレーブ KDC の切り替えを容易にします。マスター KDC とスレーブ KDC を切り替えるのは、マスター KDC が何らかの理由で異常終了した場合、あるいはマスター KDC を再インストールしなければならない (たとえば、新しいハードウェアをインストールする) 場合だけです。

切り替え可能なスレーブ KDC を構成するには

この手順は、マスター KDC としても利用したいスレーブ KDC サーバー上で実行します。

  1. インストール時、マスター KDC サーバーと切り替え可能なスレーブ KDC サーバーには別名を使用します。

    KDC のホスト名を定義するときは各システムの別名が DNS に含まれていることを確認して、/etc/krb5/krb5.conf にホストを定義するときは別名を使用します。

  2. マスター KDC と切り替え可能なスレーブ KDC の両方で KDC 起動スクリプトを選択して、ホスト名を無効にします。

    マスター KDC サーバーと切り替え可能なスレーブ KDC サーバーに別名を使用するのは、現在使用しているノード名が /etc/krb5/krb5.conf に存在していることを KDC サーバーに障害が発生する前に確認するためです。別名を使用して、切り替えをスムーズに行うには、以下に示すように /etc/init.d/kdc の中の 2 行をコメントにする必要があります。


    if [ -f $KDC_CONF_DIR/kdc.conf ]
            then
     #               node=`uname -n`
     #               if grep -i "kdc.*=.*$node" /etc/krb5/krb5.conf > /dev/null 2>&1 ;
                    then
                            $BINDIR/krb5kdc 
                    fi
            fi
            ;;
     
  3. マスター KDC ソフトウェアをインストールします。

    マスター KDC ソフトウェアをインストールすると、切り替え中に必要なバイナリなどのファイルが提供されます。これらのファイルには、スレーブ KDC サーバーが必要とするファイルもすべて含まれています。インストールが完了したときには、システムをリブートしないでください。

  4. スレーブ KDC を構成します。

    切り替え前に、当該サーバーはレルム内の他のスレーブ KDC とまったく同じように機能している必要があります。この方法については、「スレーブ KDC を構成するには」を参照してください。スレーブソフトウェアはインストールしないでください。必要なファイルはすべて、マスターソフトウェアをインストールするときにインストールされます。

  5. マスター KDC コマンドを移動します。

    当該スレーブからマスター KDC コマンドを実行できないようにするには、kpropkadmind、および kadmin.local を別の場所に移動します。


    kdc4 # mv /usr/lib/kprop /usr/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. /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
            ;;
  7. rootcrontab ファイル内で kprop 行をコメント化します。

    この手順を行うことにより、当該スレーブが KDC データベースのコピーを伝達できないようになります。


    kdc4 # crontab -e
    #ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */
    #
    # root の crontab はアカウントデータを収集するために使用される。
    #
    # rtc コマンドは、夏時間が変更されたときに、実時間クロックを調整
    # するために実行される。
    #
    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 を構成するには」を参照)。この手順では、切り替えられるマスターサーバーの名前が kdc1 で、新しいマスターとなるスレーブサーバーの名前が kdc4 です。

  1. 古いマスター上で kadmind プロセスを強制終了します。

    kadmind プロセスを強制終了すると、KDC データベースを変更できなくなります。


    kdc1 # /etc/init.d/kdc.master stop
    
  2. 古いマスター上で rootcrontab ファイル内の kprop 行をコメント化します。

    この手順を行うことによって、古いマスターが KDC データベースのコピーを伝達できなくなります。


    kdc1 # crontab -e
    #ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */
    #
    # root の crontab はアカウントデータを収集するために使用される。
    #
    # rtc コマンドは、夏時間が変更されたときに、実時間クロックを調整
    # するために実行される。
    #
    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. 古いマスター上で /etc/init.d/kdc.master 内の kadmind の起動を無効にします。

    サーバーをリブートするときにマスターが 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. 古いマスター上でデータベースのバックアップと伝達のために kprop_script を実行します。


    kdc1 # /usr/krb5/lib/kprop_script kdc4.acme.com
    Database propagation to kdc4.acme.com: SUCCEEDED
  5. 古いマスター上でマスター KDC コマンドを移動します。

    マスター KDC コマンドを実行できないようにするには、kpropkadmind、および kadmin.local を別の場所に移動します。


    kdc4 # mv /usr/lib/kprop /usr/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 サーバー上でマスターの別名を変更します。

    サーバーを変更するには、acme.com ゾーンファイルを編集して、masterkdc のエントリを変更します。


    masterkdc IN CNAME kdc4
  7. DNS サーバー上でインターネットドメイン名サーバーを再起動します。

    次のコマンドを両方のサーバー上で実行して、新しい別名情報を取得します。


    # pkill -1 in.named
    
  8. 新しいマスター上でマスター KDC コマンドを移動します。


    kdc4 # mv /usr/lib/kprop.save /usr/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. 新しいマスター上で kadmin.local を使用して、kadmin 用に keytab ファイルを作成します。

    次のコマンドは、adminchangepw のプリンシパルエントリを持つ特別な keytab ファイルを作成します。これらのプリンシパルは 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. 新しいマスター上で /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. 新しいマスター上で kadmind を起動します。


    kdc4 # /etc/init.d/kdc.master start
    
  12. rootcrontab ファイル内で kprop 行を有効にします。


    kdc4 # crontab -e
    #ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */
    #
    # root の crontab はアカウントデータを収集するために使用される。
    #
    # rtc コマンドは、夏時間が変更されたときに、実時間クロックを調整
    # するために実行される。
    #
    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