Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
11.2. Kerberos KDC の設定
マスター KDC を最初にインストールして設定した後に、必要なセカンダリーサーバーをインストールします。
重要
Kerberos KDC を手動で設定することは推奨されません。Red Hat Enterprise Linux 環境に Kerberos を導入する際は、Identity Management 機能を使用することが推奨されます。
11.2.1. マスター KDC サーバーの設定
重要
KDC システムは専用マシンにしてください。このマシンは非常に安全である必要があります。可能な場合は、このマシン上で KDC 以外のサービスを実行しないでください。
- KDC に必要なパッケージをインストールします。
[root@server ~]# yum install krb5-server krb5-libs krb5-workstation
/etc/krb5.conf
と/var/kerberos/krb5kdc/kdc.conf
の設定ファイルをレルム名とドメインからレルムへのマッピングを反映させるように編集します。例を示します。[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true allow_weak_crypto = true [realms] EXAMPLE.COM = { kdc = kdc.example.com.:88 admin_server = kdc.example.com default_domain = example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM
シンプルなレルムは、EXAMPLE.COM と example.com を適切なドメイン名で置き換え (大文字と小文字を正確な形式になるよう確認してください)、KDC を kerberos.example.com から Kerberos サーバーに変更することで構成できます。慣例では、レルム名はすべて大文字、DNS ホスト名およびドメイン名はすべて小文字になります。これらの設定ファイルの man ページには、ファイル形式に関する詳細が記載されています。kdb5_util
ユーティリティーを使用してデータベースを作成します。[root@server ~]# kdb5_util create -s
create
コマンドは、Kerberos レルム用の鍵を保存するデータベースを作成します。-s
引数は、マスター鍵を保存する stash ファイルを作成します。鍵を読み取る stash ファイルがない場合、Kerberos サーバー (krb5kdc
) は起動時に毎回、ユーザーに対してマスターサーバーのパスワード (これを使って鍵を再生成することが可能) を要求します。/var/kerberos/krb5kdc/kadm5.acl
ファイルを編集します。kadmind
はこのファイルを使って Kerberos データベースへの管理アクセスがあるプリンシパルとそのアクセスレベルを判断します。以下に例を示します。*/admin@EXAMPLE.COM *
ほとんどのユーザーはデータベース内で単一プリンシパル (joe@EXAMPLE.COM のような NULL または空白のインスタンス) により表示されます。この設定では、admin のインスタンスがある 2 番目のプリンシパル (たとえば joe/admin@EXAMPLE.COM) を持つユーザーは、レルムの Kerberos データベースに対して完全な管理制御を行使することができます。kadmind
がサーバー上で開始されると、ユーザーはレルム内のクライアントもしくはサーバー上でkadmin
を実行することでこのサービスにアクセスできます。ただし、データベースの編集が可能なのは (自身のパスワード変更を除く)kadm5.acl
ファイルに名前が記載されているユーザーのみになります。注記
kadmin
ユーティリティーはネットワーク経由でkadmind
サーバーと通信し、Kerberos を使って認証を処理します。このため、ネットワーク経由でサーバーに接続してこの処理を行う前に、最初のプリンシパルが存在している必要があります。最初のプリンシパルは、kadmin.local
コマンドで作成します。このコマンドは、KDC と同じホスト上で使用するように特別に設計されており、認証に Kerberos を使用しません。- KDC ターミナルで
kadmin.local
を使用して最初のプリンシパルを作成します。[root@server ~]# kadmin.local -q "addprinc username/admin"
- 以下のコマンドを使用して Kerberos を起動します。
[root@server ~]# systemctl start krb5kdc.service [root@server ~]# systemctl start kadmin.service
kadmin
内でaddprinc
コマンドを使用してユーザーにプリンシパルを追加します。kadmin
およびkadmin.local
は、KDC のコマンドラインインターフェースになります。このため、addprinc
のようなコマンドの多くは、kadmin
プログラムの起動後に利用可能になります。詳細は、kadmin
の man ページを参照してください。- KDC がチケットを発行していることを確認します。まず、
kinit
を実行してチケットを取得し、認証情報キャッシュファイルに保存します。次にklist
を使ってキャッシュ内の認証情報一覧を表示し、kdestroy
を使ってキャッシュとそこに含まれる認証情報を破棄します。注記
デフォルトでは、kinit
は同一のシステムログインユーザー名 (Kerberos サーバーではなく) を使って認証を試みます。このユーザー名が Kerberos データベース内のプリンシパルに対応しない場合は、kinit
はエラーメッセージを発行します。この場合は、コマンドラインでkinit
の引数として適切なプリンシパルの名前を指定してください。kinit principal
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
を起動します。kadmin.local add_principal
コマンドを使ってマスター KDC の host サービス用の新規エントリーを作成します。[root@slavekdc ~]# 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 サーバーの数にかかわらず、この設定が必要なのは 1 回のみです。
- セカンダリー KDC で root シェルから
kadmin
を起動します。kadmin.local add_principal
コマンドを使ってセカンダリー KDC の host サービス用の新規エントリーを作成します。[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
コマンドを使ってサービス用にランダムの鍵を設定し、その鍵をセカンダリーサーバーのデフォルト 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 上の stash ファイル (通常、
/var/kerberos/krb5kdc/.k5.REALM
) に保存されている場合は、これを安全な方法でセカンダリー KDC にコピーするか、kdb5_util create -s
を実行してセカンダリー KDC 上にダミーデータベースおよび同一の stash ファイルを作成し、同じパスワードを提供します。ダミーデータベースは、データベースが最初に正常に伝達される際に上書きされます。 - セカンダリー KDC のファイアウォールで、マスター KDC がポート 754 上の TCP (krb5_prop) を使用して接続し、
kprop
サービスを開始できるように許可されていることを確認します。 kadmin
サービスが無効になっていることを確認します。- マスター KDC 上のレルムデータベースを、
kprop
コマンドが読み取るデフォルトのデータファイル (/var/kerberos/krb5kdc/slave_datatrans
) にダンプして、手動でのデータベース伝達テストを実行します。[root@masterkdc ~]# kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
kprop
コマンドを使用して、そのコンテンツをセカンダリー KDC に送信します。[root@slavekdc ~]# 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
サービスを設定します。
11.2.3. Kerberos キー配布センター (KDC) プロキシー
デプロイメントによっては、デフォルトの Kerberos ポートではなく HTTPS ポート (TCP を使用した 443) のみがアクセス可能です。クライアントは、プロキシーとして IdM HTTPS サービスを使用して Kerberos 認証情報を取得できます。このリバースプロキシーにより、HTTPS 経由で Kerberos で認証されたサービスにアクセスすることができます。
Kerberos キー配布センタープロキシー (KKDCP) により、IdM にこの機能を提供します。
デプロイメントでの KKDCP の設定
IdM サーバーでは、KKDCP はデフォルトで有効になっています。
IdM クライアントでは、KKDCP を有効化する必要があります。
- 「Kerberos クライアントの設定」の説明にあるように、
/etc/krb5.conf
ファイルを再設定します。 - SSSD サービスを再起動します。
# systemctl restart sssd.service
KKDCP が IdM サーバーで有効化されていることの確認
ipaConfigString=kdcProxyEnabled
の属性と値のペアがディレクトリーに存在する場合に、KKDCP は Apache Web サーバーが起動するたびに自動的に有効化されます。このような場合には、/etc/httpd/conf.d/ipa-kdc-proxy.conf
のシンボリックリンクが作成されます。
KKDCP 機能が有効化されているかどうかを確認するには、このシンボリックリンクが存在するかどうかを確認します。
$ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf lrwxrwxrwx. 1 root root 36 Aug 15 09:37 /etc/httpd/conf.d/ipa-kdc-proxy.conf -> /etc/ipa/kdcproxy/ipa-kdc-proxy.conf
IdM サーバーの KKDCP の無効化
- ディレクトリーから
ipaConfigString=kdcProxyEnabled
属性と値のペアを削除します。# ipa-ldap-updater /usr/share/ipa/kdcproxy-disable.uldif
- IdM サーバーで
httpd
サービスを再起動します。# systemctl restart httpd.service
その他のリソース
- Active Directory レルム向けの KKDCP の設定に関する詳細は、Red Hat ナレッジベースの Configure IPA server as a KDC Proxy for AD Kerberos communication を参照してください。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。