Microsoft Kerberos Constrained Delegation ソリューション
Microsoft の Kerberos Constrained Delegation(KCD)は、 プライベートネットワーク内の Kerberos で保護された Web アプリケーションへのアクセスを提供します。
Kerberos Constrained Delegation を機能させるために、ASA はソースドメイン(ASA が常駐するドメイン)とターゲットまたはリソースドメイン(Web サービスが常駐するドメイン)間の信頼関係を確立する必要があります。ASA は、サービスにアクセスするリモートアクセスユーザの代わりに、ソースから宛先ドメインへの認証パスを横断し、必要なチケットを取得します。
このように認証パスを越えることは、クロスレルム認証と呼ばれます。クロスレルム認証の各フェーズにおいて、ASA は特定のドメインのクレデンシャルおよび後続ドメインとの信頼関係に依存しています。
KCD の機能
Kerberos は、ネットワーク内のエンティティのデジタル識別情報を検証するために、信頼できる第三者に依存しています。これらのエンティティ(ユーザ、ホスト マシン、ホスト上で実行されるサービスなど)は、プリンシパルと呼ばれ、同じドメイン内に存在している必要があります。秘密キーの代わりに、Kerberos では、サーバに対するクライアントの認証にチケットが使用されます。チケットは秘密キーから導出され、クライアントのアイデンティティ、暗号化されたセッション キー、およびフラグで構成されます。各チケットはキー発行局によって発行され、ライフタイムが設定されます。
Kerberos セキュリティ システムは、エンティティ(ユーザ、コンピュータ、またはアプリケーション)を認証するために使用されるネットワーク認証プロトコルであり、情報の受け手として意図されたデバイスのみが復号化できるようにデータを暗号化することによって、ネットワーク伝送を保護します。クライアントレス SSL VPN ユーザに Kerberos で保護された Web サービスへの SSO アクセスを提供するように KCD を設定できます。このような Web サービスやアプリケーションの例として、Outlook Web Access(OWA)、SharePoint、および Internet Information Server(IIS)があります。
Kerberos プロトコルに対する 2 つの拡張機能として、プロトコル移行および制約付き委任が実装されました。これらの拡張機能によって、クライアントレス SSL VPN リモート アクセス ユーザは、プライベート ネットワーク内の Kerberos で認証されるアプリケーションにアクセスできます。
プロトコル移行機能は、ユーザ認証レベルでさまざまな認証メカニズムをサポートし、後続のアプリケーション レイヤでセキュリティ機能(相互認証や制約付き委任など)用に Kerberos プロトコルに切り替えることによって、柔軟性とセキュリティを向上させます。制約付き委任では、ドメイン管理者は、アプリケーションがユーザの代わりを務めることができる範囲を制限することによって、アプリケーション信頼境界を指定して強制適用できます。この柔軟性は、信頼できないサービスによる危険の可能性を減らすことで、アプリケーションのセキュリティ設計を向上させます。
制約付き委任の詳細については、IETF の Web サイト(http://www.ietf.org)にアクセスして、RFC 1510 を参照してください。
KCD の認証フロー
次の図に、委任に対して信頼されたリソースにユーザがクライアントレス ポータルによってアクセスするときに、直接的および間接的に体験するパケットおよびプロセス フローを示します。このプロセスは、次のタスクが完了していることを前提としています。
-
ASA 上に設定された KCD
-
Windows Active Directory への参加、およびサービスが委任に対して信頼されたことの確認
-
Windows Active Directory ドメインのメンバーとして委任された ASA
(注) |
クライアントレス ユーザ セッションは、ユーザに設定されている認証メカニズムを使用して ASA により認証されます(スマートカード クレデンシャルの場合、ASA はデジタル証明書の userPrincipalName を使用して、Windows Active Directory に対して LDAP 許可を実行します)。 |
-
認証が成功すると、ユーザは ASA クライアントレス ポータル ページにログインします。ユーザは、URL をポータル ページに入力するか、ブックマークをクリックして、Web サービスにアクセスします。この Web サービスで認証が必要な場合、サーバは ASA クレデンシャルの認証確認を行い、サーバがサポートしている認証方式のリストを送信します。
(注)
クライアントレス SSL VPN の KCD は、すべての認証方式(RADIUS、RSA/SDI、LDAP、デジタル証明書など)に対してサポートされています。次の AAA のサポートに関する表を参照してください。http://www.cisco.com/en/US/docs/security/asa/asa84/configuration/guide/access_aaa.html#wp1069492
-
認証確認時の HTTP ヘッダーに基づいて、ASA はサーバで Kerberos 認証が必要かどうかを判断します(これは SPNEGO メカニズムの一部です)。バックエンド サーバとの接続で Kerberos 認証が必要な場合、ASA は、ユーザに代わって、自身のサービス チケットをキー発行局に要求します。
-
キー発行局は、要求されたチケットを ASA に返します。これらのチケットは ASA に渡されますが、ユーザの許可データが含まれています。ASA は、ユーザがアクセスする特定のサービス用の KCD からのサービスチケットを要求します。
(注)
ステップ 1 ~ 3 では、プロトコル移行が行われます。これらのステップの後、Kerberos 以外の認証プロトコルを使用して ASA に対して認証を行うユーザは、透過的に、Kerberos を使用してキー発行局に対して認証されます。
-
ASA は、ユーザがアクセスする特定のサービスのサービスチケットをキー発行局に要求します。
-
キー発行局は、特定のサービスのサービス チケットを ASA に返します。
-
ASA は、サービスチケットを使用して、Web サービスへのアクセスを要求します。
-
Web サーバは、Kerberos サービス チケットを認証して、サービスへのアクセスを付与します。認証が失敗した場合は、適切なエラー メッセージが表示され、確認を求められます。Kerberos 認証が失敗した場合、予期された動作は基本認証にフォールバックします。
制約付き委任用の Kerberos サーバグループの作成
Kerberos Constrained Delegation を使用するには、まず、Kerberos AAA サーバグループを設定する必要があります。サーバグループには、Active Directory(AD)ドメインコントローラが含まれている必要があります。
手順
ステップ 1 |
の順に選択します。 |
ステップ 2 |
[Constrained Delegation] ドロップダウンリストの [Kerberos Server Group] の横にある [New] をクリックします。 必要な Kerberos AAA サーバグループが設定済みの場合は、サーバグループを選択するだけで、この手順をスキップできます。 |
ステップ 3 |
[Server Group Name] フィールドにグループの名前を入力するか、デフォルトの名前のままにします。 |
ステップ 4 |
[Reactivation Mode] フィールドで、[Depletion] または [Timed] をクリックします。 [Depletion] モードの場合、障害が発生したサーバは、グループ内のサーバがすべて非アクティブになったときに限り、再アクティブ化されます。depletion モードでは、あるサーバが非アクティブになった場合、そのサーバは、グループの他のすべてのサーバが非アクティブになるまで非アクティブのままとなります。すべてのサーバが非アクティブになると、グループ内のすべてのサーバが再アクティブ化されます。このアプローチでは、障害が発生したサーバに起因する接続遅延の発生を最小限に抑えられます。 Timed モードでは、障害が発生したサーバは 30 秒の停止時間の後で再アクティブ化されます。 |
ステップ 5 |
[Depletion] 再アクティブ化モードを選択した場合は、[Dead Time] フィールドに時間間隔を入力します。 デッド時間には、グループ内の最後のサーバがディセーブルになってから、すべてのサーバが再びイネーブルになるまでの時間間隔を分単位で指定します。 |
ステップ 6 |
次のサーバを試す前にグループ内の AAA サーバでの AAA トランザクションの失敗の最大数を指定します。 このオプションで設定するのは、応答のないサーバを非アクティブと宣言する前の AAA トランザクションの失敗回数です。 |
ステップ 7 |
[Interface Name] で、AD ドメインコントローラへのアクセスに使用できるインターフェイスの名前を選択します。 |
ステップ 8 |
グループに追加するドメインコントローラの名前または IP アドレスを入力します。 |
ステップ 9 |
サーバへの接続試行のタイムアウト値を指定します。 Specify the timeout interval(1-300 seconds)for the server; the default is 10 seconds. For each AAA transaction the ASA retries connection attempts(based on the retry interval)until the timeout is reached. 連続して失敗したトランザクションの数が AAA サーバグループ内の指定された maximum-failed-attempts 制限に達すると、AAA サーバは非アクティブ化され、ASA は別の AAA サーバ(設定されている場合)への要求の送信を開始します。 |
ステップ 10 |
サーバ ポートを指定します。サーバポートは、ポート番号 88、または ASA によって Kerberos サーバとの通信に使用される TCP ポートの番号です。 |
ステップ 11 |
再試行間隔を選択します。システムはこの時間待機してから接続要求を再試行します。1 〜 10 秒の範囲で選択できます。デフォルトは 10 秒です。 |
ステップ 12 |
Kerberos レルムを設定します。 Kerberos レルム名では数字と大文字だけを使用し、64 文字以内にする必要があります。Microsoft Windows の set USERDNSDOMAIN コマンドを Kerberos レルムの Active Directory サーバ上で実行する場合は、name の値をこのコマンドの出力と一致させる必要があります。次の例では、EXAMPLE.COM が Kerberos レルム名です。
ASA では、name に小文字のアルファベットを使用できますが、小文字は大文字に変換されません。大文字だけを使用してください。 |
ステップ 13 |
[OK] をクリックします。 |
Kerberos Constrained Delegation(KCD)の設定
次の手順では、Kerberos Constrained Delegation(KCD)を実装する方法について説明します。
始める前に
-
ドメインコントローラへのアクセス時に経由するインターフェイスで DNS ルックアップをイネーブルにします。認証委任方式として KCD を使用する場合は、ASA、ドメインコントローラ(DC)、委任しているサービスの間でホスト名解決と通信をイネーブルにするために、DNS が必要です。クライアントレス VPN の配置には、社内ネットワーク(通常は内部インターフェイス)を介した DNS ルックアップが必要です。
たとえば、 テーブルで内部インターフェイス行の [DNS Enabled] セルをクリックして、[True] を選択します。
に移動し、[DNS Lookup] -
ドメインレルムを DNS ドメインとして使用して、Active Directory(AD)ドメインコントローラを DNS サーバとして使用するように DNS を設定します。
たとえば、 として追加し、EXAMPLE.COM をドメイン名として追加します(サーバグループが複数ある場合は、DefaultDNS サーバグループを選択し、ドメインコントローラを追加します)。
に移動し、内部インターフェイスから 10.1.1.10 を [Primary DNS Server]
手順
ステップ 1 |
の順に選択します。 |
ステップ 2 |
既存の Kerberos AAA サーバグループを選択するか、[New] をクリックして新しいグループを作成します。 新しいグループを作成する場合は、制約付き委任用の Kerberos サーバグループの作成を参照してください。 |
ステップ 3 |
[Server Access Credentials] で、AD ドメインに参加するために必要なオプションを設定します。 KCD 用に設定されている場合、ASA は Kerberos キーを取得するために、設定されたサーバとの AD ドメイン参加を開始します。これらのキーは、ASA がクライアントレス SSL VPN ユーザに代わってサービスチケットを要求するために必要です。
|
ステップ 4 |
(オプション)必要に応じて、サーバグループ構成の設定を調整します。オプションの説明については、制約付き委任用の Kerberos サーバグループの作成を参照してください。 |
ステップ 5 |
(オプション)Kerberos サーバグループテーブルでサーバを追加、編集、削除、またはテストします。Kerberos サーバのパラメータについては、制約付き委任用の Kerberos サーバグループの作成を参照してください。 |
Kerberos Constrained Delegation の監視
KCD を監視するには、次のコマンドを使用します。コマンドを入力するには、 または SSH セッションを使用します。
-
show webvpn kcd
KCD の構成および参加ステータスを表示します。
ciscoasa# show webvpn kcd KCD state: Domain Join Complete Kerberos Realm: EXAMPLE.COM ADI version: 6.8.0_1252 Machine name: ciscoasa ADI instance: root 1181 1178 0 15:35 ? 00:00:01 /asa/bin/start-adi Keytab file: -rw------- 1 root root 79 Jun 16 16:06 /etc/krb5.keytab
-
show aaa kerberos [ username user_id]
システム上のキャッシュされた Kerberos チケットを表示します。すべてのチケットを表示することも、特定のユーザのチケットだけを表示することもできます。
ASA# show aaa kerberos Default Principal Valid Starting Expires Service Principal asa@example.COM 06/29/10 18:33:00 06/30/10 18:33:00 krbtgt/example.COM@example.COM kcduser@example.COM 06/29/10 17:33:00 06/30/10 17:33:00 asa$/example.COM@example.COM kcduser@example.COM 06/29/10 17:33:00 06/30/10 17:33:00 http/owa.example.com@example.COM
-
clear aaa kerberos tickets [ username user_id]
システム上のキャッシュされた Kerberos チケットをクリアします。すべてのチケットをクリアすることも、特定のユーザのチケットだけをクリアすることもできます。