Sun Enterprise Authentication Mechanism 1.0.1 ガイド

keytab の管理

サービスを提供するすべてのホストは keytab (「key table」の省略) というローカルファイルを持っています。このファイルには、サービス鍵という適切なサービスのプリンシパルが入っています。サービス鍵は、サービスが自分自身を KDC に認証するために使用されます。サービス鍵を知っているのは Kerberos とそのサービスだけです。たとえば、Kerberos 化された NFS サーバーを使用している場合、そのサーバーの keytab には、その nfs サービスプリンシパルが入っている必要があります。

サービス鍵を keytab に追加するには、kadminktadd コマンドを使用して、適切なサービスプリンシパルをホストの 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 チケットの暗号を復号化し、データベースへのアクセスを許可するかどうかを決定できるように、kadmindchangepw のプリンシパルを kadm5.keytab ファイルに追加する必要があります。


keytab を管理するためのもう 1 つのコマンドは ktutil コマンドです。ktutil は、対話的なコマンド行インタフェースユーティリティです。ktutilkadmin のように Kerberos データベースと対話しないため、ktutil を使用すると、Kerberos 管理特権を持っていなくても、ローカルホストの keytab を管理できます。したがって、プリンシパルを keytab に追加した後、ktutil を使用すれば、keytab 内の鍵リストを表示したり、サービスの認証を一時的に無効にしたりできます。

keytab の管理作業マップ

表 5-9 keytab の管理作業マップ

作業 

説明 

参照箇所 

サービスプリンシパルを keytab に追加する

kadminktadd コマンドを使用して、サービスプリンシパルを keytab に追加します。

「サービスプリンシパルを keytab に追加するには」

サービスプリンシパルを keytab から削除する

kadminktremove コマンドを使用して、サービスを keytab から削除します。

「サービスプリンシパルを keytab から削除するには」

keytab 内の鍵リスト (プリンシパル) を表示する

ktutil コマンドを使用して、keytab 内の鍵リストを表示します。

keytab 内の鍵リスト (プリンシパル) を表示するには」

ホスト上のサービスの認証を一時的に無効にする 

この手順は、kadmin 特権を持っていなくても、ホスト上のサービスの認証を一時的に無効にするための簡単な方法です。ktutil を使用してサービスプリンシパルをサーバーの keytab から削除する前に、元の keytab を一時的な場所にコピーします。もう一度サービスを有効にしたい場合は、元の keytab を元の場所にコピーします。

「ホスト上のサービスの認証を一時的に無効にするには」

サービスプリンシパルを keytab に追加するには

  1. プリンシパルがすでに Kerberos データベースに存在していることを確認します。

    詳細は、「プリンシパルのリストを表示するには」を参照してください。

  2. プリンシパルを keytab に追加する必要があるホスト上でスーパーユーザーになります。

  3. kadmin コマンドを起動します。


    # /usr/krb5/sbin/kadmin
    
  4. ktadd コマンドを使用して、プリンシパルを keytab に追加します。


    kadmin: ktadd [-k keytab] [-q] [principal | -glob principal_exp]

    -k keytab

    keytab ファイルを指定する。デフォルトでは、/etc/krb5/krb5.keytab が使用される

    -q

    情報を簡潔に表示する 

    principal

    keytab に追加されるプリンシパル。追加できるサービスプリンシパルは、hostrootnfs、および ftp

    -glob principal_exp

    principal_exp に一致するすべてのプリンシパルを keytab に追加する。principal_exp の規則は、kadminlist_principals コマンドの場合と同じ

  5. kadmin コマンドを終了します。


    kadmin: quit
    

例 - サービスプリンシパルを keytab に追加する

次の例では、kadmin/adminkadmin/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

次の例では、denverhost プリンシパルを denverkeytab ファイルに追加します。これによって、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 から削除するには

  1. サービスプリンシパルを keytab から削除するホスト上でスーパーユーザーになります。

  2. kadmin コマンドを起動します。


    # /usr/krb5/bin/kadmin
    
  3. 省略可能: keytab 内の現在のプリンシパル (鍵) のリストを表示するには、ktutil コマンドを使用します。

    詳細は、keytab 内の鍵リスト (プリンシパル) を表示するには」を参照してください。

  4. 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 を持つプリンシパル以外のプリンシパルのすべてのエントリを削除する 

  5. kadmin コマンドを終了します。


    kadmin: quit
    

例 - サービスプリンシパルを keytab から削除する

次の例では、denverhost プリンシパルを denverkeytab ファイルから削除します。


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 内の鍵リスト (プリンシパル) を表示するには

  1. keytab を持つホスト上でスーパーユーザーになります。


    注 -

    他のユーザーが所有する keytab も作成できますが、keytab のデフォルトの位置には root の所有権が必要です。


  2. ktutil コマンドを起動します。


    # /usr/bin/ktutil
    
  3. read_kt コマンドを使用して、keytab を鍵リストバッファに読み込みます。


    ktutil: read_kt keytab
    
  4. list コマンドを使用して、鍵リストバッファを表示します。


    ktutil: list
    

    現在の鍵リストバッファが表示されます。

  5. ktutil コマンドを終了します。


    ktutil: quit
    

例 - keytab 内の鍵リスト (プリンシパル) を表示する

次の例では、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

ホスト上のサービスの認証を一時的に無効にするには

ネットワークアプリケーションサーバー上のサービス (rloginftp など) の認証機能を一時的に無効にする必要がある場合もあります。たとえば、保守を行なっているときに、そのシステムにユーザーがログインできないようにしたい場合などです。ktutil コマンドを使用して、サービスのプリンシパルをサービスの keytab から削除すれば、kadmin 特権を持っていなくても、ユーザーのログインを防ぐことができます。もう一度認証を有効にするには、保存しておいた元の keytab を元の場所にコピーします。


注 -

ほとんどのサービスではデフォルトで認証が動作する必要があります。そうでない場合、サービスの認証を無効にしても、そのサービスは動作し続けます。


  1. keytab を持つホスト上でスーパーユーザーになります。


    注 -

    他のユーザーが所有する keytab も作成できますが、keytab のデフォルトの位置には root の所有権が必要です。


  2. 現在の keytab を一時ファイルに保存します。

  3. ktutil コマンドを起動します。


    # /usr/krb5/bin/ktutil
    
  4. read_kt コマンドを使用して、keytab を鍵リストバッファに読み込みます。


    ktutil: read_kt keytab
    
  5. list コマンドを使用して、鍵リストバッファを表示します。


    ktutil: list
    

    現在の鍵リストバッファが表示されます。無効にしたいサービスのスロット番号に注意してください。

  6. ホストのサービスを一時的に無効にするには、delete_entry コマンドを使用して、特定のサービスプリンシパルを鍵リストから削除します。


    ktutil: delete_entry slot_number
    

    slot_number

    削除したいサービスプリンシパルのスロット番号。list コマンドで表示される

  7. write_kt コマンドを使用して、鍵リストバッファを keytab に書き出します。


    ktutil: write_kt keytab
    
  8. ktutil コマンドを終了します。


    ktutil: quit
    
  9. もう一度サービスを有効にするには、一時的な (元の) 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