Cisco AnyConnectクライアントの認証にAzureADユーザ情報と条件付きアクセスを利用する

Cisco AnyConnectクライアントの認証にAzureADユーザ情報と条件付きアクセスを利用する

Cisco AnyConnectクライアントの認証にAzureADユーザ情報と条件付きアクセスを利用する

できたてほやほや(笑)
苦しみながらようやくできたので、共有&備忘録として残します。
そしてアドベントカレンダーの日付が空いていたので急いで記事を仕上げました!

前提

  • Cisco ASA側でAnyConnectを利用したSSL-VPN環境設定が完了している
  • AzureAD P1以上を持っている
  • Intuneにデバイスが登録されている(要はEMSを(ry
  • SSL-VPNプロファイル名は「SSL-VPN」という名前をつけている(環境にあわせて読み替えてください)
  • Cisco ASA outside側インターフェイスには信頼されるSSL証明書が設定されている

AzureADにアプリケーションを登録する

何度も記事中に書いているのでお馴染みだとは思いますが、まずはSAML連携用アプリケーションを登録します

  1. AzureAD管理画面を開きます
  2. 「エンタープライズアプリケーション」→【新しいアプリケーション】をクリックします
  3. 【ギャラリー以外のアプリケーション】をクリックします
  4. 名前欄に名前を入力(ここでは「AnyConnect」としています)し、【追加】をクリックします
  5. 「シングルサインオン」→【SAML】をクリックします
    (画像使いまわしなのでタイトルがkintone(笑))
  6. セクション3にある、BASE64証明書をダウンロードします
  7. セクション4にあるURLを確認します
  8. AnyConnectを利用できるユーザーまたはグループを割り当てます
  9. 「ユーザーとグループ」→【ユーザーの追加】をクリックします
  10. 接続を許可するユーザーまたはグループを割り当てます
  11. 【割り当て】をクリックします

Cisco ASA側の設定

  1. Cisco ASAへssh等でログインします
  2. 下記コマンドを実行していきます
    config t
    
    crypto ca trustpoint AzureAD-AC-SAML
      revocation-check none
      no id-usage
      enrollment terminal
      no ca-check
    crypto ca authenticate AzureAD-AC-SAML
    -----BEGIN CERTIFICATE-----
    …
    セクション3からダウンロードしたBASE64証明書データ
    …
    -----END CERTIFICATE-----
    quit

    crypto ca authenticate AzureAD-AC-SAMLコマンドの後にはダウンロードしたBASE64証明書をテキストエディタ等で開き中身をコピーし貼り付けます
    貼り付け終わったらquitと入力します

  3. 続けて下記コマンドを実行していきます
    webvpn
      saml idp https://sts.windows.net/xxxxxxxxx/ (←セクション4で確認した、AzureAD識別子のURLを入力)
      url sign-in https://login.microsoftonline.com/xxxxxxx/saml2 (←セクション4で確認したログインURLを入力)
      url sign-out https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0 (←セクション4で確認したログアウトURLを入力)
      trustpoint idp AzureAD-AC-SAML
      no force re-authentication
      no signature
      base-url https://my.example.com

    base-urlには、外部からASAにアクセスするためのURLを記入します

  4. 続けて下記コマンドを実行していきます
    tunnel-group SSL-VPN webvpn-attributes
      saml identity-provider https://sts.windows.net/xxxxxxxxxxxxx/ (←セクション4で確認した、AzureAD識別子のURLを入力)
      authentication saml
    end
    
    write mem

metadataを確認し、AzureADアプリケーションに設定する

  1. 下記URLにアクセスします
    https://<<Cisco ASA outsideへ接続可能なURL>>/saml/sp/metadata/SSL-VPN
  2. XMLが表示されるので、「entityID」の後のURLとAssertionConsumerService 「Location」後のURLをコピーします
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://<<ASA URL>>/saml/sp/metadata/SSL-VPN">
    <SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <KeyDescriptor use="signing">
    <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:X509Data>
    <ds:X509Certificate/>
    </ds:X509Data>
    </ds:KeyInfo>
    </KeyDescriptor>
    <AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://<<ASA URL>>/+CSCOE+/saml/sp/acs?tgname=SSL-VPN"/>
    <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://<<ASA URL>>/+CSCOE+/saml/sp/logout"/>
    <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://<<ASA URL>>/+CSCOE+/saml/sp/logout"/>
    </SPSSODescriptor>
    </EntityDescriptor>
  3. AzureADアプリケーション側のセクション1の鉛筆マークをクリックします
  4. 識別子(エンティティID)欄に、コピーしたentityID後にあるURLを貼り付けます
  5. 応答URL欄に、コピーしたAssertionConsumerService Location後にあるURLを貼り付けます
  6. 【保存】をクリックします

 

AnyConnectを利用してSAML認証ログイン確認をする

  1. AnyConnectクライアントを利用して、SSLVPNの接続先へ接続します
  2. AnyConnectの組み込みブラウザ起動し、AzureADログイン画面が表示されます
    (WindowsでAzureAD Joinをしている場合自動的にサインインプロセスが実行され接続されます)
  3. 接続が完了したら社内ネットワークへの疎通ができることを確認します

条件付きアクセスを組み合わせてみよう

今回は下記2点の条件を満たさないとAnyConnectでの接続ができないようにしていきます

  • 多要素認証必須
  • デバイスコンプライアンスに準拠したデバイス
  1. 「エンタープライズアプリケーション」→「AnyConnect」→「条件付きアクセス」→【新しいポリシー】をクリックします
  2. ユーザーとグループからすべてのユーザーを選択します。(ポリシーにあわせ設定してください)
  3. 【完了】をクリックします
  4. 「アクセス制御」下の「許可」項目をクリックします
  5. 下記のように設定します。
  6. 【選択】をクリックします
  7. ポリシーの有効化を「オン」にし、【作成】をクリックします
  8. 条件が有効になるまで数分かかるので待機します
  9. 同じようにAnyConnectクライアントを利用してVPN接続を実施します。

接続結果を確認する

デバイス準拠していないデバイスからアクセスした場合、下記のようになりAnyConnectからのアクセス不可能になります

すべての条件を満たしている場合には、支障なく接続されます

AzureAD Premiumはとても便利です。
EMSを使ってセキュリティ対策をしていきましょう!

 

トラブル編

現象:
AnyConnect接続時組み込みブラウザから証明書エラーを起こし先に進めない
「Webサイトのセキュリティ証明書は安全ではありません」と表示されてしまう

解決策:
こちらのページにあるとおり、組み込みブラウザは信頼できない証明書は許可されません
そのためASAに自己証明書を利用している場合等にログイン画面にすらいけないという状態になります。
Let’sEncryptの証明書等を利用しASAに信頼できる証明書を設定してください。
(3か月ごと更新つらいので自動化したい・・・できるのでしょうか・・・)

 

お役に立てば幸いです

Azure Active Directoryカテゴリの最新記事


Warning: Use of undefined constant XML - assumed 'XML' (this will throw an Error in a future version of PHP) in /home/add-smart/intracker.net/public_html/blog/wp-content/plugins/wp-syntaxhighlighter/wp-syntaxhighlighter.php on line 1048
%d人のブロガーが「いいね」をつけました。