Cisco ASA/AnyConnect

【参考】

2020年08月21日時点での情報で掲載しています。

Cisco ASAとの認証連携を設定します。

【注意】

  • Cisco ASAでは、IIJ IDサービスのアカウントベースで認証が行われます。Cisco ASAで該当するアカウントを用意する必要はありません。
    Cisco ASA上では、IIJ IDサービスのログインIDでログなどの情報が保存されます。
  • 本手順は下記の環境で確認した手順となります。

    機種項目Version
    Cisco ASAFirmware9.8.4(26)
    ASDM7.12(1)
    Cisco AnyConnectVersion

    Windows: 4.8.03036
    iOS/Android 4.9.00518

  • Cisco ASA AnyConnectにてSAML認証可能な制約及びバージョンなどについては販売元にお問合わせください。
    参考: https://www.cisco.com/c/ja_jp/td/docs/security/vpn_client/anyconnect/anyconnect48/administration/guide/b_AnyConnect_Administrator_Guide_4-8/b_AnyConnect_Administrator_Guide_4-8_chapter_011.html
    • iOS/AndroidのAnyConnect 4.6以上のバージョンと連携する場合には、ASA 9.7.1.24(またはそれ以降)、9.8.2.28(またはそれ以降)、または 9.9.2.1(またはそれ以降)が必要です。
      (2020年08月21日時点の情報)
    • SAML 認証を行う場合、信頼できないサーバ証明書は、AnyConnectの組み込みブラウザでは許可されません。
  • Cisco ASAではNTPなどを活用し、時刻がずれないように運用してください。
  • 本手順ではSAML連携に関連しない項目については記載していません。本手順にはクライアントレス SSL VPNに関する操作内容も記載しておりません。
  • AnyConnectだけではなくクライアントレス SSL VPNについてもSAML連携にて利用したい場合には、製品マニュアルをご確認いただくか販売元にお問合わせいただき、必要な追加設定作業を実施してください。

1. IIJ IDサービスにSAMLアプリケーションを登録する

1. 「アプリケーション」の「アプリケーションの管理」 をクリックします。

2. 「アプリケーションを追加する」をクリックし、「カスタムアプリケーションを追加する」をクリックします。

3. 「SAMLアプリケーション」を選択し、「次に進む」をクリックします。

4. アプリケーション情報を入力し、「アプリケーションを追加する」をクリックします。

項目内容備考
アプリケーション名例)Cisco AnyConnect必須
アプリケーションの説明例)Cisco AnyConnect セキュア モビリティ クライアント任意
アプリケーションロゴ(ファイルアップロード)任意
IDプロバイダの選択「アプリケーション専用のエンティティIDを利用」を選択必須
2. IIJ IDサービスのIDプロバイダ情報を確認する

1. 作成されたアプリケーションの「編集する」をクリックします。

2. 「IDプロバイダ情報」をクリックします。

3. 表示された「SSOエンドポイントURL (Redirectバインディング)」、「エンティティID」、及び「PEM」の値を控えます。

【参考】

  • 「PEM」は、必ず「-----BEGIN CERTIFICATE-----」からはじまり「-----END CERTIFICATE-----」で終わる形式です。
  • 「PEM」に書かれている値を改行などせずにそのままファイルに書き出して控えてください。
  • 「PEM」情報は連携先サービスの該当設定画面に貼り付ける必要があります。

3. Cisco ASAにIDプロバイダ情報を登録する
【参考】

あらかじめ信頼できるサーバ証明書を申請します。取得した後にCisco ASAにインポートし、Outsideのサーバ証明書を取得した証明書への切り替えを行っている必要があります。
詳しくは、製品マニュアルをご確認いただくか販売元にお問合わせください。
https://www.cisco.com/c/ja_jp/support/docs/security-vpn/public-key-infrastructure-pki/200339-Configure-ASA-SSL-Digital-Certificate-I.html#anc11

1. Cisco ASAへssh等での管理者アカウントとしてログインします。

2. 下記コマンドを実行し、IIJ IDサービスの証明書を登録します(赤字の部分を入力)。

