Solaris のシステム管理 (セキュリティサービス)

キータブファイルの管理

サービスを提供するすべてのホストには、「キータブ」 (「鍵テーブル」の短縮名) と呼ばれるローカルファイルが必要です。キータブには、「サービス鍵」と呼ばれる該当するサービスの主体が格納されます。サービス鍵は、KDC に対してサービス自身を認証するときに使用され、Kerberos とそのサービスだけが認識します。たとえば、Kerberos NFS サーバーを使用する場合、このサーバーには nfs サービス主体を含むキータブが必要です。

キータブファイルにサービス鍵を追加するには、kadminktadd コマンドを使用して、適切なサービス主体をホストのキータブファイルに追加します。サービス主体をキータブファイルに追加するときは、Kerberos データベースにあらかじめ主体を登録し、kadmin が主体の存在を検証できるようにする必要があります。マスター KDC では、キータブファイルのデフォルトの位置は /etc/krb5/kadm5.keytab です。Kerberos サービスを提供するアプリケーションサーバーでは、キータブファイルのデフォルトの位置は /etc/krb5/krb5.keytab です。

キータブはユーザーのパスワードに似ています。ユーザーの場合は、自分のパスワードを保護することが重要ですが、アプリケーションサーバーの場合は、キータブファイルを保護することが重要です。キータブファイルは常時ローカルディスクに格納し、root ユーザー以外は読み取れないようにしてください。また、キータブファイルは、セキュリティー保護されていないネットワークを介して送信しないでください。

root 主体をホストのキータブファイルに追加する特別な場合もあります。Kerberos クライアント上のユーザーが root と同等のアクセスを必要とする Kerberos NFS ファイルシステムをマウントするようにするには、クライアントの root 主体をクライアントのキータブファイルに追加する必要があります。追加しなかった場合、root アクセスで Kerberos NFS ファイルシステムをマウントするたびに、ユーザーは kinit コマンドをスーパーユーザーとして使用して、クライアントの root 主体の資格を取得する必要があります。これは、オートマウンタを使用している場合でも同様です。


注 –

マスター KDC を設定するときは、kadmind および changepw 主体を kadm5.keytab ファイルに追加する必要があります。


キータブファイルを管理するときに、ktutil コマンドも使用できます。この対話型のコマンドは、Kerberos 管理権限がなくても、ローカルホストのキータブファイルを管理できます。kadmin は Kerberos データベースと対話しますが、ktutil は対話しないためです。つまり、主体をキータブファイルに追加したあとに ktutil を使用すると、キータブファイル内のキー一覧を表示したり、サービスの認証を一時的に無効にしたりできます。


注 –

kadminktadd コマンドを使用してキータブファイル内の主体を変更すると、新しい鍵が生成され、キータブファイルに追加されます。


キータブファイルの管理 (作業マップ)

作業 

説明 

参照先 

サービス主体をキータブファイルに追加します。 

kadminktadd コマンドを使用して、サービス主体をキータブファイルに追加します。

「Kerberos サービス主体をキータブファイルに追加する方法」

キータブファイルからサービス主体を削除します。 

kadminktremove コマンドを使用して、キータブファイルからサービスを削除します。

「キータブファイルからサービス主体を削除する方法」

キータブファイル内のキー一覧 (主体の一覧) を表示します。 

ktutil コマンドを使用して、キータブファイル内のキー一覧を表示します。

「キータブファイル内のキー一覧 (主体) を表示する方法」

ホスト上でのサービスの認証を一時的に無効にします。 

この手順を行うと、kadmin 権限がなくても、ホスト上でのサービスの認証を一時的に無効にできます。

ktutil を使用してサーバーのキータブファイルからサービス主体を削除する前に、元のキータブファイルを一時的な位置にコピーする必要があります。サービスを再度有効にする場合は、元のキータブファイルを適切な場所に戻す必要があります。

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

