Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
11.2.2. セカンダリー KDC の設定
あるレルムに複数の KDC がある場合は、1 つの KDC (マスター KDC) が書き込み可能なレルムデータベースの書き込み可能なコピーを保持し、kadmind を実行します。マスター KDC もレルムの 管理サーバー です。追加のセカンダリー KDC はデータベースの読み取り専用コピーを維持して、kpropd を実行します。
マスターおよびスレーブを伝達するステップでは、マスター KDC がデータベースを一時ダンプファイルにダンプして、そのファイルを各スレーブに送信する必要があります。このファイルは、そのダンプファイルのコンテンツでこれ以前に受信したデータベースの読み取り専用コピーを上書きします。
セカンダリー KDC を設定するには、以下の手順にしたがいます。
- KDC に必要なパッケージをインストールします。
[root@slavekdc ~]# yum install krb5-server krb5-libs krb5-workstation
- マスター KDC の
krb5.conf
およびkdc.conf
ファイルをセカンダリー KDC にコピーします。 - マスター KDC で root シェル kadmin.local から開始します。
- マスター KDC の host サービスの新規エントリーを作成するには、kadmin.local add_principal コマンドを使用します。
[root@masterkdc ~]# kadmin.local -r EXAMPLE.COM Authenticating as principal root/admin@EXAMPLE.COM with password. kadmin: add_principal -randkey host/masterkdc.example.com Principal "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
- kadmin.local ktadd コマンドを使ってサービス用にランダムの鍵を設定し、その鍵をマスターのデフォルト keytab ファイルに保存します。注記この鍵は、kprop コマンドがセカンダリーサーバーに認証するために使用されます。インストールするセカンダリー KDC サーバーの数にかかわらず、これは一度だけ実行する必要があります。
- セカンダリー KDC で root シェルから kadmin を起動します。
- セカンダリー KDC の host サービスの新規エントリーを作成するには、kadmin.local add_principal コマンドを使用します。
[root@slavekdc ~]# kadmin -p jsmith/admin@EXAMPLE.COM -r EXAMPLE.COM Authenticating as principal jsmith/admin@EXAMPLE.COM with password. Password for jsmith/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
- kadmin.local ktadd コマンドを使用してサービス用にランダムの鍵を設定し、その鍵をセカンダリー KDC サーバーのデフォルト keytab ファイルに保存します。このキーは、クライアントの認証時に kpropd サービスによって使用されます。
- セカンダリー KDC はサービスキーを使用して、接続するクライアントをすべて認証できます。すべてのクライアントが新しいレルムデータベースで kprop サービスを提供することができるわけではありません。アクセスを制限するため、セカンダリー KDC 上の kprop サービスは、プリンシパル名が
/var/kerberos/krb5kdc/kpropd.acl
でリストされているクライアントからの更新のみを受け入れます。マスター KDC のホストサービス名をこのファイルに追加します。[root@slavekdc ~]# 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 で同一の古いファイルを作成します。ダミーデータベースは、最初に成功したデータベースの伝播によって上書きされます。 - セカンダリー KDC のファイアウォールにより、マスター KDC がポート 754 (krb5_prop) で TCP を使用して接続し、kprop サービスを起動できることを確認します。
- kadmin サービスが 無効 になっていることを確認します。
- マスター KDC のレルムデータベースを、kprop コマンドが読み取るデフォルトのデータファイル (
/var/kerberos/krb5kdc/slave_datatrans
) にダンプして、手動でデータベース伝搬テストを実行します。[root@masterkdc ~]# kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
- kprop コマンドを使用して、そのコンテンツをセカンダリー KDC に送信します。
[root@masterkdc ~]# kprop slavekdc.example.com
- kinit を使用して、クライアントシステムが KDC から正常に初回認証情報を取得できることを確認します。クライアントの
/etc/krb5.conf
は、KDC の一覧内のセカンダリー KDC のみを一覧表示する必要があります。[realms] EXAMPLE.COM = {
kdc = slavekdc.example.com.:88
admin_server = kdc.example.com default_domain = example.com } - レルムデータベースをダンプし、kprop コマンドの実行によりデータベースを各セカンダリー KDC に送信するスクリプトを作成します。このスクリプトを定期的に実行するように cron サービスを設定します。