48.6.8. セカンダリー KDC の設定
いくつかの理由により、特定のレルムに対して複数の KDC を実行することを選択できます。このシナリオでは、1 つの KDC ( マスター KDC)が書き込み可能なレルムデータベースの書き込み可能なコピーを保持し、kadmind (レルムの 管理サーバーでも)を実行し、1 つ以上の KDC (スレーブKDC)はデータベースの読み取り専用コピーを保持し、kpropd を実行します。
マスタースレーブを伝達するステップでは、マスター KDC がデータベースを一時ダンプファイルにダンプして、そのファイルを各スレーブに送信する必要があります。このファイルは、そのダンプファイルのコンテンツでこれ以前に受信したデータベースの読み取り専用コピーを上書きします。
スレーブ KDC を設定するには、マスター KDC の
krb5.conf および kdc.conf
ファイルがスレーブ KDC にコピーされていることを確認します。
マスター KDC の root シェルから kadmin.local を起動し、その add_principal コマンドを使用してマスター KDC の ホスト サービスの新規エントリーを作成し、ktadd コマンドを使用してサービス用にランダムキーを同時に設定し、マスターのデフォルト keytab ファイルに保存します。このキーは、kprop コマンドがスレーブサーバーに対して認証するために使用されます。インストールするスレーブサーバーの数に関係なく、これは一度だけ実行する必要があります。
~]# kadmin.local -r EXAMPLE.COM Authenticating as principal root/admin@EXAMPLE.COM with password. kadmin:add_principal -randkey host/masterkdc.example.com
Principal "host/host/masterkdc.example.com@EXAMPLE.COM" created. kadmin:ktadd host/masterkdc.example.com
Entry for principal host/masterkdc.example.com with kvno 3, encryption type Triple DES cbc mode with \ HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/masterkdc.example.com with kvno 3, encryption type ArcFour with HMAC/md5 \ added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/masterkdc.example.com with kvno 3, encryption type DES with HMAC/sha1 added \ to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/masterkdc.example.com with kvno 3, encryption type DES cbc mode with RSA-MD5 \ added to keytab WRFILE:/etc/krb5.keytab. kadmin:quit
スレーブ KDC で root シェルから kadmin を起動し、その add_principal コマンドを使用してスレーブ KDC の ホスト サービスの新規エントリーを作成し、kadmin のktadd コマンドを使用して、サービスのランダムキーを同時に設定し、スレーブのデフォルト keytab ファイルに保存します。このキーは、クライアントの認証時に kpropd サービスによって使用されます。
~]# kadmin -p jimbo/admin@EXAMPLE.COM -r EXAMPLE.COM Authenticating as principal jimbo/admin@EXAMPLE.COM with password. Password for jimbo/admin@EXAMPLE.COM: kadmin:add_principal -randkey host/slavekdc.example.com
Principal "host/slavekdc.example.com@EXAMPLE.COM" created. kadmin:ktadd host/slavekdc.example.com@EXAMPLE.COM
Entry for principal host/slavekdc.example.com with kvno 3, encryption type Triple DES cbc mode with \ HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/slavekdc.example.com with kvno 3, encryption type ArcFour with HMAC/md5 added \ to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/slavekdc.example.com with kvno 3, encryption type DES with HMAC/sha1 added \ to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/slavekdc.example.com with kvno 3, encryption type DES cbc mode with RSA-MD5 added \ to keytab WRFILE:/etc/krb5.keytab. kadmin:quit
サービスキーを使用すると、スレーブ KDC は接続するクライアントをすべて認証できます。当然ながら、それらすべてがスレーブの kprop サービスを新しいレルムデータベースで提供できる訳ではありません。アクセスを制限するため、スレーブ KDC の kprop サービスは、プリンシパル名が
/var/kerberos/krb5kdc/kpropd.acl
に記載されているクライアントからの更新のみを受け入れます。マスター KDC のホストサービス名をこのファイルに追加します。
~]# echo host/masterkdc.example.com@EXAMPLE.COM > /var/kerberos/krb5kdc/kpropd.acl
スレーブ KDC がデータベースのコピーを取得したら、暗号化に使用されたマスターキーも必要です。KDC データベースのマスターキーがマスター KDC の古いファイルに保存されている場合(通常は
/var/kerberos/krb5kdc/.k5.REALM
という名前)、利用可能なセキュアな方法を使用してこれをスレーブ KDC にコピーするか、kdb5_util create -s を実行して、スレーブ KDC で同一の stash ファイルを作成します。
スレーブ KDC のファイアウォールにより、マスター KDC がポート 754 (krb5_prop)で TCP を使用して接続し、kprop サービスを起動できることを確認します。次に、kadmin サービスが 無効 になっていることを再確認します。
次に、マスター KDC でレルムデータベースをダンプし、kprop コマンドが読み取るデフォルトのデータファイルに、手動でデータベース伝搬テストを実行し(
/var/kerberos/krb5kdc/slave_datatrans
)、kprop コマンドを使用してその内容をスレーブ KDC に送信します。
~]# /usr/kerberos/sbin/kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans ~]# kprop slavekdc.example.com
kinit を使用して、
krb5.conf
がレルムの KDC 一覧にあるスレーブ KDC のみを一覧表示することを確認します。これにより、スレーブ KDC から初期認証情報を正しく取得できるようになりました。
これにより、レルムデータベースをダンプし、kprop コマンドを実行してデータベースを各スレーブ KDC に送信するスクリプトを作成し、cron サービスがスクリプトを定期的に実行するように設定します。