認可属性のポリシー実施の概要
ASA は、ユーザ認可属性(ユーザ権利またはユーザ権限とも呼ばれる)を VPN 接続に適用するためのいくつかの方法をサポートしています。ASA を設定して、次のいずれかの組み合わせからユーザ属性を取得できます。
• ASA のダイナミック アクセス ポリシー(DAP)
• 外部 RADIUS または LDAP 認証および許可サーバ(およびその両方)
• ASA のグループ ポリシー
ASA がすべてのソースから属性を受信すると、その属性が評価され、集約されてユーザ ポリシーに適用されます。属性の間で衝突がある場合、DAP 属性が優先されます。
ASA によって属性が適用される順序は次のとおりです(図 12-1 を参照)。
1. ASA 上の DAP 属性:バージョン 8.0(2) で導入されたこの属性は、他のすべての属性よりも優先されます。DAP 内でブックマークまたは URL リストを設定した場合は、グループ ポリシーで設定されているブックマークや URL リストよりも優先されます。
2. AAA サーバ上のユーザ属性:ユーザ認証や認可が成功すると、サーバからこの属性が返されます。これらの属性を、ASA のローカル AAA データベースの個々のユーザに設定されている属性(ASDM のユーザ アカウント)と混同しないでください。
3. ASA 上で設定されているグループ ポリシー:RADIUS サーバからユーザの RADIUS CLASS 属性 IETF-Class-25(OU= group-policy )の値が返された場合は、ASA はそのユーザを同じ名前のグループ ポリシーに入れて、そのグループ ポリシーの属性のうち、サーバから返されないものを適用します。
LDAP サーバでは、任意の属性名を使用してセッションのグループ ポリシーを設定できます。ASA 上で設定されている LDAP 属性マップによって、LDAP 属性が Cisco 属性 IETF-Radius-Class にマッピングされます。
4. 接続プロファイル(CLI では「トンネル グループ」と呼ばれます)によって割り当てられたグループ ポリシー:接続プロファイルには、接続の事前設定が含まれているほか、認証前にユーザに適用されるデフォルトのグループ ポリシーが含まれています。ASA に接続するすべてのユーザは、最初にこのグループに所属します。このグループでは、DAP、サーバから返されるユーザ属性、またはユーザに割り当てられたグループ ポリシーにはない属性が定義されています。
5. ASA で割り当てられたデフォルトのグループ ポリシー(DfltGrpPolicy):システムのデフォルト属性は、DAP、ユーザ属性、グループ ポリシー、または接続プロファイルで不足している値を提供します。
ASA LDAP コンフィギュレーションの定義
図 12-1 ポリシー実施フロー
認可では、権限または属性を使用するプロセスを参照します。認証または認可サーバとして定義されている LDAP サーバは、権限または属性(設定されている場合)を適用します。
ガイドライン
ASA は、数値の ID ではなく属性名に基づいて LDAP 属性を使用します。RADIUS 属性は、名前ではなく数値 ID によって適用されます。
ASDM バージョン 7.0 の LDAP 属性には、cVPN3000 プレフィックスが含まれています。ASDM バージョン 7.1 以降では、このプレフィックスは削除されています。
LDAP 属性は、RADIUS の章に記載されている RADIUS 属性のサブセットです。
ユーザベースの属性ポリシーの適用
すべての標準 LDAP 属性は、予約済みのベンダー固有属性(VSA)にマッピングできます。また、1 つ以上の LDAP 属性を 1 つ以上の Cisco LDAP 属性にマッピングできます。
次の例では、AD LDAP サーバで設定されたユーザに対し、簡単なバナーを適用するように ASA を設定します。サーバ上で [General] タブの [Office] フィールドを使用してバナー テキストを入力します。このフィールドでは、physicalDeliveryOfficeName という名前の属性を使用します。ASA で、physicalDeliveryOfficeName を Cisco 属性 Banner1 にマッピングする属性マップを作成します。認証の間に、ASA はサーバから physicalDeliveryOfficeName の値を取得し、その値を Cisco 属性 Banner1 にマッピングしてユーザにバナーを表示します。
この例は、IPsec VPN クライアント、AnyConnect SSL VPN クライアント、クライアントレス SSL VPN など、どの接続タイプにも適用されます。この例では、User1 はクライアントレス SSL VPN 接続を使用して接続します。
ユーザの属性を AD または LDAP サーバ上で設定するには、次の手順を実行します。
ステップ 1
ユーザを右クリックします。
[Properties] ダイアログボックスが表示されます(図 12-2 を参照)。
ステップ 2 [General] タブをクリックし、バナー テキストを [Office] フィールドに入力します。このフィールドでは、AD/LDAP 属性 physicalDeliveryOfficeName が使用されます。
図 12-2 LDAP ユーザの設定
ステップ 3 ASA 上で LDAP 属性マップを作成します。
次の例では、Banner というマップを作成し、AD/LDAP 属性 physicalDeliveryOfficeName を Cisco 属性 Banner1 にマッピングします。
hostname(config)# ldap attribute-map Banner
hostname(config-ldap-attribute-map)# map-name physicalDeliveryOfficeName Banner1
ステップ 4 LDAP 属性マップを AAA サーバに関連付けます。
次の例では、AAA サーバ グループ MS_LDAP のホスト 10.1.1.2 の AAA サーバ ホスト コンフィギュレーション モードを開始し、ステップ 3 で作成した属性マップ Banner を関連付けます。
hostname(config)# aaa-server MS_LDAP host 10.1.1.2
hostname(config-aaa-server-host)# ldap-attribute-map Banner
ステップ 5 バナーの適用をテストします。
クライアントレス SSL 接続の例を次に示します。このバナーは、ユーザ認証後に属性マップ経由で適用されたものです(図 12-3 を参照)。
図 12-3 表示されたバナー
特定のグループ ポリシーへの LDAP ユーザの配置
次に示す例では、AD LDAP サーバ上の User1 を ASA 上の特定のグループ ポリシーに対して認証する方法について説明します。サーバで、[Organization] タブの [Department] フィールドを使用して、グループ ポリシーの名前を入力します。次に、属性マップを作成し、Department を Cisco 属性である IETF-Radius-Class にマッピングします。認証の間に、ASA はサーバから Department の値を取得し、その値を IETF-Radius-Class にマッピングして User1 をグループ ポリシーに配置します。
この例は、IPsec VPN クライアント、AnyConnect SSL VPN クライアント、クライアントレス SSL VPN など、どの接続タイプにも適用されます。この例では、User1 はクライアントレス SSL VPN 接続経由で接続します。
AD LDAP サーバ上のユーザの属性を設定するには、次の手順を実行します。
ステップ 1 ユーザを右クリックします。
[Properties] ダイアログボックスが表示されます(図 12-4 を参照)。
ステップ 2 [Organization] タブをクリックして、[Department] フィールドに Group-Policy-1 と入力します。
図 12-4 AD/LDAP の [Department] 属性
ステップ 3 ステップ 1 に示した LDAP コンフィギュレーションの属性マップを定義します。
次の例では、AD 属性 Department を Cisco 属性 IETF-Radius-Class にマッピングする方法について説明します。
hostname(config)# ldap attribute-map group_policy
hostname(config-ldap-attribute-map)# map-name Department IETF-Radius-Class
ステップ 4 LDAP 属性マップを AAA サーバに関連付けます。
次の例では、AAA サーバ グループ MS_LDAP のホスト 10.1.1.2 の AAA サーバ ホスト コンフィギュレーション モードを開始し、ステップ 3 で作成した属性マップ group_policy を関連付けます。
hostname(config)# aaa-server MS_LDAP host 10.1.1.2
hostname(config-aaa-server-host)# ldap-attribute-map group_policy
ステップ 5 ASA で新しい group-policy を追加し、ユーザに割り当てるために必要なポリシー属性を設定します。次の例では、Group-policy-1 を作成します。この名前は、サーバで [Department] フィールドに入力したものです。
hostname(config)# group-policy Group-policy-1 external server-group LDAP_demo
hostname(config-aaa-server-group)#
ステップ 6 このユーザとして VPN 接続を確立し、Group-Policy1 からの属性(およびその他に適用可能な、デフォルトのグループ ポリシーからの属性)がセッションに継承されていることを確認します。
ステップ 7 ASA とサーバの間の通信をモニタするには、特権 EXEC モードで debug ldap 255 コマンドをイネーブルにします。このコマンドからの出力の例を次に示します。これは、主要なメッセージがわかるように編集済みです。
[29] Authentication successful for user1 to 10.1.1.2
[29] Retrieving user attributes from server 10.1.1.2
[29] Retrieved Attributes:
[29] department: value = Group-Policy-1
[29] mapped to IETF-Radius-Class: value = Group-Policy-1
AnyConnect トンネルへのスタティック IP アドレスの割り当て
この例では、AnyConnect クライアント ユーザ Web1 を、特定のスタティック IP アドレスを受信するように設定します。そのアドレスを、AD LDAP サーバで [Dialin] タブの [Assign Static IP Address] フィールドに入力します。このフィールドでは、msRADIUSFramedIPAddress 属性を使用します。この属性を Cisco 属性 IETF-Radius-Framed-IP-Address にマッピングする属性マップを作成します。
認証時に、ASA は msRADIUSFramedIPAddress の値をサーバから取得し、その値を Cisco 属性 IETF-Radius-Framed-IP-Address にマッピングし、スタティック アドレスを User1 に渡します。
次の例が当てはまるのは、フルトンネル クライアント、つまり IPsec クライアントや SSL VPN クライアント(AnyConnect クライアント 2.x および SSL VPN クライアント)などです。
AD/LDAP サーバ上でユーザ属性を設定するには、次の手順を実行します。
ステップ 1
ユーザ名を右クリックします。
[Properties] ダイアログボックスが表示されます(図 12-5 を参照)。
ステップ 2 [Dialin] タブをクリックし、[Assign Static IP Address] チェックボックスをオンにして、IP アドレス 10.1.1.2 を入力します。
図 12-5 スタティック IP アドレスの割り当て
ステップ 3 ステップ 1 に示した LDAP コンフィギュレーションの属性マップを作成します。
次の例では、スタティック アドレス フィールドで使用されている AD 属性 msRADIUSFramedIPAddress を Cisco 属性 IETF-Radius-Framed-IP-Address にマッピングする方法を示します。
hostname(config)# ldap attribute-map static_address
hostname(config-ldap-attribute-map)# map-name msRADIUSFramedIPAddress IETF-Radius-Framed-IP-Address
ステップ 4 LDAP 属性マップを AAA サーバに関連付けます。
次の例では、AAA サーバ グループ MS_LDAP のホスト 10.1.1.2 の AAA サーバ ホスト コンフィギュレーション モードを開始し、ステップ 3 で作成した属性マップ static_address を関連付けます。
hostname(config)# aaa-server MS_LDAP host 10.1.1.2
hostname(config-aaa-server-host)# ldap-attribute-map static_address
ステップ 5 vpn-address-assignment コマンドが AAA を指定するように設定されているかどうかを確認するために、コンフィギュレーションのこの部分を show run all vpn-addr-assign コマンドで表示します。
hostname(config)# show run all vpn-addr-assign
vpn-addr-assign aaa << この部分が設定されていることを確認します >>
ステップ 6 ASA と AnyConnect クライアントとの接続を確立します。次のことを確認します。
• バナーがクライアントレス接続と同じシーケンスで受信されている(図 12-6 を参照)。
• サーバ上で設定されて ASA にマッピングされた IP アドレスをユーザが受信している(図 12-7 を参照)。
図 12-6 AnyConnect セッションのバナーの確認
図 12-7 確立された AnyConnect セッション
ステップ 7 show vpn-sessiondb svc コマンドを使用してセッションの詳細を表示し、割り当てられたアドレスを確認します。
hostname# show vpn-sessiondb svc
Username : web1 Index : 31
Assigned IP : 10.1.1.2 Public IP : 10.86.181.70
Protocol : Clientless SSL-Tunnel DTLS-Tunnel
Encryption : RC4 AES128 Hashing : SHA1
Bytes Tx : 304140 Bytes Rx : 470506
Group Policy : VPN_User_Group Tunnel Group : Group1_TunnelGroup
Login Time : 11:13:05 UTC Tue Aug 28 2007
VLAN Mapping : N/A VLAN : none
ダイヤルインの許可または拒否アクセスの適用
次の例では LDAP 属性マップを作成し、ユーザによって許可されるトンネリング プロトコルを指定します。[Dialin] タブでの許可アクセスと拒否アクセスの設定を、Cisco 属性 Tunneling-Protocol にマッピングします。この属性では、 表 12-1 に示すビットマップ値がサポートされます。
表 12-1 Cisco Tunneling-Protocol 属性のビットマップ値
|
|
1 |
PPTP |
2 |
L2TP |
4 |
IPsec(IKEv1) |
8 |
L2TP/IPsec |
16 |
クライアントレス SSL |
32 |
SSL クライアント:AnyConnect または SSL VPN クライアント |
64 |
IPsec(IKEv2) |
この属性を使用して、プロトコルの [Allow Access](TRUE)または [Deny Access](FALSE)の条件を作成し、ユーザがアクセスを許可される方法を適用します。
この単純化した例では、トンネル プロトコル IPsec/IKEv1(4)をマッピングすることによって、Cisco VPN Client の許可(true)条件を作成できます。また、WebVPN(16)と SVC/AC(32)を値 48(16+32)としてマッピングし、拒否(false)条件を作成します。これで、ユーザは ASA に IPsec を使用して接続できるようになりますが、クライアントレス SSL または AnyConnect クライアントを使用して接続しようとすると拒否されます。
ダイヤルイン許可アクセスまたは拒否アクセスを適用する別の例については、次の URL にあるテクニカル ノート『ASA/PIX: Mapping VPN Clients to VPN Group Policies Through LDAP Configuration Example』を参照してください。
http://www.cisco.com/en/US/products/ps6120/products_configuration_example09186a008089149d.shtml
AD/LDAP サーバ上のユーザに属性を設定するには、次の手順を実行します。
ステップ 1
ユーザを右クリックします。
[Properties] ダイアログボックスが表示されます。
ステップ 2 [Dial-in] タブをクリックしてから、[Allow Access] オプション ボタンをクリックします(図 12-8)。
図 12-8 AD/LDAP User1 - 許可アクセス
(注) [Control access through the Remote Access Policy] オプションを選択した場合は、値はサーバから返されず、適用される権限は ASA の内部グループ ポリシー設定に基づいて決定されます。
ステップ 3 IPsec と AnyConnect の両方の接続を許可するがクライアントレス SSL 接続を拒否する属性マップを作成します。
この例では、初めに tunneling_protocols というマップを作成します。次に、[Allow Access] 設定で使用される AD 属性 msNPAllowDialin を、 map-name コマンドを使用して Cisco 属性 Tunneling-Protocols にマッピングします。次に、マップ値を map-value コマンドで追加します。
hostname(config)# ldap attribute-map tunneling_protocols
hostname(config-ldap-attribute-map)# map-name msNPAllowDialin Tunneling-Protocols
hostname(config-ldap-attribute-map)# map-value msNPAllowDialin FALSE 48
hostname(config-ldap-attribute-map)# map-value msNPAllowDialin TRUE 4
ステップ 4 LDAP 属性マップを AAA サーバに関連付けます。
次の例では、AAA サーバ グループ MS_LDAP のホスト 10.1.1.2 の AAA サーバ ホスト コンフィギュレーション モードを開始し、ステップ 2 で作成した属性マップ tunneling_protocols を関連付けます。
hostname(config)# aaa-server MS_LDAP host 10.1.1.2
hostname(config-aaa-server-host)# ldap-attribute-map tunneling_protocols
ステップ 5 属性マップが設定したとおりに機能することを確認します。
ステップ 6 クライアントレス SSL、AnyConnect クライアント、および IPsec クライアントを使用して接続を試みます。クライアントレス SSL と AnyConnect では接続に失敗し、その原因が認可されていない接続メカニズムにあることを示すメッセージが表示されます。IPsec クライアントの接続は成功します。IPsec は、属性マップに従って許可されるトンネリング プロトコルであるためです(図 12-9 および図 12-10 を参照)。
図 12-9 クライアントレス ユーザへのログイン拒否メッセージ
図 12-10 AnyConnect クライアント ユーザへのログイン拒否メッセージ
ログイン時間と Time-of-Day ルールの適用
次の例では、クライアントレス SSL ユーザ(たとえばビジネス パートナー)にネットワークへのアクセスを許可する時間帯を設定して適用する方法を示します。
AD サーバ上で、[Office] フィールドを使用してパートナーの名前を入力します。このフィールドでは、physicalDeliveryOfficeName 属性が使用されます。次に、ASA で属性マップを作成し、その属性を Cisco 属性 Access-Hours にマッピングします。認証時に、ASA はサーバから physicalDeliveryOfficeName の値を取得して Access-Hours にマッピングします。
AD/LDAP サーバ上でユーザ属性を設定するには、次の手順を実行します。
ステップ 1
ユーザを選択して [Properties]
を右クリックします。
[Properties] ダイアログボックスが表示されます(図 12-11 を参照)。
ステップ 2 [General] タブをクリックします。
図 12-11 Active Directory [Properties] ダイアログボックス
ステップ 3 属性マップを作成します。
次の例では、属性マップ access_hours を作成して AD 属性 physicalDeliveryOfficeName([Office] フィールドで使用)を Cisco 属性 Access-Hours にマッピングする方法を示します。
hostname(config)# ldap attribute-map access_hours
hostname(config-ldap-attribute-map)# map-name physicalDeliveryOfficeName Access-Hours
ステップ 4 LDAP 属性マップを AAA サーバに関連付けます。
次の例では、AAA サーバ グループ MS_LDAP のホスト 10.1.1.2 の AAA サーバ ホスト コンフィギュレーション モードを開始し、ステップ 3 で作成した属性マップ access_hours を関連付けます。
hostname(config)# aaa-server MS_LDAP host 10.1.1.2
hostname(config-aaa-server-host)# ldap-attribute-map access_hours
ステップ 5 各値にサーバで許可された時間範囲を設定します。
次の例では、Partner のアクセス時間が月曜日から金曜日の午前 9 時から午後 5 時に設定されています。
hostname(config)# time-range Partner
hostname(config-time-range)# periodic weekdays 09:00 to 17:00
VPN のための LDAP での許可の設定
VPN アクセスのための LDAP 認証が成功すると、ASA は、LDAP 属性を返す LDAP サーバのクエリーを実行します。通常これらの属性には、VPN セッションに適用される認可データが含まれます。
この許可メカニズムとは別の異なる許可を LDAP ディレクトリ サーバから取得することが必要な場合があります。たとえば、認証に SDI または証明書サーバを使用している場合、認可情報は返されません。この場合、ユーザ認可では、認証の成功後に LDAP ディレクトリのクエリーを実行するため、認証と認可は 2 つのステップで行われます。
LDAP を使用した VPN ユーザ許可を設定するには、次の手順を実行します。
手順の詳細
|
|
|
ステップ 1 |
aaa-server
server_group
protocol {
kerberos |
ldap |
nt |
radius |
sdi |
tacacs+ }
hostname(config)# aaa-server servergroup1 protocol ldap hostname(config-aaa-server-group) |
AAA サーバ グループを作成します。 |
ステップ 2 |
hostname(config)# tunnel-group remotegrp |
「remotegrp」という名前の IPsec リモート アクセス トンネル グループを作成します。 |
ステップ 3 |
tunnel-group
groupname
general-attributes
hostname(config)# tunnel-group remotegrp general-attributes |
サーバ グループとトンネル グループを関連付けます。 |
ステップ 4 |
authorization-server-group
group-tag
hostname(config-general)# authorization-server-group ldap_dir_1
|
以前作成した認証のための AAA サーバ グループに新しいトンネル グループを割り当てます。 |
例
特定の要件で使用できる許可関連のコマンドとオプションは他にもありますが、次の例では、LDAP でのユーザ許可をイネーブルにするコマンドを示します。この例では、remote-1 という名前の IPsec リモート アクセス トンネル グループを作成し、すでに作成してある許可用の ldap_dir_1 AAA サーバ グループにその新しいトンネル グループを割り当てています。
hostname(config)# tunnel-group remote-1 type ipsec-ra
hostname(config)# tunnel-group remote-1 general-attributes
hostname(config-general)# authorization-server-group ldap_dir_1
hostname(config-general)#
この設定が完了したら、次のコマンドを入力して、ディレクトリ パスワード、ディレクトリ検索の開始点、ディレクトリ検索の範囲など、追加の LDAP 許可パラメータを設定できます。
hostname(config)# aaa-server ldap_dir_1 protocol ldap
hostname(config-aaa-server-group)# aaa-server ldap_dir_1 host 10.1.1.4
hostname(config-aaa-server-host)# ldap-login-dn obscurepassword
hostname(config-aaa-server-host)# ldap-base-dn starthere
hostname(config-aaa-server-host)# ldap-scope subtree
hostname(config-aaa-server-host)#