Kerberos に関する情報
Kerberos は、マサチューセッツ工科大学(MIT)が開発した秘密キーネットワーク認証プロトコルであり、暗号化と認証にデータ暗号規格(DES)暗号アルゴリズムを使用します。Kerberos は、ネットワーク リソースの要求を認証するために設計されました。Kerberos は他の秘密キー システムと同様に、ユーザーとサービスのセキュアな検証を実行する、信頼できるサード パーティの概念に基づいています。Kerberos プロトコルでは、この信頼できるサード パーティは、キー発行局(KDC)と呼ばれます。
Kerberos の主な用途は、ユーザと、そのユーザが使用するネットワーク サービスの身元が主張どおりであることを検証することです。この検証のために、信頼できる Kerberos サーバがユーザにチケットを発行します。有効期限のあるこれらのチケットは、ユーザの認定証キャッシュに保存されており、標準のユーザ名とパスワードの認証メカニズムの代わりに使用できます。
Kerberos の認定証スキームは、「シングル ログイン」という概念を表しています。この手順では、ユーザを 1 回認証することが必要で、ユーザ クレデンシャルが有効な間は(他のパスワードの暗号化を行わずに)セキュア認証が可能になります。
Cisco IOS XE ソフトウェアは Kerberos 5 をサポートするようになりました。そのため、Kerberos 5 をすでに配置している組織の場合、ルータ上で、他のネットワーク ホスト(UNIX サーバや PC など)ですでに使用している同じ Kerberos 認証データベースを使用できます。
次のネットワーク サービスは、Cisco IOS XE ソフトウェアの Kerberos 認証機能によってサポートされています。
-
Telnet
-
rlogin
-
rsh
-
rcp
Note |
Kerberos クライアント サポートのシスコの実装は、MIT のコードから派生した CyberSafe が開発したコードに基づいています。そのため、シスコの Kerberos 実装は、CyberSafe Challenger 製の市販 Kerberos サーバおよび無料配布されている MIT のサーバ コードとの完全互換性テストに成功しています。 |
一般的な Kerberos 関連の用語と定義を下表に示します。
用語 |
定義 |
---|---|
認証 |
ユーザやサービスが他のサービスに対して自分自身の身元を証明する手順。たとえば、クライアントがルータに対して認証したり、ルータが他のルータに対して認証したりすることができます。 |
許可 |
ネットワークまたはルータでユーザが持っている特権、および実行できるアクションをルータが判断する手段です。 |
クレデンシャル |
認証チケット(チケット認可チケット(TGT)、サービス クレデンシャルなど)を表す総称。Kerberos クレデンシャルで、ユーザまたはサービスの ID を検証します。ネットワーク サービスがチケットを発行した Kerberos サーバを信頼することを決定すると、ユーザとパスワードを再入力する代わりにそのチケットを使用できます。クレデンシャルの有効期限は、8 時間がデフォルトの設定です。 |
インスタンス |
Kerberos プリンシパルの承認レベル ラベル。ほとんどの Kerberos プリンシパルは、user@REALM という形式です(たとえば、smith@EXAMPLE.COM)。Kerberos インスタンスを指定した Kerberos プリンシパルは、user/instance@REALM という形式です(たとえば、smith/admin@EXAMPLE.COM)。Kerberos インスタンスは、認証が成功した場合のユーザーの承認レベルを指定するために使用できます。Kerberos インスタンスの認可マッピングを実装および実施するのは、各ネットワーク サービスのサーバ次第です。Kerberos レルム名は、大文字で指定する必要があります。 |
Kerberos 対応 |
Kerberos 証明書の基盤をサポートするように変更されたアプリケーションおよびサービス。 |
Kerberos レルム |
Kerberos サーバーに登録されたユーザー、ホスト、およびネットワーク サービスで構成されるドメイン。Kerberos サーバーを信頼して、ユーザーまたはネットワーク サービスに対する別のユーザーまたはネットワーク サービスの ID を検証します。Kerberos レルムは、常に大文字にする必要があります。 |
Kerberos サーバ |
ネットワーク ホスト上で稼働しているデーモン。ユーザーおよびネットワーク サービスはそれぞれ Kerberos サーバーに ID を登録します。ネットワーク サービスは Kerberos サーバーにクエリーを送信して、他のネットワーク サービスの認証を得ます。 |
キー発行局(KDC) |
ネットワーク ホストで実行される Kerberos サーバとデータベース プログラム。 |
プリンシパル |
Kerberos ID とも呼ばれ、Kerberos サーバに基づき、ユーザが誰であるか、サービスが何であるかを表します。 |
サービス認定証 |
ネットワーク サービスのクレデンシャル。この認定証は、KDC から発行されるとき、ネットワーク サービスと KDC で共有されるパスワード、およびユーザの TGT で暗号化されます。 |
SRVTAB |
ネットワーク サービスが KDC と共有するパスワード。ネットワーク サービスは、SRVTAB(別名 KEYTAB)を使用することにより、暗号化されたサービス証明書を認証して解読します。 |
チケット認可チケット(TGT) |
キー発行局(KDC)が認証済みユーザに発行する認定証。TGT を受け取ったユーザーは、KDC が示した Kerberos レルム内のネットワーク サービスに対して認証を得ることができます。 |
Kerberos クライアントのサポート操作
ここでは、Kerberos セキュリティ システムが、セキュリティ サーバとして機能する Cisco ルータと連携する方法について説明します。(便宜上または技術的な理由から)Kerberos は多様な方法でカスタマイズできますが、ネットワーク サービスにアクセスを試みるリモート ユーザは、3 レイヤのセキュリティを通過してからネットワーク サービスにアクセスする必要があります。
境界ルータに対する認証
ここでは、リモート ユーザがネットワークにアクセスを試みるときに通過する必要があるセキュリティの第 1 レイヤについて説明します。Kerberos 認証プロセスの第 1 段階は、ユーザが境界ルータに対して自身を認証することです。次のプロセスでは、ユーザが境界ルータに対して認証する方法について説明します。
-
リモート ユーザは、会社サイトのルータに対して PPP 接続を開きます。
-
ルータは、ユーザに対してユーザ名とパスワードの入力を求めます。
-
ルータは、そのユーザに関する KDC の TGT を要求します。
-
KDC は、(他の情報も含まれますが)ユーザの ID を含む暗号化済み TGT をルータに送信します。
-
ルータは、ユーザが入力したパスワードを使用して、TGT の復号化を試行します。復号化に成功すると、リモート ユーザはルータに対して認証されます。
PPP セッションの開始、および境界ルータに対する認証に成功するリモート ユーザは、ファイアウォール内にいますが、ネットワーク サービスにアクセスするには KDC に対して直接認証する必要があります。これは、KDC から発行された TGT はルータに保存され、ユーザが物理的にルータにログインしない限り、追加の認証には役立ちません。
KDC からの TGT の取得
ここでは、境界ルータに対して認証されたリモート ユーザが、KDC に対して自身を認証する方法について説明します。
リモート ユーザが境界ルータに対して認証すると、そのユーザは技術的にはネットワークの一部になります。つまり、ネットワークは、そのリモート ユーザとユーザのマシンまたはネットワークを含むように拡張されます。ただし、リモート ユーザーがネットワーク サービスに対するアクセス権を得るには、KDC から TGT を取得する必要があります。次のプロセスでは、リモート ユーザーが KDC に対して認証する方法について説明します。
-
リモート サイトにあるワークステーションを使用するリモート ユーザーは、KINIT プログラム(Kerberos プロトコルに付属するクライアント ソフトウェアの一部)を起動します。
-
KINIT プログラムは、ユーザの ID を検索し、KDC から TGT を要求します。
-
KDC は TGT を作成します。TGT には、ユーザーの ID、KDC の ID、および TGT の有効期限が含まれます。
-
KDC は、ユーザーのパスワードをキーとして使用して、TGT を暗号化し、その TGT をワークステーションに送信します。
-
KINIT プログラムは暗号化された TGT を受信すると、ユーザーにパスワード(KDC でそのユーザー用に定義されているパスワード)の入力を求めます。
-
ユーザーが入力したパスワードを使用して KINIT プログラムが TGT を復号化できる場合、ユーザーは KDC に対して認証され、KINIT プログラムはユーザーの認定証キャッシュに TGT を保存します。
この時点で、ユーザーは TGT を持っており、KDC と安全に通信できます。 その TGT を使用して、ユーザーは他のネットワーク サービスに対して認証できます。
ネットワーク サービスに対する認証の取得
次のプロセスでは、TGT を持つリモート ユーザーが、特定の Kerberos レルム内でネットワーク サービスに対して認証する方法について説明します。ここでは、ユーザーはリモート ワークステーション(Host A)上にあり、Host B にログインしようとしているとします。
-
Host A 上のユーザーは、Host B に対して Kerberos 化アプリケーション(Telnet など)を開始します。
-
Kerberos 化アプリケーションはサービス認定証要求を構築し、KDC に送信します。サービス認定証要求には、(他の情報も含まれますが)ユーザーの ID と目的のネットワーク サービスの ID が含まれます。TGT は、サービス認定証要求を暗号化するために使用されます。
-
KDC は、Host A 上のユーザーに対して発行された TGT を使用して、サービス認定証要求を復号化しようとします。KDC がパケットを復号化できる場合、要求の発行元が Host A 上の認証済みユーザーであると確認されます。
-
KDC は、サービス認定証要求に含まれるネットワーク サービス ID を記録します。
-
KDC は、Host A 上のユーザーの代理で、適切なネットワーク サービスのサービス認定証を Host B に構築します。サービス認定証には、クライアントの ID および必要なネットワーク サービスの ID が含まれます。
-
次に、KDC はサービス認定証の暗号化を 2 回実行します。まず、認定証に指定されたネットワーク サービスと共有する SRVTAB を使用して認定証を暗号化します。次に、ユーザー(この場合は Host A 上のユーザー)の TGT を使用して結果のパケットを暗号化します。
-
KDC は、2 回暗号化された認定証を Host A に送信します。
-
Host A は、ユーザーの TGT を使用してサービス認定証の復号化を試行します。Host A がサービス認定証を復号化できる場合、その認定証の発行元が KDC であると確認されます。
-
Host A はサービス認定証を目的のネットワーク サービスに送信します。認定証は、まだ KDC とネットワーク サービスに共有されている SRVTAB で暗号化されています。
-
ネットワーク サービスは、SRVTAB を使用してサービス認定証の復号化を試行します。
-
ネットワーク サービスが認定証を復号化できる場合、その認定証の発行元が KDC であると確認されます。ネットワーク サービスは、ユーザーから間接的に送信されたデータでも、KDC から送信された復号化できるデータであれば、常に信頼します。これは、ユーザーがまず KDC で認証されているためです。
この時点で、ユーザーは Host B のネットワーク サービスに認証されます。このプロセスは、ユーザーが Kerberos レルムのネットワーク サービスにアクセスするときは毎回繰り返されます。