サービスを提供するすべてのホストには、「キータブ」 (鍵テーブルの短縮名) と呼ばれるローカルファイルが必要です。キータブには、「サービス鍵」と呼ばれる該当するサービスの主体が格納されます。サービス鍵は、KDC に対してサービス自身を認証するときに使用され、Kerberos とそのサービスだけが認識します。たとえば、Kerberos NFS サーバーを使用する場合、このサーバーには nfs サービス主体を含むキータブが必要です。
キータブファイルにサービス鍵を追加するには、kadmin の ktadd コマンドを使用して、ホストのキータブファイルに該当するサービス主体を追加します。サービス主体をキータブファイルに追加するときは、Kerberos データベースにあらかじめ主体を登録し、kadmin が主体の存在を確認できるようにする必要があります。マスター KDC では、キータブファイルのデフォルトの位置は /etc/krb5/kadm5.keytab です。Kerberos サービスを提供するアプリケーションサーバーでは、キータブファイルのデフォルトの位置は /etc/krb5/krb5.keytab です。
キータブはユーザーのパスワードに似ています。ユーザーの場合は、自分のパスワードを保護することが重要ですが、アプリケーションサーバーの場合は、キータブファイルを保護することが重要です。キータブファイルは常時ローカルディスクに格納し、root ユーザー以外は読み取れないようにしてください。また、キータブファイルは、セキュリティ保護されていないネットワークを介して送信しないでください。
root 主体をホストのキータブファイルに追加することがあります。SEAM クライアント上のユーザーが Kerberos NFS ファイルシステムを自動的にマウントして Kerberos 認証を使用する場合は、クライアントの root 主体をクライアントのキータブファイルに追加する必要があります。追加しなかった場合、Kerberos NFS ファイルシステムをマウントするたびに、ユーザーは kinit コマンドをスーパーユーザーとして使用して、クライアントの root 主体の資格を取得する必要があります。これは、オートマウンタを使用している場合でも同様です。詳細は、「NFS ファイルシステムをマウントするように root 認証を設定する」 を参照してください。
マスター KDC を設定するときは、kadmind および changepw 主体を kadm5.keytab ファイルに追加する必要があります。この手順によって、KDC は管理者の Kerberos チケットを復号化して、管理者にデータベースへのアクセス権を与えるかどうかを決定することができます。
キータブファイルを管理するときに、ktutil コマンドも使用できます。ktutil は対話型のコマンドで、Kerberos 管理権限がなくても、ローカルホストのキータブファイルを管理できます。これは、kadmin は Kerberos データベースと対話しますが、ktutil は対話しないためです。つまり、主体をキータブファイルに追加したあとに ktutil を使用すると、キータブファイル内のキー一覧を表示したり、サービスの認証を一時的に無効にしたりできます。
作業 |
説明 |
参照先 |
---|---|---|
サービス主体をキータブファイルに追加する |
kadmin の ktadd コマンドを使用して、サービス主体をキータブファイルに追加する | |
キータブファイルからサービス主体を削除する |
kadmin の ktremove コマンドを使用して、キータブファイルからサービスを削除する | |
キータブファイル内のキー一覧 (主体) を表示する |
ktutil コマンドを使用して、キータブファイル内のキー一覧を表示する | |
ホスト上でのサービスの認証を一時的に無効にする |
この手順を行うと、kadmin 権限がなくても、ホスト上でのサービスの認証を一時的に無効にできる ktutil を使用してサーバーのキータブファイルからサービス主体を削除する前に、元のキータブファイルを一時的な位置にコピーする必要がある。サービスを再度有効にする場合は、元のキータブファイルを適切な場所に戻す必要がある |
主体がすでに Kerberos データベースに登録されていることを確認します。
詳細は、「主体の一覧を表示する方法」 を参照してください。
キータブファイルに主体を追加するホスト上でスーパーユーザーになります。
kadmin コマンドを起動します。
# /usr/sbin/kadmin |
ktadd コマンドを使用して、キータブファイルに主体を追加します。
kadmin: ktadd [-k keytab] [-q] [principal | -glob principal-exp] |
-k keytab |
キータブファイルを指定する。デフォルトでは /etc/krb5/krb5.keytab が使用される |
-q |
冗長な情報を表示しない |
principal |
キータブファイルに追加する主体を指定する。host、root、nfs、および ftp のサービス主体を追加できる |
-glob principal-exp |
主体表現を指定する。主体表現に一致するすべての主体が、キータブファイルに追加される。主体表現の規則は、kadmin の list_principals コマンドと同じである |
kadmin コマンドを終了します。
kadmin: quit |
次の例では、kadmin/admin および kadmin/changepw 主体をマスター KDC のキータブファイルに追加します。この例のキータブファイルは、kdc.conf ファイルで指定されている必要があります。
kdc1 # /usr/sbin/kadmin.local kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/admin kadmin/changepw Entry for principal kadmin/admin@EXAMPLE.COM with kvno 3, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/kadm5.keytab. Entry for principal kadmin/changepw@EXAMPLE.COM with kvno 3, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/kadm5.keytab. kadmin.local: quit |
次の例では、denver の host 主体を denver のキータブファイルに追加し、KDC が denver のネットワークサービスを認証できるようにします。
denver # /usr/sbin/kadmin kadmin: ktadd host/denver@example.com@EXAMPLE.COM kadmin: Entry for principal host/denver@example.com@EXAMPLE.COM with kvno 2, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/krb5.keytab. kadmin: quit |
キータブファイルから削除するサービス主体が登録されているホスト上でスーパーユーザーになります。
kadmin コマンドを起動します。
# /usr/sbin/kadmin |
(省略可能) キータブファイル内の現在の主体 (鍵) の一覧を表示するには、ktutil コマンドを使用します。
詳細は、「キータブファイル内のキー一覧 (主体) を表示する方法」 を参照してください。
ktremove コマンドを使用して、キータブファイルから主体を削除します。
kadmin: ktremove [-k keytab] [-q] principal [kvno | all | old ] |
-k keytab |
キータブファイルを指定する。デフォルトでは、/etc/krb5/krb5.keytab が使用される |
-q |
冗長な情報を表示しない |
principal |
キータブファイルから削除する主体を指定する |
kvno |
指定された主体のうち、鍵のバージョン番号が kvno と一致する主体のすべてのエントリを削除する |
all |
指定された主体のすべてのエントリを削除する |
old |
指定した主体のすべてのエントリを削除する。ただし、鍵のバージョン番号が最上位の主体は削除しない |
kadmin コマンドを終了します。
kadmin: quit |
次の例では、denver の host 主体を 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 |
キータブファイルが存在するホスト上でスーパーユーザーになります。
ほかのユーザーが所有するキータブファイルを作成することもできますが、キータブファイルのデフォルトの位置には root 所有権が必要です。
ktutil コマンドを起動します。
# /usr/bin/ktutil |
read_kt コマンドを使用して、キータブファイルをキー一覧バッファーに読み込みます。
ktutil: read_kt keytab |
list コマンドを使用して、キー一覧バッファーを表示します。
ktutil: list |
現在のキー一覧バッファーが表示されます。
ktutil コマンドを終了します。
ktutil: quit |
次の例では、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 |
ネットワークアプリケーションサーバー上の rlogin や ftp など、サービスの認証メカニズムを一時的に無効にしなければならない場合があります。たとえば、保守作業中は、ユーザーがシステムにログインできないようにする必要があります。ktutil コマンドを使用してサーバーのキータブファイルからサービス主体を削除することにより、サービスの認証を一時的に無効にすることができます。このとき、kadmin 権限は必要ありません。認証を再度有効にするには、保存した元のキータブファイルを元の位置にコピーするだけです。
デフォルトでは、ほとんどのサービスが認証を要求するように設定されています。そのように設定されていないときは、サービスの認証を無効にした場合でもサービスは動作します。
キータブファイルが存在するホスト上でスーパーユーザーになります。
ほかのユーザーが所有するキータブファイルを作成することもできますが、キータブファイルのデフォルトの位置には root 所有権が必要です。
現在のキータブファイルを一時ファイルに保存します。
ktutil コマンドを起動します。
# /usr/bin/ktutil |
read_kt コマンドを使用して、キータブファイルをキー一覧バッファーに読み込みます。
ktutil: read_kt keytab |
list コマンドを使用して、キー一覧バッファーを表示します。
ktutil: list |
現在のキー一覧バッファーが表示されます。無効にするサービスのスロット番号を記録します。
ホストのサービスを一時的に無効にするには、delete_entry コマンドを使用して、キー一覧バッファーから目的のサービス主体を削除します。
ktutil: delete_entry slot-number |
この例では、slot-number に、削除するサービス主体のスロット番号を指定します。スロット番号は、list コマンドで表示できます。
write_kt コマンドを使用して、キー一覧バッファーをキータブファイルに書き込みます。
ktutil: write_kt keytab |
ktutil コマンドを終了します。
ktutil: quit |
サービスを再度有効にする場合は、一時的な (元の) キータブファイルを元の場所にコピーします。
次の例では、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/krb5.keytab ktutil: quit |