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
ファイルを編集します。このファイルは、Kerberos データベースへの管理アクセス権とそのアクセスレベルを決定するために kadmind によって使用されます。以下に例を示します。*/admin@EXAMPLE.COM *
多くのユーザーは、データベース内で単一のプリンシパルで表されます (joe@EXAMPLE.COM などの NULL または空のインスタンス)。この設定では、admin (例: joe/admin@EXAMPLE.COM) のインスタンスを持つ 2 番目のプリンシパルを持つユーザーは、レルムの 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 にコピーします。kdc.conf
- マスター KDC の root シェルから kadmin.local を起動します。
- kadmin.local add_principal コマンドを使用して、マスター KDC の host サービスの新規エントリーを作成します。
[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 を起動します。
- 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 コマンドを使用してサービス用のランダムキーを設定し、ランダムキーをセカンダリー 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 の stash ファイルに保存されている場合(通常は
/var/kerberos/krb5kdc/.k5.REALM
)、利用可能な安全な方法を使用してセカンダリー KDC にコピーするか、kdb5_util create を実行して同じパスワードを指定して、セカンダリー KDC にダミーデータベースと同一の stash ファイルを作成します。ダミーデータベースは、最初に成功したデータベースの伝播によって上書きされます。 - セカンダリー 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 サービスがスクリプトを定期的に実行するように設定します。
11.2.3. Kerberos キー配布センタープロキシー
一部の管理者は、デプロイメントでデフォルトの Kerberos ポートにアクセスできないようにすることを選択する場合があります。ユーザー、ホスト、およびサービスが Kerberos 認証情報を取得できるようにするには、
HTTPS
ポート 443 経由で Kerberos と通信するプロキシーとして HTTPS
サービスを使用できます。
Identity Management (IdM) では、Kerberos Key Distribution Center Proxy (KKDCP) がこの機能を提供します。
KKDCP サーバー
IdM サーバーでは、KKDCP がデフォルトで有効になります。属性と値のペア ipaConfigString=kdcProxyEnabled がディレクトリーに存在する場合、KKDCP は Apache Web サーバーが起動するたびに自動的に有効になります。この状況では、シンボリックリンク
/etc/httpd/conf.d/ipa-kdc-proxy.conf
が作成されます。したがって、シンボリックリンクが存在することを確認することで、IdM サーバーで 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
詳細は、以下のサーバー設定の例を参照してください。
例11.1 KKDCP サーバー I の設定
以下の設定例により、複数の Kerberos サーバーが使用される IdM KKDCP と Active Directory レルム間のトランスポートプロトコルとして TCP を使用できるようになります。
/etc/ipa/kdcproxy/kdcproxy.conf
ファイルで、[global] セクションのuse_dns
パラメーターを false に設定します。[global] use_dns = false
- プロキシー化されたレルム情報を
/etc/ipa/kdcproxy/kdcproxy.conf
ファイルに配置します。プロキシーを使用する [AD.EXAMPLE.COM] レルムの場合は、たとえば次のようにレルム設定パラメーターを一覧表示します。[AD.EXAMPLE.COM] kerberos = kerberos+tcp://1.2.3.4:88 kerberos+tcp://5.6.7.8:88 kpasswd = kpasswd+tcp://1.2.3.4:464 kpasswd+tcp://5.6.7.8:464
重要レルム設定パラメーターは、特定のオプションを複数回指定する可能性がある/etc/krb5.conf および
ではなく、スペースで区切られた複数のサーバーをリストする必要があります。kdc.conf
- IdM サービスを再起動します。
# ipactl restart
例11.2 KKDCP サーバー II の設定
このサーバー設定の例は、DNS サービスレコードに依存して、通信する AD サーバーを見つけます。
/etc/ipa/kdcproxy/kdcproxy.conf
ファイルの [global] セクションで、use_dns
パラメーターを true に設定します。[global] configs = mit use_dns = true
configs
パラメーターを使用すると、他の設定モジュールをロードできます。この場合、設定は MITlibkrb5
ライブラリーから読み込まれます。- オプション: DNS サービスレコードを使用しない場合は、明示的な AD サーバーを
/etc/krb5.conf
ファイルの [realms] セクションに追加します。たとえば、プロキシーを使用するレルムが AD.EXAMPLE.COM の場合は、以下を追加します。[realms] AD.EXAMPLE.COM = { kdc = ad-server.ad.example.com kpasswd_server = ad-server.ad.example.com }
- IdM サービスを再起動します。
# ipactl restart
KKDCP クライアント
クライアントシステムは、KDC プロキシーを
/etc/krb5.conf
ファイルを介してポイントします。この手順に従って、AD サーバーに到達します。
- クライアントで
/etc/krb5.conf
ファイルを開き、AD レルムの名前を [realms] セクションに追加します。[realms] AD.EXAMPLE.COM { kdc = https://ipa-server.example.com/KdcProxy kdc = https://ipa-server2.example.com/KdcProxy kpasswd_server = https://ipa-server.example.com/KdcProxy kpasswd_server = https://ipa-server2.example.com/KdcProxy }
/etc/sssd/sssd.conf
ファイルを開き、krb5_use_kdcinfo = False 行を IdM ドメインセクションに追加します。[domain/example.com] krb5_use_kdcinfo = False
SSSD
サービスを再起動します。# systemctl restart sssd.service
関連情報
- Active Directory レルムの KKDCP の設定に関する詳細は、Red Hat ナレッジベースのConfigure IPA server as a KDC Proxy for AD Kerberos communicationを参照してください。