実行内容ciscoasa# config t
ciscoasa(config)# crypto ca trustpoint iijid
ciscoasa(config-ca-trustpoint)# enrollment terminal
ciscoasa(config-ca-trustpoint)# no ca-check
ciscoasa(config-ca-trustpoint)# crypto ca authenticate iijid
End with the word "quit" on a line by itself:
(手順2-3で取得した「PEM」の値をペースト)
quit
INFO: Certificate has the following attributes:
Fingerprint: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
Do you accept this certificate? [yes/no]: yes
Trustpoint CA certificate accepted.
% Certificate successfully imported
実行例ciscoasa# config t
ciscoasa(config)# crypto ca trustpoint iijid
ciscoasa(config-ca-trustpoint)# enrollment terminal
ciscoasa(config-ca-trustpoint)# no ca-check
ciscoasa(config-ca-trustpoint)# crypto ca authenticate iijid
End with the word "quit" on a line by itself:
-----BEGIN CERTIFICATE-----
(省略)
-----END CERTIFICATE-----
quit
INFO: Certificate has the following attributes:
Fingerprint: XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
Do you accept this certificate? [yes/no]: yes
Trustpoint CA certificate accepted.
% Certificate successfully imported
【参考】

上記手順の「iijid」の部分は任意の文字列を利用可能です。以降の手順では、「iijid」と入力したものとして記載しています。

3. 引き続き、下記コマンドを実行し、IIJ IDサービスのIDプロバイダ情報を登録します(赤字の部分を入力)。

実行内容ciscoasa# config t
ciscoasa(config)# webvpn
ciscoasa(config-webvpn)# saml idp (手順2-3で確認した「エンティティID」の値)
ciscoasa(config-webvpn-saml-idp)# url sign-in (手順2-3で確認した「SSOエンドポイントURL(Redirectバインディング)」の値)
ciscoasa(config-webvpn-saml-idp)# url sign-out https://www.auth.iij.jp/op/end_session?prompt=none
ciscoasa(config-webvpn-saml-idp)# trustpoint idp iijid
ciscoasa(config-webvpn-saml-idp)# trustpoint sp asa_saml_sp
ciscoasa(config-webvpn-saml-idp)# force re-authentication
ciscoasa(config-webvpn-saml-idp)# no signature
ciscoasa(config-webvpn-saml-idp)# base-url (クライアントから到達可能なCisco ASAのFQDN)
ciscoasa(config-webvpn-saml-idp)# exit
cicoasa(confg-webvpn)# exit
実行例ciscoasa# config t
ciscoasa(config)# webvpn
ciscoasa(config-webvpn)# saml idp https://www.auth.iij.jp/idp/asiida-000000000000K/-/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
ciscoasa(config-webvpn-saml-idp)# url sign-in https://www.auth.iij.jp/idp/SSORedirect/metaAlias/asiida-0000000000000K/-/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
ciscoasa(config-webvpn-saml-idp)# url sign-out https://www.auth.iij.jp/op/end_session?prompt=none
ciscoasa(config-webvpn-saml-idp)# trustpoint idp iijid
ciscoasa(config-webvpn-saml-idp)# trustpoint sp asa_saml_sp
ciscoasa(config-webvpn-saml-idp)# force re-authentication
ciscoasa(config-webvpn-saml-idp)# no signature
ciscoasa(config-webvpn-saml-idp)# base-url https://anyconnect.example.com
ciscoasa(config-webvpn-saml-idp)# exit
cicoasa(confg-webvpn)# exit
【参考】

Cisco ASAのアクセスポート番号が、「443」以外の場合は、base-urlもそれにあわせて修正するなどご利用の環境にあわせた対応が必要です。
詳しくは、製品マニュアルをご確認いただくか販売元にお問合わせください。

【参考】

上記のコマンドの「iijid」は手順3-2で記載した文字列です。「asa_saml_sp」は事前に取り込まれた信頼できるサーバ証明書で登録したトラストポイントとして記載しています。
別の値にしている場合は、それぞれ置き換えて実行してください。

【参考】

url sign-outに指定するURL内の「?」の文字列を入力する際に、誤ってCLIヘルプを起動しないよう疑問符を入力する前に「Ctrl+V」を押す必要があります。
https://www.cisco.com/c/ja_jp/td/docs/security/asa/asa-command-reference/T-Z/cmdref4/cli.html

4. 引き続き、下記コマンドを実行し、VPNトンネル構成にSAML認証を適用します(赤字の部分を入力)。

実行内容ciscoasa# config t
ciscoasa(config)# webvpn
ciscoasa(config-webvpn)# tunnel-group iijid-tunnel webvpn-attributes
ciscoasa(config-tunnel-webvpn)# saml identity-provider (手順2-3で確認した「エンティティID」の値)
ciscoasa(config-tunnel-webvpn)# authentication saml
ciscoasa(config-tunnel-webvpn)# end
実行例ciscoasa# config t
ciscoasa(config)# webvpn
ciscoasa(config-webvpn)# tunnel-group iijid-tunnel webvpn-attributes
ciscoasa(config-tunnel-webvpn)# saml identity-provider https://www.auth.iij.jp/idp/asiida-000000000000K/-/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
ciscoasa(config-tunnel-webvpn)# authentication saml
ciscoasa(config-tunnel-webvpn)# end
【参考】

