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 |
Kerberos AAA サーバーグループを作成し、AAA サーバーグループ コンフィギュレーション モードを開始します。 aaa-server server_group_name protocol kerberos 例:
|
ステップ 2 |
(オプション)次のサーバーを試す前にグループ内の AAA サーバーでの AAA トランザクションの失敗の最大数を指定します。 max-failed-attempts number 例:
number 引数の範囲は 1 ~ 5 です。デフォルトは 3 です。 |
ステップ 3 |
(任意)グループ内で障害の発生したサーバーを再度アクティブ化する方法(再アクティブ化ポリシー)を指定します。 reactivation-mode {depletion [deadtime minutes] | timed} 例:
depletion キーワードを指定すると、グループ内のすべてのサーバーが非アクティブになって初めて、障害の発生したサーバーが再度アクティブ化されます。これは、デフォルトのモードです。 deadtime minutes キーワードのペアは、グループ内の最後のサーバーをディセーブルにしてからすべてのサーバーを再度イネーブルにするまでの時間を、0 ~ 1440 分の範囲で指定します。デフォルトは 10 分です。 timed キーワードを指定すると、30 秒のダウン時間の後、障害が発生したサーバーが再度アクティブ化されます。 |
ステップ 4 |
Kerberos サーバーを Kerberos サーバーグループに追加します。 aaa-server server_group [(interface_name)] host server_ip 例:
インターフェイスを指定しない場合、ASA ではデフォルトで内部インターフェイスが使用されます。 IPv4 または IPv6 アドレスを使用できます。 |
ステップ 5 |
サーバーへの接続試行のタイムアウト値を指定します。 timeout seconds 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 interval defined on the retry-interval command)until the timeout is reached. 連続して失敗したトランザクションの数が AAA サーバー グループ内の max-failed-attempts コマンドで指定された制限に達すると、AAA サーバーは非アクティブ化され、ASA は(設定されている場合は)別の AAA サーバーへの要求の送信を開始します。 例:
|
ステップ 6 |
再試行間隔を指定します。システムはこの時間待機してから接続要求を再試行します。 retry-interval seconds 1 〜 10 秒を指定できます。デフォルトは 10 です。 例:
|
ステップ 7 |
デフォルトの Kerberos ポート(TCP/88)以外を使用する場合、サーバーポートを指定します。ASA は、このポートで Kerberos サーバーに接続します。 server-port port_number 例:
|
ステップ 8 |
Kerberos レルムを設定します。 kerberos-realm name Kerberos レルム名では数字と大文字だけを使用し、64 文字以内にする必要があります。Microsoft Windows の set USERDNSDOMAIN コマンドを Kerberos レルムの Active Directory サーバー上で実行する場合は、name の値をこのコマンドの出力と一致させる必要があります。次の例では、EXAMPLE.COM が Kerberos レルム名です。
ASA では、name に小文字のアルファベットを使用できますが、小文字は大文字に変換されません。大文字だけを使用してください。 例:
|
例
次に、MSKCD という名前の Kerberos サーバーグループを作成し、サーバーを追加して、レルムを EXAMPLE.COM に設定する例を示します。
hostname(config)# aaa-server MSKCD protocol kerberos
hostname(config-aaa-server-group)# aaa-server MSKCD (inside) host 10.1.1.10
hostname(config-aaa-server-host)# kerberos-realm EXAMPLE.COM
Kerberos Constrained Delegation(KCD)の設定
次の手順では、Kerberos Constrained Delegation(KCD)を実装する方法について説明します。
始める前に
-
ドメインコントローラへのアクセス時に経由するインターフェイスで DNS ルックアップをイネーブルにします。認証委任方式として KCD を使用する場合は、ASA、ドメインコントローラ(DC)、委任しているサービスの間でホスト名解決と通信をイネーブルにするために、DNS が必要です。クライアントレス VPN の配置には、社内ネットワーク(通常は内部インターフェイス)を介した DNS ルックアップが必要です。
たとえば、内部インターフェイスで DNS ルックアップをイネーブルにするには、次のコマンドを実行します。
hostname(config)# dns domain-lookup inside
-
ドメインレルムを DNS ドメインとして使用して、Active Directory(AD)ドメインコントローラを DNS サーバーとして使用するように DNS を設定します。
たとえば、レルム EXAMPLE.COM を使用して、内部インターフェイスから 10.1.1.10 のドメインコントローラを使用するように DefaultDNS グループを設定するには、次のコマンドを実行します。
hostname(config)# dns server-group DefaultDNS hostname(config-dns-server-group)# name-server 10.1.1.10 inside hostname(config-dns-server-group)# domain-name EXAMPLE.COM
手順
ステップ 1 |
クライアントレス SSL VPN コンフィギュレーション モードに切り替えます。 webvpn |
ステップ 2 |
KCD をイネーブルにします。 kcd-server kerberos_server_group username user_id password password [ validate-server-certificate] ここで、
例:
|
Kerberos Constrained Delegation の監視
KCD を監視するには、次のコマンドを使用します。
-
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 チケットをクリアします。すべてのチケットをクリアすることも、特定のユーザーのチケットだけをクリアすることもできます。