本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本文檔介紹將Duo SAML SSO與利用思科ISE進行詳細狀態評估的自適應安全裝置(ASA)Cisco AnyConnect安全移動客戶端訪問相整合的配置示例。Duo SAML SSO使用Duo Access Gateway(DAG)實現,DAG與Active Directory通訊以進行初始使用者身份驗證,然後與Duo Security(Cloud)通訊以進行多重身份驗證。思科ISE用作授權伺服器,用於使用狀態評估提供終端驗證。
作者:Dinesh Moudgil和Pulkit Saxena,Cisco HTTS工程師。
註:此實施中使用的Anyconnect嵌入式瀏覽器要求每個版本在9.7(1)24、9.8(2)28、9.9(2)1或更高版本以及AnyConnect 4.6或更高版本上安裝ASA。
注意:思科ISE僅配置為授權,因為Duo訪問網關提供必需的身份驗證
在本節中,在Duo Admin Portal上配置ASA應用程式。
1.登入「Duo Admin Portal」並導航至「Applications > Protect an Application」,然後搜尋保護型別為「2FA with Duo Access Gateway, self-hosted」的「ASA」。按一下最右邊的「保護」以配置Cisco ASA
2.為受保護的應用程式ASA在「服務提供商」下配置以下屬性
基本URL | firebird.cisco.com |
通道組 | TG_SAML |
郵件屬性 | sAMAccountName,mail |
按一下頁面底部的「Save(儲存)」
在本文檔中,其餘配置使用預設引數,但可以根據客戶要求進行設定。
此時可以為新SAML應用程式調整其他設定,例如從預設值更改應用程式名稱、啟用自助服務或分配組策略。
3.按一下「下載配置檔案」連結以獲取Cisco ASA應用程式設定(作為JSON檔案)。在後續步驟中,此檔案將被上傳到Duo Access Gateway
4.在「Dashboard > Applications」下,新建立的ASA應用程式如下圖所示:
5.導覽至「Users > Add User」,如下圖所示:
建立一個名為「duouser」的使用者用於Anyconnect遠端訪問身份驗證,並在終端使用者裝置上啟用Duo Mobile
要新增電話號碼(如圖所示),請選擇「Add Phone」選項。
為特定使用者啟用「Duo Mobile」
註:確保在終端使用者裝置上安裝「Duo Mobile」。
手動安裝用於IOS裝置的Duo應用程式
手動安裝用於Android裝置的Duo應用程式
選擇「Generate Duo Mobile Activation Code」,如下圖所示:
選擇「Send Instructions by SMS」(通過SMS傳送說明),如下圖所示:
點選SMS中的連結,Duo應用將連結到「裝置資訊」部分中的使用者帳戶,如下圖所示:
注意:請按照以下文檔進行部署:
Linux版Duo存取閘道
https://duo.com/docs/dag-linux
適用於Windows的Duo存取閘道
https://duo.com/docs/dag-windows
本節提供有關配置ASA以進行SAML IDP身份驗證和基本AnyConnect配置的資訊。本文檔提供了ASDM配置步驟和CLI運行配置以供概述。
1.上傳Duo接入網關證書
A.導航到「Configuration > Device Management > Certificate Management > CA Certificates」,然後按一下「Add」
B.在「Install Certificate Page」上,配置信任點名稱:Duo_Access_Gateway
C.按一下「瀏覽」選擇與DAG證書關聯的路徑,選擇後,按一下「安裝證書」
2.為AnyConnect使用者建立IP本地池
導航到「Configuration > Remote Access VPN > Network(Client)Access > Address Assignment > Address Pools」,按一下「Add」
3.配置AAA伺服器組
A.在此部分,配置AAA伺服器組並提供執行授權的特定AAA伺服器的詳細資訊
B.導航到「Configuration > Remote Access VPN > AAA/Local Users > AAA Server Groups」,然後按一下「Add」
C.在同一頁的「Servers in the Selected group」部分下,按一下「Add」並提供AAA伺服器的IP地址詳細資訊
4.對映AnyConnect客戶端軟體
A.對映用於WebVPN的Windows的AnyConnect客戶端軟體webdeploy映像4.8.03052
B.導航到「Configuration > Remote Access VPN > Network(Client)Access > AnyConnect Client Software」,按一下「Add」
5.配置從ISE推送的重定向ACL
A.導覽至「Configuration > Firewall > Advanced > ACL Manager」,然後按一下Add以新增重新導向ACL。條目一旦配置,如下圖所示:
6.驗證現有組策略
A.此設定使用預設組策略,可以在以下位置檢視:「Configuration > Remote Access VPN > Network(Client)Access > Group Policies」
7.配置連線配置檔案
A.建立AnyConnect使用者連線的新連線配置檔案
B.導航到「Configuration > Remote Access VPN > Network(Client)Access > Anyconnect Connection Profiles」,按一下「Add」
C.配置以下與連線配置檔案相關的詳細資訊:
名稱 | TG_SAML |
別名 | SAML_Users |
方法 | SAML |
AAA伺服器組 | 本地 |
客戶端地址池 | AC_Pool |
組策略 | DfltGrpPolicy |
D.在同一頁面上,配置SAML身份提供程式詳細資訊,如下所示:
E.按一下「管理>新增」
F.在連線配置檔案的「高級」部分下,定義用於授權的AAA伺服器
導航至「Advanced > Authorization」,然後按一下「Add」
G.在「組別名」下,定義連線別名
導航到「Advanced > Group Alias/Group URL」,然後按一下「Add」
H.這樣ASA配置即完成,與命令列介面(CLI)上的如下所示相同
! hostname firebird domain-name cisco.com !
!
name 10.197.164.7 explorer.cisco.com name 10.197.164.3 firebird.cisco.com ! !--------------------Client pool configuration--------------------
!
ip local pool AC_Pool 10.197.164.6-explorer.cisco.com mask 255.255.255.0 !
!--------------------Redirect Access-list-------------------------
! access-list redirect extended deny udp any any eq domain access-list redirect extended deny ip any host 10.197.243.116 access-list redirect extended deny icmp any any access-list redirect extended permit ip any any access-list redirect extended permit tcp any any eq www !
!--------------------AAA server configuration---------------------
! aaa-server ISE protocol radius authorize-only interim-accounting-update periodic 1 dynamic-authorization aaa-server ISE (outside) host 10.106.44.77 key ***** !
!-----Configure Trustpoint for Duo Access Gateway Certificate-----
! crypto ca trustpoint Duo_Access_Gateway enrollment terminal crl configure !
!-------Configure Trustpoint for ASA Identity Certificate---------
! crypto ca trustpoint ID_CERT enrollment terminal fqdn firebird.cisco.com subject-name CN=firebird.cisco.com ip-address 10.197.164.3 keypair ID_RSA_KEYS no ca-check crl configure !
!------Enable AnyConnect and configuring SAML authentication------
! webvpn enable outside hsts enable max-age 31536000 include-sub-domains no preload anyconnect image disk0:/anyconnect-win-4.8.03052-webdeploy-k9.pkg 1 anyconnect enable saml idp https://explorer.cisco.com/dag/saml2/idp/metadata.php url sign-in https://explorer.cisco.com/dag/saml2/idp/SSOService.php url sign-out https://explorer.cisco.com/dag/saml2/idp/SingleLogoutService.php?ReturnTo=https://explorer.cisco.com/dag/module.php/duosecurity/logout.php base-url https://firebird.cisco.com trustpoint idp Duo_Access_Gateway trustpoint sp ID_CERT no signature no force re-authentication timeout assertion 1200 tunnel-group-list enable cache disable error-recovery disable !
!--------------------Group Policy configuration--------------------
! group-policy DfltGrpPolicy attributes vpn-tunnel-protocol ikev1 ikev2 l2tp-ipsec ssl-client ssl-clientless !
!----------Tunnel-Group (Connection Profile) Configuraiton----------
! tunnel-group TG_SAML type remote-access tunnel-group TG_SAML general-attributes address-pool AC_Pool authorization-server-group ISE accounting-server-group ISE tunnel-group TG_SAML webvpn-attributes authentication saml group-alias SAML_Users enable saml identity-provider https://explorer.cisco.com/dag/saml2/idp/metadata.php !
1.新增Cisco ASA作為網路裝置
在「Administration > Network Resources > Network Devices」下,按一下「Add」。
配置網路裝置的名稱、關聯的IP地址,並在「Radius身份驗證設定」下配置「共用金鑰」並按一下「儲存」
2.安裝最新的狀態更新
導航到「Administration > System > Settings > Posture > Updates」,然後按一下「Update Now」
3.在ISE上上傳合規性模組和AnyConnect頭端部署包
導航至「Policy > Policy Elements > Results > Client Provisioning > Resources」。點選「新增」,然後根據檔案是從本地工作站還是思科站點回遷來選擇「從本地磁碟獲取代理資源」或「從思科站點獲取代理資源」。
在這種情況下,要從本地工作站的「類別」下上傳檔案,請選擇「思科提供的包」,按一下「瀏覽」並選擇所需的包,然後按一下「提交」。
本文檔使用「anyconnect-win-4.3.1012.6145-isecompliance-webdeploy-k9.pkg」作為合規性模組,使用「anyconnect-win-4.8.03052-webdeploy-k9.pkg」作為AnyConnect頭端部署包。
4.建立AnyConnect終端安全評估配置檔案
A.導航到「策略>策略元素>結果>客戶端調配>資源」。點選「新增」並選擇「AnyConnect狀態配置檔案」
B.輸入Anyconnect狀態配置檔案的名稱,並在「伺服器名稱」規則下將伺服器名稱配置為「*」,然後按一下「儲存」
5.建立Anyconnect配置
A.導航到「策略>策略元素>結果>客戶端調配>資源」。按一下「新增」並選擇「AnyConnect配置」
B.選擇AnyConnect包,輸入配置名稱,選擇所需的合規性模組
C.在「AnyConnect模組選擇」下,選中「診斷和報告工具」
D.在「Profile Selection」下,選擇Posture Profile並按一下「Save」
6.建立客戶端調配策略
A.導航至「策略>客戶端調配」
B.按一下「編輯」,然後選擇「在上方插入規則」
C.輸入規則名稱,選擇所需的作業系統,然後在「結果」(在「代理」>「代理配置」中)下,選擇在步驟5中建立的「AnyConnect配置」,然後按一下「儲存」
7.建立狀態條件
A.導航到「策略>策略元素>條件>狀態>檔案條件」
B.按一下「新增」並將條件名稱「VPN_Posture_File_Check」、所需的作業系統配置為「Windows 10(All)」、檔案型別配置為「FileExistence」、檔案路徑配置為「ABSOLUTE_PATH」、完整路徑和檔名配置為「C:\custom.txt」,選擇檔案運算子配置為「Exists」
C.此示例使用C:drive下名為「custom.txt」的檔案作為檔案條件
8.建立狀態修正操作
導航到「Policy > Policy Elements > Results > Posture > Remediation Actions」以建立對應的「File Remediation Action」。本文檔使用「僅消息文本」作為下一步中配置的補救操作。
9.建立狀態要求規則
A.導航到「策略>策略元素>結果>狀態>要求」
B.按一下「編輯」,然後選擇「插入新要求」
C.將條件名稱「VPN_Posture_Requirement」、所需作業系統配置為「Windows 10(All)」、合規性模組配置為「4.x或更高版本」、安全狀態型別配置為「Anyconnect」
D.條件為「VPN_Posture_File_Check」(在步驟7中建立),在「Remediations Actions」下,選擇「Action」為「Message Text Only」,然後為代理使用者輸入自定義消息
10.建立狀態策略
A.導航至「策略>狀態」
B.將規則名稱配置為「VPN_Posture_Policy_Win」,將所需的作業系統配置為「Windows 10(All)」,將合規性模組配置為「4.x或更高版本」,將狀態型別配置為「Anyconnect」,將要求配置為「VPN_Posture_Requirement」(如步驟9中所配置)
11.建立動態ACL(DACL)
導航到「Policy > Policy Elements > Results > Authorization > Downloadable ACL」,然後為不同的狀態建立DACL。
本檔案使用以下DACL。
A.狀態未知:允許到DNS、PSN和HTTP的流量和HTTPS流量
B.狀態不符合:拒絕訪問專用子網並僅允許網際網路流量
C.符合安全評估標準:允許符合安全評估標準的終端使用者的所有流量
12.建立授權配置檔案
導航至「Policy > Policy Elements > Results > Authorization > Authorization Profiles」。
A.未知狀態的授權配置檔案
選擇DACL「PostureUnknown」,檢查Web重定向,選擇Client Provisioning(Posture),配置Redirect ACL名稱「redirect」(要在ASA上配置),然後選擇客戶端調配門戶(預設)
B.不符合安全狀態的授權配置檔案
選擇DACL「PostureNonCompliant」以限制對網路的訪問
C.符合安全狀態的授權配置檔案
選擇DACL「PostureCompliant」以允許完全訪問網路
12.配置授權策略
使用在上一步中配置的授權配置檔案為安全評估合規性、安全評估不合規性和安全評估未知配置3個授權策略。
常見條件「會話:狀態狀態」用於確定每個策略的結果
使用本節內容,確認您的組態是否正常運作。
要驗證使用者是否成功通過身份驗證,請在ASA上運行以下命令。
firebird(config)# show vpn-sess detail anyconnect Session Type: AnyConnect Detailed Username : _585b5291f01484dfd16f394be7031d456d314e3e62 Index : 125 Assigned IP : explorer.cisco.com Public IP : 10.197.243.143 Protocol : AnyConnect-Parent SSL-Tunnel DTLS-Tunnel License : AnyConnect Premium Encryption : AnyConnect-Parent: (1)none SSL-Tunnel: (1)AES-GCM-256 DTLS-Tunnel: (1)AES-GCM-256 Hashing : AnyConnect-Parent: (1)none SSL-Tunnel: (1)SHA384 DTLS-Tunnel: (1)SHA384 Bytes Tx : 16404 Bytes Rx : 381 Pkts Tx : 16 Pkts Rx : 6 Pkts Tx Drop : 0 Pkts Rx Drop : 0 Group Policy : DfltGrpPolicy Tunnel Group : TG_SAML Login Time : 07:05:45 UTC Sun Jun 14 2020 Duration : 0h:00m:16s Inactivity : 0h:00m:00s VLAN Mapping : N/A VLAN : none Audt Sess ID : 0ac5a4030007d0005ee5cc49 Security Grp : none AnyConnect-Parent Tunnels: 1 SSL-Tunnel Tunnels: 1 DTLS-Tunnel Tunnels: 1 AnyConnect-Parent: Tunnel ID : 125.1 Public IP : 10.197.243.143 Encryption : none Hashing : none TCP Src Port : 57244 TCP Dst Port : 443 Auth Mode : SAML Idle Time Out: 30 Minutes Idle TO Left : 29 Minutes Client OS : win Client OS Ver: 10.0.15063 Client Type : AnyConnect Client Ver : Cisco AnyConnect VPN Agent for Windows 4.8.03052 Bytes Tx : 7973 Bytes Rx : 0 Pkts Tx : 6 Pkts Rx : 0 Pkts Tx Drop : 0 Pkts Rx Drop : 0 SSL-Tunnel: Tunnel ID : 125.2 Assigned IP : explorer.cisco.com Public IP : 10.197.243.143 Encryption : AES-GCM-256 Hashing : SHA384 Ciphersuite : ECDHE-RSA-AES256-GCM-SHA384 Encapsulation: TLSv1.2 TCP Src Port : 57248 TCP Dst Port : 443 Auth Mode : SAML Idle Time Out: 30 Minutes Idle TO Left : 29 Minutes Client OS : Windows Client Type : SSL VPN Client Client Ver : Cisco AnyConnect VPN Agent for Windows 4.8.03052 Bytes Tx : 7973 Bytes Rx : 0 Pkts Tx : 6 Pkts Rx : 0 Pkts Tx Drop : 0 Pkts Rx Drop : 0 Filter Name : #ACSACL#-IP-PostureUnknown-5ee45b05 DTLS-Tunnel: Tunnel ID : 125.3 Assigned IP : explorer.cisco.com Public IP : 10.197.243.143 Encryption : AES-GCM-256 Hashing : SHA384 Ciphersuite : ECDHE-ECDSA-AES256-GCM-SHA384 Encapsulation: DTLSv1.2 UDP Src Port : 49175 UDP Dst Port : 443 Auth Mode : SAML Idle Time Out: 30 Minutes Idle TO Left : 29 Minutes Client OS : Windows Client Type : DTLS VPN Client Client Ver : Cisco AnyConnect VPN Agent for Windows 4.8.03052 Bytes Tx : 458 Bytes Rx : 381 Pkts Tx : 4 Pkts Rx : 6 Pkts Tx Drop : 0 Pkts Rx Drop : 0 Filter Name : #ACSACL#-IP-PostureUnknown-5ee45b05 ISE Posture: Redirect URL : https://ise261.pusaxena.local:8443/portal/gateway?sessionId=0ac5a4030007d0005ee5cc49&portal=27b1bc30-2... Redirect ACL : redirect
狀態評估完成後,使用者訪問將更改為完全訪問,如欄位「Filter Name」中推送的DACL中所示
firebird(config)# show vpn-sess detail anyconnect Session Type: AnyConnect Detailed Username : _585b5291f01484dfd16f394be7031d456d314e3e62 Index : 125 Assigned IP : explorer.cisco.com Public IP : 10.197.243.143 Protocol : AnyConnect-Parent SSL-Tunnel DTLS-Tunnel License : AnyConnect Premium Encryption : AnyConnect-Parent: (1)none SSL-Tunnel: (1)AES-GCM-256 DTLS-Tunnel: (1)AES-GCM-256 Hashing : AnyConnect-Parent: (1)none SSL-Tunnel: (1)SHA384 DTLS-Tunnel: (1)SHA384 Bytes Tx : 16404 Bytes Rx : 381 Pkts Tx : 16 Pkts Rx : 6 Pkts Tx Drop : 0 Pkts Rx Drop : 0 Group Policy : DfltGrpPolicy Tunnel Group : TG_SAML Login Time : 07:05:45 UTC Sun Jun 14 2020 Duration : 0h:00m:36s Inactivity : 0h:00m:00s VLAN Mapping : N/A VLAN : none Audt Sess ID : 0ac5a4030007d0005ee5cc49 Security Grp : none AnyConnect-Parent Tunnels: 1 SSL-Tunnel Tunnels: 1 DTLS-Tunnel Tunnels: 1 AnyConnect-Parent: Tunnel ID : 125.1 Public IP : 10.197.243.143 Encryption : none Hashing : none TCP Src Port : 57244 TCP Dst Port : 443 Auth Mode : SAML Idle Time Out: 30 Minutes Idle TO Left : 29 Minutes Client OS : win Client OS Ver: 10.0.15063 Client Type : AnyConnect Client Ver : Cisco AnyConnect VPN Agent for Windows 4.8.03052 Bytes Tx : 7973 Bytes Rx : 0 Pkts Tx : 6 Pkts Rx : 0 Pkts Tx Drop : 0 Pkts Rx Drop : 0 SSL-Tunnel: Tunnel ID : 125.2 Assigned IP : explorer.cisco.com Public IP : 10.197.243.143 Encryption : AES-GCM-256 Hashing : SHA384 Ciphersuite : ECDHE-RSA-AES256-GCM-SHA384 Encapsulation: TLSv1.2 TCP Src Port : 57248 TCP Dst Port : 443 Auth Mode : SAML Idle Time Out: 30 Minutes Idle TO Left : 29 Minutes Client OS : Windows Client Type : SSL VPN Client Client Ver : Cisco AnyConnect VPN Agent for Windows 4.8.03052 Bytes Tx : 7973 Bytes Rx : 0 Pkts Tx : 6 Pkts Rx : 0 Pkts Tx Drop : 0 Pkts Rx Drop : 0 Filter Name : #ACSACL#-IP-PERMIT_ALL_IPV4_TRAFFIC-57f6b0d3 DTLS-Tunnel: Tunnel ID : 125.3 Assigned IP : explorer.cisco.com Public IP : 10.197.243.143 Encryption : AES-GCM-256 Hashing : SHA384 Ciphersuite : ECDHE-ECDSA-AES256-GCM-SHA384 Encapsulation: DTLSv1.2 UDP Src Port : 49175 UDP Dst Port : 443 Auth Mode : SAML Idle Time Out: 30 Minutes Idle TO Left : 29 Minutes Client OS : Windows Client Type : DTLS VPN Client Client Ver : Cisco AnyConnect VPN Agent for Windows 4.8.03052 Bytes Tx : 458 Bytes Rx : 381 Pkts Tx : 4 Pkts Rx : 6 Pkts Tx Drop : 0 Pkts Rx Drop : 0 Filter Name : #ACSACL#-IP-PERMIT_ALL_IPV4_TRAFFIC-57f6b0d3
要驗證是否在ISE上成功執行授權,請導航至「操作> RADIUS >即時日誌」
本節顯示與授權使用者相關的資訊,如身份、授權配置檔案、授權策略和狀態資訊。
注意:有關ISE上的其他狀態驗證,請參閱以下文檔:
https://www.cisco.com/c/en/us/support/docs/security/identity-services-engine/215236-ise-posture-over-anyconnect-remote-acces.html#anc7
要驗證Duo Admin Portal的身份驗證狀態,請按一下顯示身份驗證日誌的管理面板左側的「報告」。
更多詳細資訊:https://duo.com/docs/administration#reports
要檢視Duo Access Gateway的調試日誌記錄,請使用以下連結:
https://help.duo.com/s/article/1623?language=en_US
本節提供的資訊可用於對組態進行疑難排解。
附註:使用 debug 指令之前,請先參閱有關 Debug 指令的重要資訊。
注意:在ASA上,您可以設定各種調試級別;預設情況下,使用級別1。如果更改調試級別,調試的詳細程度可能會增加。請謹慎執行此操作,尤其是在生產環境中。
大多數SAML故障排除都會涉及配置錯誤,通過檢查SAML配置或運行調試可以發現該錯誤。
「debug webvpn saml 255」可用於排除大多數問題,但在此調試不提供有用資訊的情況下,可以運行其他調試:
debug webvpn 255 debug webvpn anyconnect 255 debug webvpn session 255 debug webvpn request 255
要排除ASA上的身份驗證和授權問題,請使用以下debug命令:
debug radius all debug aaa authentication debug aaa authorization To troubleshoot Posture related issues on ISE, set the following attributes to debug level:
posture (ise-psc.log) portal (guest.log) provisioning (ise-psc.log) runtime-AAA (prrt-server.log) nsf (ise-psc.log) nsf-session (ise-psc.log) swiss (ise-psc.log)
注意:有關詳細狀態流程和AnyConnect和ISE故障排除,請參閱以下連結:
ISE終端安全評估樣式比較,用於前期和後期2.2
解釋Duo Access Gateway調試日誌並對其進行故障排除
https://help.duo.com/s/article/5016?language=en_US
https://www.youtube.com/watch?v=W6bE2GTU0Is&
https://duo.com/docs/cisco#asa-ssl-vpn-using-saml
https://www.cisco.com/c/en/us/support/docs/security/identity-services-engine/215236-ise-posture-over-anyconnect-remote-acces.html#anc0