ProcedureKerberos サービス主体をキータブファイルに追加する方法

  1. 主体がすでに Kerberos データベースに登録されていることを確認します。

    詳細は、「Kerberos 主体の一覧を表示する方法」を参照してください。

  2. キータブファイルに主体を追加するホスト上でスーパーユーザーになります。

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


    # /usr/sbin/kadmin
    
  4. ktadd コマンドを使用して、キータブファイルに主体を追加します。


    kadmin: ktadd [-e enctype] [-k keytab] [-q] [principal | -glob principal-exp]
    -e enctype

    krb5.conf ファイルに定義された暗号化タイプの一覧を上書きします。

    -k keytab

    キータブファイルを指定します。デフォルトでは、/etc/krb5/krb5.keytab が使用されます。

    -q

    冗長な情報を表示しません。

    principal

    キータブファイルに追加する主体を指定します。追加できるサービス主体は、次のとおりです。 hostrootnfs、および ftp

    -glob principal-exp

    主体表現を指定します。principal-exp に一致するすべての主体が、キータブファイルに追加されます。主体表現の規則は、kadminlist_principals コマンドと同じです。

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


    kadmin: quit
    

例 25–16 サービス主体のキータブファイルへの追加

次の例では、kadmin/kdc1.example.com および changepw/kdc1.example.com 主体をマスター KDC のキータブファイルに追加しています。この例のキータブファイルは、kdc.conf ファイルで指定されている必要があります。


kdc1 # /usr/sbin/kadmin.local
kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc1.example.com changepw/kdc1.example.com
Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type AES-256 CTS mode
          with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
          with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type Triple DES cbc
          mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type ArcFour
          with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type DES cbc mode
          with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal changepw/kdc1.example.com with kvno 3, encryption type AES-256 CTS
          mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal changepw/kdc1.example.com with kvno 3, encryption type AES-128 CTS
          mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal changepw/kdc1.example.com with kvno 3, encryption type Triple DES cbc
          mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal changepw/kdc1.example.com with kvno 3, encryption type ArcFour
          with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal changepw/kdc1.example.com with kvno 3, encryption type DES cbc mode
          with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
kadmin.local: quit

次の例では、denverhost 主体を denver のキータブファイルに追加し、KDC が denver のネットワークサービスを認証できるようにします。


denver # /usr/sbin/kadmin
kadmin: ktadd host/denver.example.com
Entry for principal host/denver.example.com with kvno 3, encryption type AES-256 CTS
          mode with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/denver.example.com with kvno 3, encryption type AES-128 CTS mode
          with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/denver.example.com with kvno 3, encryption type Triple DES cbc mode
          with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/denver.example.com with kvno 3, encryption type ArcFour
          with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/denver.example.com with kvno 3, encryption type DES cbc mode
          with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin: quit

Procedureキータブファイルからサービス主体を削除する方法

  1. キータブファイルから削除するサービス主体が登録されているホスト上でスーパーユーザーになります。

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


    # /usr/sbin/kadmin
    
  3. (省略可能) キータブファイル内の現在の主体 (鍵) の一覧を表示するには、ktutil コマンドを使用します。

    詳細な手順は、「キータブファイル内のキー一覧 (主体) を表示する方法」を参照してください。

  4. ktremove コマンドを使用して、キータブファイルから主体を削除します。


    kadmin: ktremove [-k keytab] [-q] principal [kvno | all | old ]
    -k keytab

    キータブファイルを指定します。デフォルトでは、/etc/krb5/krb5.keytab が使用されます。

    -q

    冗長な情報を表示しません。

    principal

    キータブファイルから削除する主体を指定します。

    kvno

    指定された主体のうち、鍵のバージョン番号が kvno と一致する主体のすべてのエントリを削除します。

    all

    指定された主体のすべてのエントリを削除します。

    old

    指定した主体のすべてのエントリを削除します。ただし、鍵のバージョン番号が最上位の主体は削除しません。

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


    kadmin: quit
    

例 25–17 キータブファイルからのサービス主体の削除

