サービスを提供するすべてのホストは keytab (「key table」の省略) というローカルファイルを持っています。このファイルには、サービス鍵という適切なサービスのプリンシパルが入っています。サービス鍵は、サービスが自分自身を KDC に認証するために使用されます。サービス鍵を知っているのは Kerberos とそのサービスだけです。たとえば、Kerberos 化された NFS サーバーを使用している場合、そのサーバーの keytab には、その nfs サービスプリンシパルが入っている必要があります。
サービス鍵を keytab に追加するには、kadmin の ktadd コマンドを使用して、適切なサービスプリンシパルをホストの keytab に追加します。サービスプリンシパルを keytab に追加するため、kadmin が存在を確認できるように、プリンシパルはすでに Kerberos データベースに存在している必要があります。マスター KDC 上では、keytab ファイルはデフォルトで /etc/krb5/kadm5.keytab にあります。Kerberos 化されたサービスを提供するアプリケーションサーバー上では、keytab ファイルはデフォルトで /etc/krb5/krb5.keytab にあります。
keytab はユーザーのパスワードに似ています。ユーザーが自分のパスワードを保護することが重要であるのと同様に、アプリケーションサーバーも自分の keytab を保護することが重要です。keytab は常にローカルディスク上に格納し、root だけが読むことができるように設定する必要があります。。さらに、keytab は、セキュリティの保護されないネットワークには送信しないでください。
また、root プリンシパルをホストの keytab に追加する特別な場合もあります。基本的に、SEAM クライアント上のユーザーが自動的に Kerberos 認証を使用して Kerberos 化された NFS ファイルシステムをマウントしたい場合、クライアントの root プリンシパルをクライアントの keytab に追加する必要があります。そうしないと、オートマウンタを使用している場合でも、ユーザーは Kerberos 化された NFS ファイルシステムをマウントするたびに root として kinit コマンドを使用して、クライアントの root プリンシパルの資格を取得しなければなりません。詳細は、「NFS ファイルシステムをマウントするための root 認証の設定」を参照してください。
マスター KDC を設定するとき、KDC が管理者の Kerberos チケットの暗号を復号化し、データベースへのアクセスを許可するかどうかを決定できるように、kadmind と changepw のプリンシパルを kadm5.keytab ファイルに追加する必要があります。
keytab を管理するためのもう 1 つのコマンドは ktutil コマンドです。ktutil は、対話的なコマンド行インタフェースユーティリティです。ktutil は kadmin のように Kerberos データベースと対話しないため、ktutil を使用すると、Kerberos 管理特権を持っていなくても、ローカルホストの keytab を管理できます。したがって、プリンシパルを keytab に追加した後、ktutil を使用すれば、keytab 内の鍵リストを表示したり、サービスの認証を一時的に無効にしたりできます。
作業 |
説明 |
参照箇所 |
---|---|---|
サービスプリンシパルを keytab に追加する |
kadmin の ktadd コマンドを使用して、サービスプリンシパルを keytab に追加します。 | |
サービスプリンシパルを keytab から削除する |
kadmin の ktremove コマンドを使用して、サービスを keytab から削除します。 | |
keytab 内の鍵リスト (プリンシパル) を表示する |
ktutil コマンドを使用して、keytab 内の鍵リストを表示します。 | |
ホスト上のサービスの認証を一時的に無効にする |
この手順は、kadmin 特権を持っていなくても、ホスト上のサービスの認証を一時的に無効にするための簡単な方法です。ktutil を使用してサービスプリンシパルをサーバーの keytab から削除する前に、元の keytab を一時的な場所にコピーします。もう一度サービスを有効にしたい場合は、元の keytab を元の場所にコピーします。 |
プリンシパルがすでに Kerberos データベースに存在していることを確認します。
詳細は、「プリンシパルのリストを表示するには」を参照してください。
プリンシパルを keytab に追加する必要があるホスト上でスーパーユーザーになります。
kadmin コマンドを起動します。
# /usr/krb5/sbin/kadmin |
ktadd コマンドを使用して、プリンシパルを keytab に追加します。
kadmin: ktadd [-k keytab] [-q] [principal | -glob principal_exp] |
-k keytab |
keytab ファイルを指定する。デフォルトでは、/etc/krb5/krb5.keytab が使用される |
-q |
情報を簡潔に表示する |
principal |
keytab に追加されるプリンシパル。追加できるサービスプリンシパルは、host、root、nfs、および ftp |
-glob principal_exp |
principal_exp に一致するすべてのプリンシパルを keytab に追加する。principal_exp の規則は、kadmin の list_principals コマンドの場合と同じ |
kadmin コマンドを終了します。
kadmin: quit |
次の例では、kadmin/admin と kadmin/changepw のプリンシパルをマスター KDC の keytab に追加します。この例では、keytab ファイルは kdc.conf ファイルに指定したファイルです。
kdc1 # /usr/krb5/bin/kadmin.local kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/admin kadmin/changepw Entry for principal kadmin/admin@ACME.COM with kvno 3, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/kadm5.keytab. Entry for principal kadmin/changepw@ACME.COM with kvno 3, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/kadm5.keytab. kadmin.local: quit |
次の例では、denver の host プリンシパルを denver の keytab ファイルに追加します。これによって、denver のネットワークサービスは KDC で認証できます。
denver # /usr/krb5/bin/kadmin kadmin: ktadd host/denver@acme.com@ACME.COM kadmin: Entry for principal host/denver@acme.com@ACME.COM with kvno 2, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/krb5.keytab. kadmin: quit |
サービスプリンシパルを keytab から削除するホスト上でスーパーユーザーになります。
kadmin コマンドを起動します。
# /usr/krb5/bin/kadmin |
省略可能: keytab 内の現在のプリンシパル (鍵) のリストを表示するには、ktutil コマンドを使用します。
詳細は、「keytab 内の鍵リスト (プリンシパル) を表示するには」を参照してください。
ktremove コマンドを使用して、プリンシパルを keytab から削除します。
kadmin: ktremove [-k keytab] [-q] principal [kvno | all | old ] |
-k keytab |
keytab ファイルを指定する。デフォルトでは、/etc/krb5/krb5.keytab が使用される |
-q |
情報を簡潔に表示する |
principal |
keytab から削除されるプリンシパル |
kvno |
指定したプリンシパルの中で、kvno に一致する kvno (鍵バージョン番号) を持つプリンシパルのすべてのエントリを削除する |
all |
指定したプリンシパルのすべてのエントリを削除する |
old |
指定したプリンシパルの中で、最も高い kvno を持つプリンシパル以外のプリンシパルのすべてのエントリを削除する |
kadmin コマンドを終了します。
kadmin: quit |
次の例では、denver の host プリンシパルを denver の keytab ファイルから削除します。
denver # /usr/krb5/bin/kadmin kadmin: ktremove host/denver.acme.com@ACME.COM kadmin: Entry for principal host/denver.acme.com@ACME.COM with kvno 3 removed from keytab WRFILE:/etc/krb5/krb5.keytab. kadmin: quit |
keytab を持つホスト上でスーパーユーザーになります。
他のユーザーが所有する keytab も作成できますが、keytab のデフォルトの位置には root の所有権が必要です。
ktutil コマンドを起動します。
# /usr/bin/ktutil |
read_kt コマンドを使用して、keytab を鍵リストバッファに読み込みます。
ktutil: read_kt keytab |
list コマンドを使用して、鍵リストバッファを表示します。
ktutil: list |
現在の鍵リストバッファが表示されます。
ktutil コマンドを終了します。
ktutil: quit |
次の例では、denver ホスト上にある /etc/krb5/krb5.keytab ファイル内の鍵リストを表示します。
denver # /usr/krb5/bin/ktutil ktutil: read_kt /etc/krb5/krb5.keytab ktutil: list slot KVNO Principal ---- ---- --------------------------------------- 1 5 host/denver@ACME.COM ktutil: quit |
ネットワークアプリケーションサーバー上のサービス (rlogin や ftp など) の認証機能を一時的に無効にする必要がある場合もあります。たとえば、保守を行なっているときに、そのシステムにユーザーがログインできないようにしたい場合などです。ktutil コマンドを使用して、サービスのプリンシパルをサービスの keytab から削除すれば、kadmin 特権を持っていなくても、ユーザーのログインを防ぐことができます。もう一度認証を有効にするには、保存しておいた元の keytab を元の場所にコピーします。
ほとんどのサービスではデフォルトで認証が動作する必要があります。そうでない場合、サービスの認証を無効にしても、そのサービスは動作し続けます。
keytab を持つホスト上でスーパーユーザーになります。
他のユーザーが所有する keytab も作成できますが、keytab のデフォルトの位置には root の所有権が必要です。
現在の keytab を一時ファイルに保存します。
ktutil コマンドを起動します。
# /usr/krb5/bin/ktutil |
read_kt コマンドを使用して、keytab を鍵リストバッファに読み込みます。
ktutil: read_kt keytab |
list コマンドを使用して、鍵リストバッファを表示します。
ktutil: list |
現在の鍵リストバッファが表示されます。無効にしたいサービスのスロット番号に注意してください。
ホストのサービスを一時的に無効にするには、delete_entry コマンドを使用して、特定のサービスプリンシパルを鍵リストから削除します。
ktutil: delete_entry slot_number |
slot_number |
削除したいサービスプリンシパルのスロット番号。list コマンドで表示される |
write_kt コマンドを使用して、鍵リストバッファを keytab に書き出します。
ktutil: write_kt keytab |
ktutil コマンドを終了します。
ktutil: quit |
もう一度サービスを有効にするには、一時的な (元の) keytab を元の場所にコピーします。
次の例では、denver ホスト上の host サービスを一時的に無効にします。もう一度ホストサービスを denver で有効にするには、krb5.keytab.temp ファイルを /etc/krb5/krb5.keytab ファイルにコピーします。
denver # cp /etc/krb5/krb5.keytab /etc/krb5/krb5.keytab.temp denver # /usr/bin/ktutil ktutil:read_kt /etc/krb5/krb5.keytab ktutil:list slot KVNO Principal ---- ---- --------------------------------------- 1 8 root/denver@ACME.COM 2 5 host/denver@ACME.COM ktutil:delete_entry 2 ktutil:list slot KVNO Principal ---- ---- -------------------------------------- 1 8 root/denver@ACME.COM ktutil:write_kt /etc/krb5/krb5.keytab ktutil: quit |