上記のコマンドは「iijid-tunnel」というVPNトンネル構成が既に設定済みで存在していることを前提とし、SAML認証を適用している内容となります。

5. 下記コマンドを実行し、設定内容を保存します(赤字の部分を入力)。

実行内容ciscoasa# write memory

6. ブラウザにて下記にアクセスし、Cisco ASAのSAML SPメタデータのコンテンツをファイルに保存しておきます。

入手先URL(手順3-4で指定した「base-url」)/saml/sp/metadata/(手順3-5で作業した「VPNトンネル名」)
入手先URL例https://anyconnect.example.com/saml/sp/metadata/iijid-tunnel
4. IIJ IDサービスのSAMLアプリケーションを設定する

1. 「アプリケーション」の「アプリケーションの管理」 をクリックします。

2. アプリケーションの「編集する」をクリックします。

3. 「フェデレーション設定」をクリックします。

4. 以下のとおり設定し、「変更を適用する」をクリックします。

項目内容備考
SAML基本情報  



SPのメタデータをアップロードする「SPのメタデータをアップロードする」をチェック
SPメタデータ手順3-6で入手したSPのメタデータをアップロード
検証後の遷移先(RelayState)(空欄)
アプリケーションのトップページURL(空欄)
アサーションの署名アルゴリズム

例)
RSA-SHA256


ユーザ識別子(NameID)の指定関連付けるユーザ属性

例)
ID

Cisco ASAのログ等で出力したい各ユーザの「ユーザID」の値が格納されている属性を指定します。

【参考】

「アサーションの署名アルゴリズム」は連携先サービス側で指定などがない場合、デフォルト値の「RSA-SHA256」を選択してください。

「RSA-SHA256」を指定して動作しない場合及び連携先サービス側で明示的にそれ以外のものが指定されている場合は、「RSA-SHA512」、または「RSA-SHA1」に変更し、連携を確認してください。

【参考】

  • 「ユーザ識別子(NameID)」の指定は、ユーザ単位ではなくSAMLアプリケーション単位でのみ設定できます。
  • 「ユーザ識別子(NameID)」の指定した属性にユーザが値を保持していない場合は SAML連携は失敗します。
  • 「ユーザ識別子(NameID)」にID以外の複数の値を持つ属性で指定する方法は以下のとおりです。
    例として、IIJ IDサービスの各ユーザの属性「Entitlements」に以下のように値が設定されています。

    • 連携先サービス側に「ユーザ識別子(NameID)」として渡す値が「iij-jiro@iij.ad.jp」の場合は、「プライマリの値を使用する」をチェックします。
    • 連携先サービス側に「ユーザ識別子(NameID)」として渡す値が「iij-jiro」の場合は、「タイプと一致する値を使用する」をチェックし、タイプに「SaaS_ID」を指定します。

【注意】

  • 「ユーザ識別子(NameID)」としてID以外の属性を指定していると、IIJ IDサービスに対する更新処理でその属性の値が更新される場合があります。ただし、その更新は連携先サービスまで伝搬されないため、IIJ IDサービス側の属性の値が更新されると、連携していたアカウントに接続できなくなります。「ユーザ識別子(NameID)」としている属性の値が更新される場合は、連携先サービス側で紐づく属性(多くの場合、ユーザID)を忘れずに更新してください。
  • 以下の画像のように複数のタイプに「SaaS_ID」が設定されている場合、「ユーザ識別子(NameID)」に「SaaS_ID」を指定すると、サービスマニュアルに記載されているルールに基づいていずれかの単数値だけが採用されます。連携対象のサービスに管理者の意図しないアカウントがSAML連携される危険性があります。対象となる各ユーザにおいて、「ユーザ識別子(NameID)」として指定するタイプが複数個存在しないように注意してください。

5. 「利用者設定」をクリックします。

6. 「利用者を追加する」をクリックし、アプリケーションにシングルサインオンさせたいグループ及びユーザを指定します。

【参考】

利用者に登録していないユーザにもこのアプリケーションを利用させたい場合は、「アプリケーションへのログイン」の「編集」をクリックしします。

「利用者でないユーザも、アプリケーションへのログインを許可する」を選択し、「変更を適用する」をクリックします。