次の例では、denverhost 主体を denver のキータブファイルから削除します。


denver # /usr/sbin/kadmin
kadmin: ktremove host/denver.example.com@EXAMPLE.COM
kadmin: Entry for principal host/denver.example.com@EXAMPLE.COM with kvno 3
  removed from keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin: quit

Procedureキータブファイル内のキー一覧 (主体) を表示する方法

  1. キータブファイルが存在するホスト上でスーパーユーザーになります。


    注 –

    ほかのユーザーが所有するキータブファイルを作成することもできますが、キータブファイルのデフォルトの位置を使用するには root 所有権が必要です。


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


    # /usr/bin/ktutil
    
  3. read_kt コマンドを使用して、キータブファイルをキー一覧バッファーに読み込みます。


    ktutil: read_kt keytab
    
  4. list コマンドを使用して、キー一覧バッファーを表示します。


    ktutil: list
    

    現在のキー一覧バッファーが表示されます。

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


    ktutil: quit
    

例 25–18 キータブファイル内のキー一覧 (主体) の表示

次の例では、denver ホストの /etc/krb5/krb5.keytab ファイル内のキー一覧を表示します。


denver # /usr/bin/ktutil
    ktutil: read_kt /etc/krb5/krb5.keytab
    ktutil: list
slot KVNO Principal
---- ---- ---------------------------------------
   1    5 host/denver@EXAMPLE.COM
    ktutil: quit

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

ネットワークアプリケーションサーバー上の rloginftp など、サービスの認証メカニズムを一時的に無効にしなければならない場合があります。たとえば、保守作業中は、ユーザーがシステムにログインできないようにする必要があります。ktutil コマンドを使用してサーバーのキータブファイルからサービス主体を削除することにより、サービスの認証を一時的に無効にすることができます。このとき、kadmin 権限は必要ありません。認証を再度有効にするには、保存した元のキータブファイルを元の位置にコピーするだけです。


注 –

デフォルトでは、ほとんどのサービスが認証を要求するように設定されています。そのように設定されていないときは、サービスの認証を無効にした場合でもサービスは動作します。


  1. キータブファイルが存在するホスト上でスーパーユーザーになります。


    注 –

    ほかのユーザーが所有するキータブファイルを作成することもできますが、キータブファイルのデフォルトの位置を使用するには root 所有権が必要です。


  2. 現在のキータブファイルを一時ファイルに保存します。

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


    # /usr/bin/ktutil
    
  4. read_kt コマンドを使用して、キータブファイルをキー一覧バッファーに読み込みます。


    ktutil: read_kt keytab
    
  5. list コマンドを使用して、キー一覧バッファーを表示します。


    ktutil: list
    

    現在のキー一覧バッファーが表示されます。無効にするサービスのスロット番号を記録します。

  6. ホストのサービスを一時的に無効にするには、delete_entry コマンドを使用して、キー一覧バッファーから特定のサービス主体を削除します。


    ktutil: delete_entry slot-number
    

    この例では、slot-number に、削除するサービス主体のスロット番号を指定します。スロット番号は、list コマンドで表示できます。

  7. write_kt コマンドを使用して、新しいキー一覧バッファーをキータブファイルに書き込みます。


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


    ktutil: quit
    
  9. 新しいキータブファイルの名前を変更します。


    # mv new-keytab keytab
    
  10. サービスを再度有効にする場合は、一時的な (元の) キータブファイルを元の場所にコピーします。


例 25–19 ホスト上のサービスを一時的に無効にする

次の例では、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@EXAMPLE.COM
   2    5 host/denver@EXAMPLE.COM
    ktutil:delete_entry 2
    ktutil:list
slot KVNO Principal
---- ---- --------------------------------------
   1    8 root/denver@EXAMPLE.COM
    ktutil:write_kt /etc/krb5/new.krb5.keytab
    ktutil: quit
denver # cp /etc/krb5/new.krb5.keytab /etc/krb5/krb5.keytab