Asa Debug Anyconnect



Cisco ASA で AnyConnect クライアントを使った SSL-VPN の設定をメモしておきます。

構成/環境

See full list on cisco.com. If you want to debug a single L2L VPN connection you can enable the following configuration ASA# debug crypto condition peer 1.1.1.1 This should limit the debugs to only this specific L2L VPN Peer You can confirm the setting with. Apr 09, 2017 Cisco ASA AAA Failure Debug Posted on 2017-04-09 by kludgebomb I recently came across an issue where our team was unable to log into one of our Cisco ASA firewalls running code version 9.2(4)5 to manage the firewall. Aug 25, 2019 This will conclude ASA configuration. Some good debugging commands to troubleshoot posture-related issues on ASA. Debug aaa url-redirect; debug aaa authorization; debug radius dynamic-authorization; debug radius decode; debug radius user show vpn-sessiondb detail anyconnect filter name Now move on to ISE. Microsoft Azure MFA seamlessly integrates with Cisco ASA VPN appliance to provide additional security for the Cisco AnyConnect VPN logins. SAML Components Metadata: It is an XML based document that ensures a secure transaction between an IdP and an SP.

以下の構成で検証しました。

Cisco ASA 以下を使いました。

ハードウェアCisco ASA 5506-X
ソフトウェア9.4(1)

アドレス体系は以下としてあります。

WAN 側192.168.253.0/24
LAN 側192.168.1.0/24
SSL-VPN 接続時に払い出すアドレス192.168.99.1 〜 100/24

inspection の設定

必須ではありませんが、ICMP パケットを inspection 対象としておきます (inspection 対象にしないと戻りパケット用の ACL を明示的に書かなければならない為)。

Cisco Asa Debug Anyconnect Certificate Authentication

NAT の設定

LAN → WAN の通信は送信元アドレスを outside 側インターフェイスで NAT します。

設定のポイント

設定のポイントを幾つか補足します。説明の都合上、若干コンフィグの順序を変えています (設定自体は変えていません)。

SSL-VPN 接続時に払い出すアドレスプール

SSL-VPN 接続時に払い出すアドレスプールを POOL_ANYCONNECT として定義します。また、このアドレス範囲を OBJ_POOL_ANYCONNECT として定義し、(通常の LAN → WAN 通信は NAT させるが)「LAN → SSL-VPN プール」向けの通信は NAT させないようにしています。

SSL-VPN の設定

事前に AnyConnect のイメージを ASA のストレージにコピーしておきます。ここでは outside 側で SSL-VPN (WebVPN) を有効化し、AnyConnect のイメージを指定しています。tunnel-group-listenable に設定すると SSL-VPN 接続時に利用するグループをリスト表示させ、選択出来るようになります。

スプリットトンネルの設定

次はグループポリシーを定義します。SSL-VPN 接続時でも VPN トンネルに流したくないネットワークを ACL で指定し、スプリットトンネルの設定を行っています。

split-tunnel-policy は以下 3 種類の指定が出来ます。

各々、以下の意味を持ちます。

オプションSSL-VPN トンネルに流すトラフィック
excludespecified指定した ACL以外のトラフィック
tunnelall全てのトラフィック
tunnelspecified指定した ACL のトラフィック

ユーザの定義

ここでは二人のユーザを定義しました。

Cisco Asa Debug Anyconnect

ユーザ名パスワード役割
ADMINPASSWORDASA の管理用ユーザ
USERPASSWORDAnyConnect 接続用

USER は属性 (attributes) を service-type remote-access とし、「VPN 用のユーザである」旨を宣言します。

トンネルグループの設定

先程定義した SSL-VPN 接続時に払い出すアドレスプールを指定します。また、group-alias を定義しておくと、AnyConnect クライアントから SSL-VPN 接続を開始する際にリスト表示させるグループ名 (の、別名 = 表示名) を定義することが出来ます。

接続テスト

AnyConnect クライアントから ASA の outside 側アドレス (今回は 192.168.253.100) を指定して接続を開始します。ASA へ公的な証明書をインストールしたり、ASA 自体を自己証明局にすることも出来ます。しかしデフォルトの状態でも ASA は自己証明書を持っており、明示的に証明書を指定しない場合はこの自己証明書が利用されます。今回はこの自己証明書を利用している為、SSL-VPN 接続時に警告が表示されました。Connect Anyway をクリックして続行します。

グループ名 (の、別名 = Alias) はデフォルトで表示されているはずです。後はユーザ名とパスワードを入力し、OK を押して SSL-VPN 接続を確立します。

SSL-VPN が正常に確立していれば PC-A → PC-B で通信出来るようになっているはずです。PC-A から PC-B へ Ping し、疎通出来ていることを確認します。

同セグメント宛の通信を許可する

SSL-VPN 接続が確立した際、デフォルトの状態では「クライアントの同セグメントにはアクセス出来ない」状態になってしまうようです。ですので、例えば「自宅から学校のネットワークに AnyConnect で SSL-VPN した際、自宅の (同セグメントにある) プリンタにアクセス出来ない」といった問題が起きてしまいます。これは AnyConnect クライアントの設定画面にある「Allow local (LAN) access when using VPN (if configured)」をチェックし、SSL-VPN を再接続することで回避出来ます (デフォルトではチェックが入っていない為、同セグメントにアクセス出来なくなっています)。


Asa

証明書について

上述の々になりますが、SSL-VPN 接続時に利用する証明書は以下、いずれを利用することも出来ます。

  1. 外部の CA 局で発行した証明書を利用する
  2. ASA 自身を CA 局 (自己証明局) にして発行した証明書を利用する
  3. ASA がデフォルトで持っている自己証明書を利用する

