このドキュメントでは、Cisco G2 シリーズ サービス統合型ルータ(ISR)の設定方法について説明します。 ISR の認証プロキシには IP アドミッションと Lightweight Directory Access Protocol(LDAP)の設定だけを使用することもできますが、通常は、Cisco クラウド Web セキュリティ(CWS)のリダイレクト機能と併せて使用します。したがって、このドキュメントは、ISR での CWS リダイレクションの設定およびトラブルシューティングのドキュメントを補足することを目的としています。
このドキュメントで説明している設定を開始する前に、次の推奨要件を満たしていることを確認してください。
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
ネットワークに Cisco Adaptive Security Appliance(ASA)がない状態で Cisco G2 シリーズ ISR をインストールする管理者の多くは、Web フィルタリングに CWS ソリューションを利用するために、ISR CWS(旧称 ScanSafe)リダイレクション機能を使用することを選択します。また、ほとんどの管理者は、CWS ポータルの Web フィルタリング ポリシーにユーザベースまたはグループベースのポリシーを適用する目的でユーザ ID 情報を CWS タワーに送信するために、現在の AD インフラストラクチャをこのソリューションの一部として利用することも選択します。
全体的な概念は、ASA と Context Directory Agent(CDA)の統合と同様ですが、いくつかの違いがあります。最も顕著な違いは、ISR ではユーザと IP をマッピングするパッシブ データベースを実際に保守するわけではないという点です。したがって、ISR 経由でユーザまたはグループ情報を CWS ポータルに送信するためには、ユーザが何らかのタイプの認証に合格する必要があります。
このドキュメントで説明する設定の CWS リダイレクションの部分は比較的単純なものですが、管理者によっては認証の部分を設定する際に問題に突き当たることも考えられます。認証の部分で処理する ip admission コマンドは LDAP サーバおよび認証、許可、およびアカウンティング(AAA )認証ステートメントを参照しますが、このステートメントも設定する必要があります。このドキュメントの目的は、ネットワーク オペレータが Cisco G2 シリーズ ISR でこの設定の IP アドミッションおよび LDAP の部分を設定したり、トラブルシューティングしたりできるよう、包括的な参照情報を提供することにあります。
このセクションで説明する情報を使用して、Cisco ISR を設定します。
AAA サーバの LDAP プロパティを設定するには、次の手順を実行します。
C-881(config)#ldap attribute-map ldap-username-map map type sAMAccountName
username
C-881(config-attr-map)#map type sAMAccountName username
C-881(config)#aaa group server ldap LDAP_GROUP
C-881(config-ldap-sg)#server DC01
C-881(config)#ldap server DC01
C-881(config-ldap-server)# ipv4 10.10.10.150
C-881(config-ldap-server)#attribute map ldap-username-map
C-881(config-ldap-server)# bind authenticate root-dn CN=Csco_Service,CN=Users,
DC=lab,DC=cisco,DC=com password Cisco12345!
C-881(config-ldap-server)#base-dn DC=lab,DC=cisco,DC=com
C-881(config-ldap-server)#search-filter user-object-type top
C-881(config-ldap-server)#authentication bind-first
カスタム検索フィルタを実装する必要がない限り、通常はこの設定を変更する必要はありません。カスタム検索フィルタは、LDAP およびこの情報を適切に入力する方法に精通している管理者だけが利用できます。使用すべき検索フィルタがわからない場合は、ここに記載されているフィルタをそのまま使用してください。このフィルタは、通常の AD 環境でユーザを検索します。
bind-authenticate-root-dn および base-dn コマンドに必要な識別名(DN)も、LDAP 設定で細心の注意が必要な部分です。LDAP サーバで表示されるとおりに DN を入力しなければ、LDAP クエリは失敗します。さらに、base-dn コマンドは、認証対象の全ユーザが所属する LDAP ツリーの最下位の部分とならなければなりません。
上記の設定に含まれる base-dn コマンドを以下のように変更したとします。
base-dn OU=TestCompany,DC=lab,DC=cisco,DC=com
この場合、CN=Users,DC=lab,DC=cisco,DC=com に含まれるユーザに対するクエリは、結果を一切返しません。LDAP サーバは、TestCompany 組織単位(OU)とそこに含まれる子オブジェクトだけを検索するためです。したがって、ユーザの認証を成功させるには、これらのユーザを TestCompany OU またはそのサブツリーに移動するか、あるいは該当する検索場所がクエリに含まれるように base-dn コマンドを変更しなければなりません。
LDAP サーバを設定したら、IP アドミッション プロセスで使用される、対応する AAA ステートメントでこれらのサーバを参照する必要があります。
C-881(config)#aaa authentication login SCANSAFE_AUTH group LDAP_GROUP
C-881(config)#aaa authorization network SCANSAFE_AUTH group LDAP_GROUP
IP アドミッションの部分は、ユーザに認証を求めるプロンプトを出し(またはトランスペアレント認証を実行)、次にユーザ クレデンシャルと設定に定義されている AAA サーバに基づく LDAP クエリを実行するプロセスをトリガーします。ユーザが正常に認証されると、コンテンツ スキャン プロセスによってユーザ ID 情報がプルされて、リダイレクトされたフローと併せて CWS タワーに送信されます。IP アドミッション プロセスは、ルータの入力インターフェイスで ip admission name コマンドが入力されるまではアクティブになりません。したがって、設定のこの部分は、トラフィックに影響を与えることなく実装できます。
C-881(config)#ip admission virtual-ip 1.1.1.1 virtual-host ISR_PROXY
C-881(config)#ip admission name SCANSAFE_ADMISSION ntlm
C-881(config)#ip admission name SCANSAFE_ADMISSION method-list authentication
SCANSAFE_AUTH authorization SCANSAFE_AUTH
以下に、IP アドミッションを有効にするために使用する設定を示します。
C-881(config)#int vlan301 (internal LAN-facing interface)
C-881(config-if)#ip admission SCANSAFE_ADMISSION
管理者によっては、さまざまな理由から、一部の内部ホストを認証プロセスから免除したいと考える場合があります。たとえば、NTLM や基本認証に対応できない内部サーバまたはデバイスに IP アドミッション プロセスが適用されるのは望ましくない場合があります。このような場合には、特定のホスト IP またはサブネットで IP アドミッションがトリガーされないように、アクセス コントロール リスト(ACL)を IP アドミッション設定に適用することができます。
以下の例では、内部ホスト 10.10.10.150 が認証を免除されますが、その他すべてのホストには引き続き認証が必要です。
C-881(config)#ip access-list extended NO_ADMISSION
C-881(config-ext-nacl)#deny ip host 10.10.10.150 any
C-881(config-ext-nacl)#permit ip any any
C-881(config)#ip admission name SCANSAFE_ADMISSION ntlm list NO_ADMISSION
HTTP セッションを代行受信して認証プロセスを開始するには、以下のコマンドを使用して HTTP サーバを有効にする必要があります。
Ip http server
Ip http secure-server
以下に、CWS リダイレクションの基本的なサマリ設定を示します。
parameter-map type content-scan global
server scansafe primary name proxy139.scansafe.net port http 8080 https 8080
server scansafe secondary name proxy187.scansafe.net port http 8080 https 8080
license 0 DE749585HASDH83HGA94EA8C369
source interface Vlan302
user-group DEFAULT_GROUP username DEFAULT_USER
server scansafe on-failure allow-all
interface Vlan302 (egress interface towards Internet)
content-scan out
以下に、これまでのセクションで行った完全な設定例を記載します。
aaa group server ldap LDAP_GROUP
server DC01
ldap attribute-map ldap-username-map
map type sAMAccountName username
ldap server DC01
ipv4 10.10.10.150
attribute map ldap-username-map
bind authenticate root-dn CN=Csco_Service,CN=Users,DC=lab,DC=cisco,DC=com
password Cisco12345!
base-dn dc=lab,dc=cisco,dc=com
search-filter user-object-type top
authentication bind-first
aaa new-model
aaa authentication login SCANSAFE_AUTH group LDAP_GROUP
aaa authorization network SCANSAFE_AUTH group LDAP_GROUP
ip admission virtual-ip 1.1.1.1 virtual-host ISR_PROXY
ip admission name SCANSAFE_ADMISSION ntlm
ip admission name SCANSAFE_ADMISSION method-list authentication
SCANSAFE_AUTH authorization SCANSAFE_AUTH
interface Vlan301
ip admission SCANSAFE_ADMISSION
ip http server
parameter-map type content-scan global
server scansafe primary name proxy139.scansafe.net port http 8080 https 8080
server scansafe secondary name proxy187.scansafe.net port http 8080 https 8080
license 0 DE13621993BD87B306B5A5607EA8C369
source interface Vlan302
user-group DEFAULT_GROUP username DEFAULT_USER
server scansafe on-failure allow-all
interface Vlan302
content-scan out
必要に応じて、AD構造を参照して、ユーザーまたはグループ検索ベースで使用するDNを検索できます。管理者は、ADドメインコントローラーに組み込まれたADSI Editというツールを使用できます。ADSI Edit を開くには、AD ドメイン コントローラで [Start] > [Run] を選択し、adsiedit.msc と入力します。
ADSI Edit が開いたら、オブジェクト(OU、グループ、ユーザなど)を右クリックし、[Properties] を選択してそのオブジェクトの DN を表示します。DN 文字列は簡単にコピーしてルータ設定に貼り付けることができるので、入力ミスを回避できます。以下のイメージに、このプロセスを示します。
IP アドミッションを使用する、選択可能な認証方式のタイプは 4 つあります。これらの認証方式は、特にトランスペアレント NTML とパッシブ NTLM との違いをはじめ、誤解されがちです。以降のセクションで、認証方式のタイプによる違いについて説明します。
アクティブ NTLM 認証方式は、トランスペアレント NTLM 認証が失敗した場合に、ユーザに認証を求めるプロンプトを出します。一般に、認証失敗の原因となることは、クライアント ブラウザが統合 Microsoft Windows 認証をサポートしていないこと、あるいはユーザがローカル(非ドメイン)クレデンシャルを使用してワークステーションにログインしたことです。アクティブ NTLM 認証では、提供されたクレデンシャルが正しいことを確認するために、ドメイン コントローラに対して LDAP クエリを行います。
トランスペアレント NTLM 認証は、ユーザがドメイン クレデンシャルでワークステーションにログインすると行われます。これらのクレデンシャルは、ブラウザによってトランスペアレントに IOS ルータに渡されます。すると、IOS ルータはユーザ クレデンシャルを検証するために LDAP クエリを実行します。通常、この機能にはトランスペアレント NTLM が最も望ましい形の認証です。
この形の認証は一般に、NTLM 認証が失敗した場合、またはクライアント(Macintosh、Linux ベースのデバイス、またはモバイル デバイスなど)で NTLM 認証を行えない場合のフォールバック メカニズムとして使用されます。この認証方式では、HTTP セキュア サーバが有効にされてない場合、HTTP でクリア テキストのクレデンシャルが渡されます(かなり危険です)。
パッシブ NTLM 認証では、ユーザにクレデンシャルを要求しますが、ドメイン コントローラに対して実際にユーザを認証するわけではありません。これにより、クエリがドメインコントローラに対して失敗するLDAP関連の問題を回避できますが、環境内のユーザーにセキュリティ上のリスクが生じます。透過的な認証が失敗したり実行できない場合は、資格情報の入力を求められます。ただし、ユーザは任意のクレデンシャルを入力することができ、そのクレデンシャルが CWS タワーに渡されます。そのため、ポリシーが適切に適用されない可能性があります。
たとえば、Firefox(追加の設定を行わない限り、デフォルトではトランスペアレント NTLM を許可しません)を使用しているユーザ A がユーザ B のユーザ名と任意のパスワードを入力すると、ユーザ B に対するポリシーがユーザ A に適用されます。このリスクを軽減するには、すべてのユーザにトランスペアレント NTLM 認証をサポートするブラウザを使用させるという方法がありますが、ほとんどの場合、パッシブ認証の使用は推奨されません。
アクティブ NTLM 認証方式の完全なメッセージ シーケンスは、以下のとおりです。
Browser --> ISR : GET / google.com
Browser <-- ISR : 302 Page moved http://1.1.1.1/login.html
Browser --> ISR : GET /login.html 1.1.1.1
Browser <-- ISR : 401 Unauthorized..Authenticate using NTLM
Browser --> ISR : GET /login.html + NTLM Type-1 msg
ISR --> AD : LDAP Bind Request + NTLM Type-1 msg
ISR が HTTP からの Type-1 メッセージを、データを変更することなくバイトごとに LDAP にコピーします。
ISR <-- AD : LDAP Bind Response + NTLM Type-2 msg
Browser <-- ISR : 401 Unauthorized + NTLM Type-2 msg
Type-2 メッセージもバイトごとに LDAP から HTTP にコピーされます。したがって、PCAP では 1.1.1.1 から発信されたように見えますが、実際のコンテンツは AD からのものです。
Browser --> ISR : GET /login.html + NTLM Type-3 msg
ISR --> AD : LDAP Bind Request + NTLM Type-3 msg
ISR <-- AD : LDAP Bind response - Success
Browser <-- ISR : 200OK + redirect to google.com
アクティブ NTLM が設定されている場合、NTML 交換中に ISR が干渉することはありません。ただし、パッシブ NTLM が設定されていると、ISR は独自の Type-2 メッセージを生成します。
現在、この設定に使用できる確認手順はありません。
ここでは、設定のトラブルシューティングに使用できる情報を示します。
次の show コマンドを使用して、設定のトラブルシューティングを行うことができます。
設定をトラブルシュートする際には、以下の debug コマンドを使用すると役立ちます。
ここでは、このドキュメントで説明している設定で発生することがある、一般的な問題について説明します。
この問題は、show ip admission statistics コマンドの出力を調べると明らかになります。出力には、HTTP の代行受信が示されないためです。
C-881#show ip admission statistics
Webauth HTTPd statistics:
HTTPd process 1
Intercepted HTTP requests: 0
この問題に対しては、2 つの解決策が考えられます。解決策の 1 つとしては、ip http server が有効にされていることを確認します。
ISR の HTTP サーバが有効にされていなければ、IP アドミッションはトリガーされても、実際に HTTP セッションを代行受信することはありません。したがって、認証を求めるプロンプトが出されます。この場合、show ip admission cache コマンドに対する出力はありませんが、debug ip admission detail コマンドの出力に以下の行が何度も繰り返し出現することになります。
*Jan 30 20:49:35.726: ip_admission_det:proceed with process path authentication
*Jan 30 20:49:35.726: AUTH-PROXY auth_proxy_find_conn_info :
find srcaddr - 10.10.10.152, dstaddr - 192.168.1.1
ip-srcaddr 10.20.10.1
pak-srcaddr 10.10.10.152
この問題に対するもう 1 つの解決策としては、IP アドミッション設定の ACL でこのユーザ IP アドレスが免除対象になっていないことを確認します。
これは、ユーザが認証のためにリダイレクトされる際に見られる問題で、ブラウザに 404 Not Found エラーが表示されます。
ip admission virtual-ip 1.1.1.1 virtual-host ISR_PROXY の名前が、ドメイン ネーム システム(DNS)サーバで正常に解決されることを確認します。この場合、クライアントは ISR_PROXY.lab.cisco.com に対して DNS クエリを実行します。これは、lab.cisco.com はワークステーションが参加しているドメインの完全修飾ドメイン名(FQDN)であるためです。DNS クエリが失敗すると、クライアントは Link-Local Multicast Name Resolution(LLMNR)クエリを送信し、続いて NETBIOS クエリがローカル サブネットにブロードキャストされます。
以上の解決策のすべてを試しても名前が解決されない場合は、「404 Not Found」または「Internet Explorer Cannot Display the webpage」エラーがブラウザに表示されます。
この問題にはさまざまな原因がありますが、通常は、ISR 上の LDAP 設定、あるいは ISR と LDAP サーバ間の通信に関連しています。ISR でこの症状が観測されるのは、一般に IP アドミッションがトリガーされた後に INIT状態のままになった場合です。
C-881(config)#do show ip admi cac
Authentication Proxy Cache
Client Name N/A, Client IP 10.10.10.152, Port 56674, timeout 60,
Time Remaining 2, state INIT
この問題の一般的な原因は以下のとおりです。
認証が失敗した理由を判断する最良の方法は、ISR で LDAP デバッグ コマンドを使用することです。過剰な出力が生成されるなら、ISR でデバッグを実行するのはコストが高く危険なことになり、ルータが停止してハードウェアの電源再投入が必要になる可能性があることに注意してください。これは特に、よりローエンドのプラットフォームに当てはまります。
トラブルシューティングの際は、ACL を IP アドミッション ルールに適用し、ネットワークで認証を行う単一のワークステーションだけを対象とすることを推奨します。このようにすると、ルータがトラフィックを渡す機能への悪影響を最小限に抑えてデバッグを有効にすることができます。
LDAP 関連の問題をトラブルシューティングする場合、LDAP が ISR からの要求を処理する手順を理解しておくと役立ちます。
LDAP 認証の基本手順は以下のとおりです。
上記のプロセスは、debug ldap コマンドの出力で確認できます。ここでは、無効な base-dn が原因で失敗した認証に対する LDAP デバッグのサンプル出力を記載します。 デバッグ出力および関連するコマンドを検討し、出力で、上述の手順で問題が発生した部分を調べます。
*Jan 30 20:51:50.818: LDAP: LDAP: Queuing AAA request 23 for processing
*Jan 30 20:51:50.818: LDAP: Received queue event, new AAA request
*Jan 30 20:51:50.818: LDAP: LDAP authentication request
*Jan 30 20:51:50.818: LDAP: Username sanity check failed
*Jan 30 20:51:50.818: LDAP: Invalid hash index 512, nothing to remove
*Jan 30 20:51:50.818: LDAP: New LDAP request
*Jan 30 20:51:50.818: LDAP: Attempting first next available LDAP server
*Jan 30 20:51:50.818: LDAP: Got next LDAP server :DC01
*Jan 30 20:51:50.818: LDAP: Free connection not available. Open a new one.
*Jan 30 20:51:50.818: LDAP: Opening ldap connection
( 10.10.10.150, 389 )ldap_open
上記の出力で太字で示されている部分から、接続は正常に開いたことがわかるので、これはネットワーク層の問題ではありません。
*Jan 30 20:51:50.822: LDAP: Root Bind on CN=Csco_Service,CN=Users,DC=lab,
DC=cisco,DC=com initiated.
*Jan 30 20:51:51.330: LDAP: Ldap Result Msg: SUCCESS, Result code =0
*Jan 30 20:51:51.330: LDAP: Root DN bind Successful on :CN=Csco_Service,
CN=Users,DC=lab,DC=cisco,DC=com
上記では、authenticate-dn のバインドは正常に行われています。バインドの設定が誤っているとしたら、バインドの失敗が示されるはずです。
*Jan 30 20:51:51.846: LDAP: Received Bind Responseldap_parse_sasl_bind_result
*Jan 30 20:51:51.846: LDAP: Ldap SASL Result Msg: SUCCESS, Result code =14
sasLres_code =14
*Jan 30 20:51:51.846: LDAP: SASL NTLM authentication do not require
further tasks
*Jan 30 20:51:51.846: LDAP: Next Task: All authentication task completed
*Jan 30 20:51:51.846: LDAP: Transaction context removed from list
[ldap reqid=14]
*Jan 30 20:51:51.846: LDAP: * * AUTHENTICATION COMPLETED SUCCESSFULLY * *
*Jan 30 20:51:51.846: LDAP: Notifying AAA: REQUEST CHALLENGED
太字で示されている部分に、バンド操作のすべてが成功し、操作が実際のユーザの検索に移ったことが示されています。
*Jan 30 20:51:51.854: LDAP: SASL NTLM authentication done..Execute search
*Jan 30 20:51:51.854: LDAP: Next Task: Send search req
*Jan 30 20:51:51.854: LDAP: Transaction context removed from list[ldap reqid=15]
*Jan 30 20:51:51.854: LDAP: Dynamic map configured
*Jan 30 20:51:51.854: LDAP: Dynamic map found for aaa type=username
*Jan 30 20:51:51.854: LDAP: Ldap Search Req sent
ld 2293572544
base dn dc=lab1,dc=cisco,dc=comscope 2
filter (&(objectclass=top)(sAMAccountName=testuser5))
ldap_req_encode
put_filter "(&(objectclass=top)(sAMAccountName=testuser5))"
put_filter: AND
put_filter_list "(objectclass=top)(sAMAccountName=testuser5)"
put_filter "(objectclass=top)"
put_filter: simple
put_filter "(sAMAccountName=testuser5)"
put_filter: simple
Doing socket write
*Jan 30 20:51:51.854: LDAP: lctx conn index = 2
最初の行(太字で表示)が、LDAP 検索のデバッグ出力が開始したことを示しています。また、base-dn ドメイン コントローラは lab1 ではなく lab に設定しなければなりません。
*Jan 30 20:51:52.374: LDAP: LDAP Messages to be processed: 1
*Jan 30 20:51:52.374: LDAP: LDAP Message type: 101
*Jan 30 20:51:52.374: LDAP: Got ldap transaction context from reqid
16ldap_parse_result
*Jan 30 20:51:52.374: LDAP: resultCode: 10 (Referral)
*Jan 30 20:51:52.374: LDAP: Received Search Response resultldap_parse_result
ldap_err2string
*Jan 30 20:51:52.374: LDAP: Ldap Result Msg: FAILED:Referral, Result code =10
*Jan 30 20:51:52.374: LDAP: LDAP Search operation result : failedldap_msgfree
*Jan 30 20:51:52.374: LDAP: Closing transaction and reporting error to AAA
*Jan 30 20:51:52.374: LDAP: Transaction context removed from list
[ldap reqid=16]
*Jan 30 20:51:52.374: LDAP: Notifying AAA: REQUEST FAILED
以下の出力で、太字で示されている部分から、検索が結果を返さなかったことがわかります。その原因は、base-dn が無効であるためです。
RFC 4511(Lightweight Directory Access Protocol(LDAP)):このプロトコルは、LDAP の結果コード メッセージに関する情報や、その他の LDAP プロトコル関連の情報を提供します。LDAP については、IETF Web サイトを参照してくだ さい。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
18-Jul-2014 |
初版 |