概要
このドキュメントでは、セキュアファイアウォールでの認証のためのDuoおよびLDAPマッピングを使用したAnyConnectシングルサインオン(SSO)の設定例について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- Cisco AnyConnect セキュア モビリティ クライアント
- シスコセキュアFirepower脅威対策(FTD)
- Cisco Secure Firewall Management Center(FMC)
- Duoセキュリティの基礎
- Security Assertion Markup Language(SAML)
- Microsoft Windows ServerでのActive Directory(AD)サービスの設定
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアのバージョンに基づいています。
- Cisco Secure FMCバージョン7.4.0
- Cisco Secure FTDバージョン7.4.0
- Duo認証プロキシ
- Anyconnectセキュアモビリティクライアントバージョン4.10.06079
- ADサーバとして設定されたWindows Server 2016
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
設定
ネットワーク図
DUO SSOトラフィックフロー
Duoトラフィックフロー
- AnyConnectクライアントが、Cisco Secure FTDへのSecure Sockets Layer(SSL)バーチャルプライベートネットワーク(VPN)接続を開始します。
- Secure FTDは、AnyConnectクライアントの組み込みブラウザをSAML認証用のDuo SSOにリダイレクトします。
- AnyConnectユーザは、プライマリのオンプレミスActive Directoryクレデンシャルを使用してログインします。
- Duo SSOは、オンプレミスのDuo Authentication Proxyを介してオンプレミスのActive Directoryに対してプライマリ認証を実行します。
- プライマリ認証が成功すると、Duo SSOは2要素認証(2FA)を開始します。
- AnyConnectユーザがDuo 2FAを完了します。
- Duo SSOは、成功を示す応答メッセージとともにユーザをFTDにリダイレクトします。
外部LDAPを使用したSAML
SAMLユーザの外部認証は、IdPによって返されるNameID値によって異なります。 セキュアファイアウォールはNameIDフィールドをユーザ名にマッピングし、このユーザ名を使用してLDAPを照会できます。
注:このドキュメントで使用する設定は、ADグループに属するユーザがリモートアクセス(RA)VPN接続を確立できるようにすることです。接続は、マップに定義されていない異なるADグループのユーザに対して禁止されています。
コンフィギュレーション
Duo Adminポータルの設定
Duo SSOのプライマリ認証ソースとして使用できるADまたはSAML IDプロバイダーを設定します。
また、オンプレミスのADまたはSAML IDプロバイダーに到達可能なDuo認証プロキシ(ハイアベイラビリティのために推奨される3つの認証プロキシサーバ)も必要です。
詳細については、「Duoシングルサインオン」を参照してください。
ステップ 1:Duo Admin PortalでCisco Secure FTDを設定します。
- Duo Admin Portalにログインし、
Applications > Protect an Application
.
- 保護タイプがFTDの検索
2FA with SSO hosted by Duo
.
- クリック
Protect
Cisco FTD VPNを設定します。
Duo保護アプリケーション
ステップ 2:Duo Adminポータルでサービスプロバイダー情報を設定します。
次の属性が使用されます。
- シスコFirepowerベースのURL:
fj-ftdv.example.com
- 接続プロファイル名:
SSO-AD_Split-tunnel
- メール属性:
Duoサービスプロバイダー
注:メール属性は次のように設定できます。
を参照。この場合は、次の設定を行います。 ldap-naming-attribute
変更前 userPrincipalName
から sAMAccountName
Cisco Secure FTDで確認できます。
ステップ 3:ポリシーの横の [レポート(Report)] Save
ボタンをクリックして、設定を保存します。
ステップ 4: 移動先 Users > Add User
次の図に示すように、
Duoユーザーの追加
ステップ 5: 空白に、新しいユーザに必要なすべての情報を入力します。
Duoユーザー情報
注:ユーザ名データと電子メールデータは、Active Directoryサーバで指定された情報と一致している必要があります。
手順 6:Add Phoneと入力して、ユーザの電話番号を追加します。これは、ユーザがDuo Pushを使用して2FA経由で認証するために必要です。
Duo電話の追加
手順 7:特定のユーザーのDuo Mobileをアクティブにします。
Duo携帯電話の有効化
注:エンドユーザデバイスにDuo Mobileがインストールされていることを確認します。
ステップ 8:Duo Mobileアクティベーションコードを生成します。
Duoアクティベーションコード
ステップ 9:SMSで指示を送信します。
Duo SMS
ステップ 10: SMSで送信されたリンクをクリックすると、Duoアプリがデバイス情報セクションのユーザーアカウントにリンクされます。
Duo Infoセクション
ステップ 11追加するすべてのユーザに対して、このプロセスを繰り返します。
ステップ 12アプリケーションメタデータの取得:
- 移動先
Applications
ステップ1で作成したサービスプロバイダーアプリケーションをクリックします。
- をコピーする
Identity Provider Entity ID URL
、 SSO URL
,と Logout URL
メタデータから取得します。
Duo IdP情報
ステップ 13ダウンロード Identity Provider Certificate
を参照。
DuoダウンロードIdP証明書
FMCを介したFTDの設定
ステップ 1:FMCにアイデンティティプロバイダー(IdP)証明書をインストールして登録します。
- 移動先
Devices > Certificates
.
FMC証明書1
- クリック
Add
を参照。この証明書に登録するFTDを選択します。
- 内
Add Cert Enrollment
IdP証明書のラベルとして任意の名前を使用します。
- クリック
Manual
を参照。
- 次の項目を確認します。
CA only
と Skip Check for CA flag fields
を参照。
- Base64形式のIdP CA証明書を貼り付けます。
- Saveをクリックし、次にAddをクリックする。
FMC証明書の登録
ステップ 2:SAMLサーバの設定:
- 移動先
Objects > Object Management > AAA Servers > Single Sign-on Server.
- 選択
Add Single Sign-on Server.
FMC SSO
- Duoから収集したメタデータに基づいて、新しいSSOサーバでSAML値を設定します。
- アイデンティティプロバイダーエンティティID: DuoアプリケーションのentityID
- SSO URL:DuoアプリケーションからのSSOサービス
- ログアウトURL:DuoアプリケーションからのSingleLogoutService
- ベースURL:FTD SSL ID証明書のFQDN
- アイデンティティプロバイダー証明書:IdP署名証明書
- サービスプロバイダー証明書:FTD署名証明書
FMC SSO情報
注: Request Timeout
は300に設定されます。これは、認証プロセス中にDuoプッシュが送信され、ユーザの操作が必要になるためです。次の項目を変更します Request Timeout
ネットワーク設計に応じた価値を提供します。
ステップ 3:REALM/LDAPサーバの設定を行います。
- 移動先
Integration > Other Integrations.
FMCレルム
FMCレルムの追加
- Active Directoryサーバとディレクトリの詳細を指定します。[OK] をクリックします。
このデモンストレーションの目的は次のとおりです。
- [Name]:
ActiveDirectory_SSO
- タイプ:AD
- [AD Primary Domain]:
example.com
- [Directory Username]:
administrator@example.com
- [Directory Password]:
- ベースDN:DC=例、DC=com
- グループDN:DC=例、DC=com
FMCレルム情報
注: LDAPS
(LDAP over SSL)を使用できます。ポートを389から636に変更する必要があります。
注:ADサーバには、Duoにアップロードされたユーザデータが必要です。
ステップ 4:必要に応じてグループポリシーを作成します。
- 移動先
Objects > Object Management > VPN > Group Policy.
- クリック
Add Group Policy
を参照。
- グループポリシーをそれぞれのパラメータで作成します。
このデモンストレーションでは、次の3つのグループポリシーを設定しました。
- SSO_LDAP_ADMINSグループポリシーは、
AnyConnect Admins
グループ.
グループポリシー1
2. SSO_LDAP_USERS
グループポリシーは、 AnyConnect Users
グループ.
グループポリシー2
3. NO_ACCESS
グループポリシーは、以前のどのグループポリシーにも属していないユーザのグループです。このコマンドは、 Simultaneous Login Per User
パラメータは0に設定する必要があります。
グループポリシー3
ステップ 5:LDAP属性マッピングを設定します。
このデモンストレーションでは、LDAP属性マップの設定について説明します。
- LDAP Attribute Name:
memberOf
- シスコ属性名:
Group-Policy
[LDAP Attribute Map]
- 次を提供します。
LDAP Attribute Value
および Cisco Attribute Value
を参照。クリック OK
を参照。
このデモンストレーションの目的は次のとおりです。
LDAP属性値:CN=AnyConnect Admins、CN=Users、DC=example、DC=com
Cisco 属性の値: SSO_LDAP_ADMINS
LDAP属性値:CN=AnyConnect Users、CN=Users、DC=example、DC=com
Cisco 属性の値: SSO_LDAP_USERS
LDAP属性マップの設定
手順 6:設定する Connection Profile
を参照。
- 移動先
Devices > Remote Access
現在のVPNリモートアクセス設定を編集します。
- 新しい接続プロファイルとその属性を作成します。次のいずれかを選択します
NO_ACCESS
Group Policyを、この接続プロファイルのグループポリシーとして設定します。
FMC接続プロファイル1
- 次のいずれかを選択します
AAA
tab.の下 Authentication Method
オプション、選択 SAML
、および Authorization Server
オプションで、ステップ3で作成したADサーバを選択します。
FMC接続プロファイルAAA
- この接続プロファイルに接続をマッピングするグループエイリアスを作成します。これは、ユーザがAnyConnect Softwareドロップダウンメニューで表示できるタグです。
FMCグループエイリアス
- OKをクリックして、接続プロファイルVPN設定をすべて保存します。
手順 7:設定 FlexConfig Policy
LDAP名前付け属性を変更します。
Service Provider Mail属性がEmail Addressに設定されているため、 ldap-naming-attribute
ADサーバを変更する必要があります。 sAMAccountName
から userPrincipalName
を参照。
注:IdP NameID
値の種類 sAMAccountName
この手順は必要ありません。
- 移動先
Devices > FlexConfig
を選択または作成し、 FlexConfig Policy
変更します。
- クリック
FlexConfig Object
新しいオブジェクトを追加します。
FMC FlexConfigオブジェクト
- 次の項目を変更します
ldap-naming-attribute
変更前 sAMAccountName
から userPrincipalname.
FlexConfigオブジェクトの追加
ステップ 8:移動先 Deploy > Deployment
設定を適用するために適切なFTDを選択します。
確認
LDAPデバッグスニペットから debug ldap 255
Admin UserのLDAP属性マップに一致があることが確認できます。
[26] LDAP Search:
Base DN = [DC=example,DC=com]
Filter = [userPrincipalName=admin_user@example.com]
Scope = [SUBTREE]
[20]
memberOf: value = CN=AnyConnect Admins,CN=Users,DC=example,DC=com [20]
mapped to Group-Policy: value = SSO_LDAP_ADMINS
[20]
mapped to LDAP-Class: value = SSO_LDAP_ADMINS
show vpn-sessiondb anyconnect
コマンドを発行して、ユーザが定義されたグループに属していることを確認します。
firepower# show vpn-sessiondb anyconnect
Session Type: AnyConnect
Username : admin_user@example.com
Index : 6
Public IP : XX.XX.XX.XX
Protocol : AnyConnect-Parent
License : AnyConnect Premium
Encryption : AnyConnect-Parent: (1)none
Hashing : AnyConnect-Parent: (1)none
Bytes Tx : 0 Bytes Rx : 0
Group Policy : SSO_LDAP_ADMINSTunnel Group : SSO_AD_Split-tunnel Login Time : 19:37:28 UTC Thu Jul 20 2023 Duration : 0h:01m:33s Inactivity : 0h:00m:00s VLAN Mapping : N/A VLAN : none Audt Sess ID : 0a1f7c490000600064b98cf8 Security Grp : none Tunnel Zone : 0
.
LDAPデバッグスニペットから debug ldap 255
Test UserのLDAP属性マップに一致があることが確認できます。
[29] LDAP Search:
Base DN = [DC=example,DC=com]
Filter = [userPrincipalName=test_user@example.com]
Scope = [SUBTREE]
[29]
memberOf: value = CN=AnyConnect Users,CN=Users,DC=example,DC=com [29]
mapped to Group-Policy: value = SSO_LDAP_USERS [29]
mapped to LDAP-Class: value = SSO_LDAP_USERS
show vpn-sessiondb anyconnect
コマンドを発行して、ユーザが正しいグループに属していることを確認します。
firepower# show vpn-sessiondb anyconnect
Session Type: AnyConnect
Username : test_user@example.com
Index : 6
Public IP : XX.XX.XX.XX
Protocol : AnyConnect-Parent
License : AnyConnect Premium
Encryption : AnyConnect-Parent: (1)none
Hashing : AnyConnect-Parent: (1)none
Bytes Tx : 0 Bytes Rx : 0
Group Policy : SSO_LDAP_USERS Tunnel Group : SSO_AD_Split-tunnel
Login Time : 19:37:28 UTC Thu Jul 20 2023
Duration : 0h:08m:07s
Inactivity : 0h:00m:00s
VLAN Mapping : N/A VLAN : none
Audt Sess ID : 0a1f7c490000600064b98cf8
Security Grp : none Tunnel Zone : 0
LDAPデバッグスニペットから debug ldap 255
を設定すると、LDAP属性マップに一致するエントリがないことが NOACCESS
ユーザおよびデバッグあり webvpn
その NO_ACCESS
グループポリシーが選択されているため、ユーザは認証できません。
[32] LDAP Search:
Base DN = [DC=example,DC=com]
Filter = [userPrincipalName=noaccess_user@example.com]
Scope = [SUBTREE]
User Policy Access-Lists: user_acl[0] = NULL user_acl[1] = NULL tunnel policy attributes: 1 Filter-Id(11) 8 "" 2 Session-Timeout(27) 4 0 3 Idle-Timeout(28) 4 30 4 Simultaneous-Logins(4098) 4 0 5 Primary-DNS(4101) 4 IP: 0.0.0.0 6 Secondary-DNS(4102) 4 IP: 0.0.0.0 7 Primary-WINS(4103) 4 IP: 0.0.0.0 8 Secondary-WINS(4104) 4 IP: 0.0.0.0 9 Tunnelling-Protocol(4107) 4 96 10 Banner(4111) 0 0x000014e304401888 ** Unresolved Attribute ** 11 Group-Policy(4121) 9
"NO_ACCESS"
トラブルシュート
ほとんどのSAMLのトラブルシューティングでは、SAMLの設定またはデバッグを確認することで誤設定を検出できます。
debug webvpn saml 255
debug webvpn 255
debug webvpn anyconnect 255
debug webvpn session 255
debug webvpn request 255
LDAPマッピング認可の問題に関する便利なデバッグは次のとおりです。
debug aaa common 255
debug ldap 255
関連情報