Kerberosで使用される用語の定義について説明したので、以下ではKerberos認証システムの機能を簡単に説明します。
非Kerberoseネットワークでは、認証を要するネットワークサービスをユーザーが要求すると、ユーザーはパスワードを入力するように指示されます。ユーザーのパスワードはクリアテキストまたは暗号ハッシュとしてネットワーク経由で送信され、ネットワークサービスに対するアクセスが許可されます。不幸にも、これはネットワーク上のパケットを採取するだれでも、ユーザ名とパスワードが分かる可能性があるということになります。
Kerberosでは、シンメトリック暗号や信用できるサードパーティ—Key Distribution CenterあるいはKDCとして知られるした—を用いて、ネットワーク上のサービスに対してネットワーク上のユーザを認証する事で、この脅威に対抗します。ひとたび認証されると、Kerberosはその通信固有のチケットをユーザのマシンに保存し、パスワードを使う認証をユーザに問い合わせるかわりに全てのKerberos化されたサービスはこのチケットを探します。
kerberos化されたネットワーク上で、ユーザーが自分のワークステーションにログインすると、ユーザーのプリンシパルがKey Distribution Centerに送信され、Ticket Granting Ticket(TGT)を要求します。この要求は、ログインプログラムによって送信するので、ユーザーには透過的です。またログインした後でユーザーがkinitプログラムを使って送信したりすることができます。
KDCは、データベース内にプリンシパルが存在するかどうかをチェックします。プリンシパルが見つかった場合、KDCはTGTを作成し、ユーザーの鍵を使用してそのTGTを暗号化してからユーザーへと返信します。
ログインプログラムかkinitのどちらかが、ユーザーの鍵(ユーザーのパスワードから計算されます)を使用してTGTを復号化します。TGTは一定の時間が経過すると有効期限が切れるように設定されていますが、証明書キャッシュの中に保存されます。有効期間が設定されているため、TGTが盗まれたとしても、使用できるのは一定の時間内(通常は8時間)に限られます。これは、従来のパスワードモデルより安全です。というのは、盗まれたパスワードは、それが変更するまでの間だけ使う事ができるためです。一度TGTが発行されると、TGTの有効期限が切れるか、ログアウトして再度ログインする場合を除くと、ユーザーがパスワードを再入力する必要は生じません。
ユーザーが認証を必要とするネットワークサービスにアクセスする必要が生じた場合、クライアントがTGTを使って、KDC上で動作するTGS(Ticket Granting Service)に対してそのサービス用のチケットを要求します。TGSは目的のサービス用のチケットを発行し、そのチケットがユーザーを認証するために使用されます。
![]() | 警告 |
|---|---|
Kerberosシステムではいつでもネットワーク上のどのユーザにも非Kerberosサービスに対して、クリアテキストでパスワード認証を送る事により盗まれます。したがって、非Kerberosバージョンのサービスは使われるべきではありません。このようなサービスの例として、telnetやftpがあります。他のセキュアなプロトコル、OpenSSHやSSLでセキュア化されたサービスを使う事をお勧めします。 |
もちろんこれは、どのようにKerberos認証がネットワーク上で典型的に動作するかを概観したに過ぎません。Kerberos認証の詳しい説明は、参考情報項を参照してください。
![]() | 注意 |
|---|---|
Kerberosは、正しく動作するために特定のネットワークサービスに依存しています。まず、Kerberosはネットワーク上のマシン群の間で、ほぼ正確に時計の同期が取られていることを必要とします。ネットワークに対し、時計の同期化プログラムをセットアップする必要があります。また、Kerberosのある種の側面がDNS(Domain Name Service)に依存しているので、ネットワーク上のDNSエントリとホストがすべて正しく設定されていることを確認してください。これらの問題の詳細情報については、PostScript形式とHTML形式で提供されているKerberos V5 System Administrator's Guideが/usr/share/doc/krb5-server-バージョン番号(バージョン番号はシステムにインストールされているバージョン)にありますので参照してください。 |