概要
 
  このドキュメントでは、セキュアファイアウォールでの認証のための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 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.
- クリック ProtectCisco FTD VPNを設定します。
 Duo保護アプリケーション
Duo保護アプリケーション
 
  ステップ 2:Duo Adminポータルでサービスプロバイダー情報を設定します。
 
  次の属性が使用されます。
 
   
   - シスコFirepowerベースのURL: fj-ftdv.example.com
- 接続プロファイル名: SSO-AD_Split-tunnel
- メール属性:  
      
 Duoサービスプロバイダー
Duoサービスプロバイダー
 
   
    
 
    
    注:メール属性は次のように設定できます。  
       を参照。この場合は、次の設定を行います。 ldap-naming-attribute 変更前 userPrincipalName から sAMAccountName Cisco Secure FTDで確認できます。
 
     
    
  ステップ 3:ポリシーの横の [レポート(Report)] Save ボタンをクリックして、設定を保存します。
 
  ステップ 4: 移動先 Users > Add User 次の図に示すように、
 
   Duoユーザーの追加
Duoユーザーの追加
 
  ステップ 5: 空白に、新しいユーザに必要なすべての情報を入力します。
 
   Duoユーザー情報
Duoユーザー情報
 
   
    
 
    
    注:ユーザ名データと電子メールデータは、Active Directoryサーバで指定された情報と一致している必要があります。
 
     
    
  手順 6:Add Phoneと入力して、ユーザの電話番号を追加します。これは、ユーザがDuo Pushを使用して2FA経由で認証するために必要です。
 
   Duo電話の追加
Duo電話の追加
 
  手順 7:特定のユーザーのDuo Mobileをアクティブにします。
 
   Duo携帯電話の有効化
Duo携帯電話の有効化
 
   
    
 
    
    注:エンドユーザデバイスにDuo Mobileがインストールされていることを確認します。
 
     
     
    
  ステップ 8:Duo Mobileアクティベーションコードを生成します。
 
   Duoアクティベーションコード
Duoアクティベーションコード
 
  ステップ 9:SMSで指示を送信します。
 
   Duo SMS
Duo SMS
 
  ステップ 10: SMSで送信されたリンクをクリックすると、Duoアプリがデバイス情報セクションのユーザーアカウントにリンクされます。
 
   Duo Infoセクション
Duo Infoセクション
 
  ステップ 11追加するすべてのユーザに対して、このプロセスを繰り返します。
 
  ステップ 12アプリケーションメタデータの取得:
 
   
   - 移動先 Applicationsステップ1で作成したサービスプロバイダーアプリケーションをクリックします。
- をコピーする Identity Provider Entity ID URL、SSO URL,とLogout URLメタデータから取得します。
 Duo IdP情報
Duo IdP情報
 
  ステップ 13ダウンロード Identity Provider Certificateを参照。
 
   DuoダウンロードIdP証明書
DuoダウンロードIdP証明書
 
  FMCを介したFTDの設定
 
  ステップ 1:FMCにアイデンティティプロバイダー(IdP)証明書をインストールして登録します。
 
   
   - 移動先 Devices > Certificates.
 FMC証明書1
FMC証明書1
 
   
   - クリック Addを参照。この証明書に登録するFTDを選択します。
- 内 Add Cert EnrollmentIdP証明書のラベルとして任意の名前を使用します。
- クリック Manualを参照。
- 次の項目を確認します。 CA onlyとSkip Check for CA flag fieldsを参照。
- Base64形式のIdP CA証明書を貼り付けます。
- Saveをクリックし、次にAddをクリックする。
 FMC証明書の登録
FMC証明書の登録
 
  ステップ 2:SAMLサーバの設定:
 
   
   - 移動先 Objects > Object Management > AAA Servers > Single Sign-on Server.
- 選択 Add Single Sign-on Server.
 FMC SSO
FMC SSO
 
   
   - Duoから収集したメタデータに基づいて、新しいSSOサーバでSAML値を設定します。
 
   - アイデンティティプロバイダーエンティティID: DuoアプリケーションのentityID
- SSO URL:DuoアプリケーションからのSSOサービス
- ログアウトURL:DuoアプリケーションからのSingleLogoutService
- ベースURL:FTD SSL ID証明書のFQDN
- アイデンティティプロバイダー証明書:IdP署名証明書
- サービスプロバイダー証明書:FTD署名証明書
 FMC SSO情報
FMC SSO情報
 
   
    
 
    
    注: Request Timeout は300に設定されます。これは、認証プロセス中にDuoプッシュが送信され、ユーザの操作が必要になるためです。次の項目を変更します Request Timeout ネットワーク設計に応じた価値を提供します。
 
     
    
  ステップ 3:REALM/LDAPサーバの設定を行います。
 
   
   - 移動先 Integration > Other Integrations.
 FMCレルム
FMCレルム
 
   
   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レルム情報
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
グループポリシー1
 
  2. SSO_LDAP_USERS グループポリシーは、 AnyConnect Users グループ.
 
   グループポリシー2
グループポリシー2
 
  3. NO_ACCESS グループポリシーは、以前のどのグループポリシーにも属していないユーザのグループです。このコマンドは、  Simultaneous Login Per User パラメータは0に設定する必要があります。
 
   グループポリシー3
グループポリシー3
 
  ステップ 5:LDAP属性マッピングを設定します。
 
   
  このデモンストレーションでは、LDAP属性マップの設定について説明します。
 
   
   - LDAP Attribute Name: memberOf
- シスコ属性名: Group-Policy
 [LDAP Attribute Map]
[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属性マップの設定
LDAP属性マップの設定
 
  手順 6:設定する Connection Profileを参照。
 
   
   - 移動先 Devices > Remote Access現在のVPNリモートアクセス設定を編集します。
- 新しい接続プロファイルとその属性を作成します。次のいずれかを選択します NO_ACCESSGroup Policyを、この接続プロファイルのグループポリシーとして設定します。
 FMC接続プロファイル1
FMC接続プロファイル1
 
   
   - 次のいずれかを選択します  AAAtab.の下Authentication Methodオプション、選択SAML、およびAuthorization Serverオプションで、ステップ3で作成したADサーバを選択します。
 FMC接続プロファイルAAA
FMC接続プロファイルAAA
 
   
   
   - この接続プロファイルに接続をマッピングするグループエイリアスを作成します。これは、ユーザがAnyConnect Softwareドロップダウンメニューで表示できるタグです。
 FMCグループエイリアス
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オブジェクト
FMC FlexConfigオブジェクト
 
   
   - 次の項目を変更します ldap-naming-attribute変更前sAMAccountNameからuserPrincipalname.
 
 FlexConfigオブジェクトの追加
FlexConfigオブジェクトの追加
 
   
  ステップ 8:移動先 Deploy > Deployment 設定を適用するために適切なFTDを選択します。
 
  確認
 
  LDAPデバッグスニペットから debug ldap 255Admin 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 255Test 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  
関連情報