SSL-VPN 設定の際、明示的にサーバ証明書を指定しなかった場合は「ASA がデフォルトで持っている自己証明書」が使われます (ので、警告は出るものの、SSL-VPN 接続は出来ます)。

クライアントの同セグをスプリットトンネルの ACL に含めるとマズイ??

今回は WAN を 192.168.253.0/24、LAN を 192.168.1.0/24 としています。

ですので、スプリットトンネル用の ACL は以下の通り、LAN のアドレス「192.168.1.0/24」を設定しました。

しかし、仮にこれを以下のように「WAN も含めた 192.168.0.0/16」と書くとどうなるか、実験してみます。

この場合、以下のような結果になります。

フロー結果
PC-A から PC-B への PingOK
PC-A から同セグメントの PC への PingNG

AnyConnect でスプリットトンネルを行うと、SSL-VPN クライアントのルーティングテーブルへ「スプリットトンネルとして定義されている経路」がインストールされるます。しかし、その際に (今回実験したように)「同セグがスプリットトンネルの ACL に含まれている」と同セグ宛の通信が SSL-VPN トンネルに向いてしまい、結果として '同セグへ通信出来ない' という事象になるようです。これを仕様として記載しているドキュメントを見つけたわけでは無いのですが、実際にスプリットトンネル用の ACL を書く際は「集約した際に思いがけず、SSL-VPN クライアント側のネットワークを含めてしまう」ことが無いように気をつけた方が良いのかも知れません… (正しいお作法があれば是非、知りたいです、、、)

トラブルシューティング

設定したのに上手く通信出来ない… 場合は debugshow コマンドでトラブルシューティング出来ます。また、「SSL-VPN 接続自体は確立しているのに、通信が出来ない (パケットがどこかでドロップしている)」場合は packet-tracer で送信元/宛先を指定し、'そのフローがどこでドロップしているのか?' をトラブルシューティング出来ます。以下は packet-tracer のコマンド例です。ICMP のメッセージタイプは適当に指定しています。

Came across this task to set up a posture assessment for workstation domain membership check when connecting with Anyconnect (AC) VPN to Cisco ASA and enforce access based on compliance. ISE was already deployed for simple VPN authentication so, first of all, I had to make a decision on what to use: ASA host scan (requires ASA APEX license) or ISE posture assessment. Great feature comparison here but if it comes down to price then it is about $10 versus $7 per user for ASA vs ISE. And since ISE offers more flexibility it was picked for the final solution.

There are a few Cisco 1, 2 and non Cisco guides there so here I’ll just fill in missing pieces.

  • Get APEX license to support posture for ISE in addition to Base License which you should have already.
  • Upload and enable proper AC package on ASA. The package you need is anyconnect-….webdeploy-k9.pkg. All necessary files will be included in it. At the time of writing, my file version was anyconnectwin-4.6.04056-webdeployk9.pkg. Once file is uploaded use this command to enable it.

webvpn

anyconnect-win-4.6.04056-webdeploy-k9.pkg 1

  • Enable ISE posture module to be installed on the endpoint.

group-policy DfltGrpPolicy attributes

webvpn

anyconnect modules value iseposture

  • Create ACL on ASA to allow DNS requests and traffic to ISE nodes. Redirect all other web traffic for posture to take place.

access-list redirect extended deny udp any any eq domain
access-list redirect extended deny ip any host <ISE IP>
access-list redirect extended permit tcp any any eq www

  • Add dynamic authorization under ISE aaa-server group

aaa-server ISE protocol radius
authorize-only
interim-accounting-update periodic 1
dynamic-authorization

  • Make sure accounting is enabled under default tunnel-group

tunnel-group DefaultWEBVPNGroup general-attributes
authentication-server-group ISE
accounting-server-group ISE

This will conclude ASA configuration.

Cisco Asa Debug Anyconnect Group Policy

Some good debugging commands to troubleshoot posture-related issues on ASA.

  • debug aaa url-redirect
  • debug aaa authorization
  • debug radius dynamic-authorization
  • debug radius decode
  • debug radius user <USERNAME>
  • show vpn-sessiondb detail anyconnect filter name <USERNAME>

Now move on to ISE.

First get you latest posture updates. Administration> System> Settings> Posture> Updates.

Make sure your posture portal is setup with publicly signed certificate otherwise users will get trust errors. With some providers, you can not generate a wildcard certificate so you will have to include all Policy Service Nodes (PSN) FQDN as a separate SAN field in CSR or generate individual certificate per node. When done attach certificate to proper Portal group.

Configure the following elements for Client Provisioning under Work Centers > Posture> Client Provisioning > Resources

  • Posture Agent Profile. Populate Discovery host with PSN FQDNs and Call Home list with PSN FQDNs and IP addresses.
  • Next upload AC package to ISE. This is the anyconnect-…predeploy-k9.zip file that you can find on Cisco AC download page. Select “Agent resources from local disk“. Make sure and give a meaningful name so it will be easier to identify.

AC version on ISE has to match the one on ASA otherwise you will get an error message.

  • Download the latest compliance modules from Cisco for Windows/OSX and Supplicant Provisioning Wizard.
  • Finally, create AnyConnect configuration for use in client provisioning policy.

AC configuration settings are below.

  • Create Client Provisioning Policy under Policy> Client Provisioning

Next, build a Posture Policy. I’m not going to cover different posture checks at this time. Remember on the policy there is an option to put it in audit mode so you can test it out before enforcing.

Since ISE reporting is not the greatest for customization and flexibility I’m using Splunk searches to get quick reports. How to get ISE logs into Splunk I covered in this post.