简介
本文档介绍具有用于安全防火墙上授权的Duo和LDAP映射的AnyConnect单点登录(SSO)的配置示例。
先决条件
要求
Cisco 建议您了解以下主题:
- Cisco AnyConnect 安全移动客户端
- 思科安全Firepower威胁防御(FTD)
- 思科安全防火墙管理中心(FMC)
- Duo安全基础知识
- 安全断言标记语言(SAML)
- 在Microsoft Windows Server上配置Active Directory(AD)服务
使用的组件
本文档中的信息基于以下软件版本:
- 思科安全FMC版本7.4.0
- 思科安全FTD版本7.4.0
- Duo身份验证代理
- Anyconnect安全移动客户端版本4.10.06079
- Windows Server 2016,配置为AD服务器
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
配置
网络图
DUO SSO流量
Duo流量
- AnyConnect客户端发起到思科安全FTD的安全套接字层(SSL)虚拟专用网络(VPN)连接。
- 安全FTD将AnyConnect客户端中的嵌入式浏览器重定向到Duo SSO以进行SAML身份验证。
- AnyConnect用户使用本地主Active Directory凭证登录。
- 双核SSO通过本地双核Authentication Proxy对本地Active Directory执行主要身份验证。
- 主身份验证成功后,双方SSO开始双因素身份验证(2FA)。
- AnyConnect用户完成Duo 2FA。
- 双核SSO将用户重定向回FTD,并显示一条指示成功的响应消息。
使用外部LDAP的SAML
SAML用户的外部授权取决于IdP返回的NameID值。 安全防火墙将NameID字段映射到用户名,此用户名可用于查询LDAP。
注:本文档中使用的配置允许属于AD组的用户建立远程访问(RA)VPN连接。来自未在映射中定义的不同AD组的用户禁止连接。
配置
Duo管理员门户配置
配置AD或SAML身份提供程序,将其用作Duo SSO的主要身份验证源。
此外,您需要一个能够访问内部AD或SAML身份提供商的双重身份验证代理(为实现高可用性,建议使用三台身份验证代理服务器)。
有关详细信息,请参阅双核Single Sign-On。
步骤1:在Duo管理员门户上配置Cisco Secure FTD。
- 登录到Duo Admin Portal并导航至
Applications > Protect an Application
.
- 使用保护类型搜索FTD
2FA with SSO hosted by Duo
.
- 点击
Protect
配置Cisco FTD VPN的路由器。
Duo Protect应用程序
第二步:在Duo Admin Portal上配置服务提供商信息。
使用以下属性:
- Cisco Firepower基础URL:
fj-ftdv.example.com
- 连接配置文件名称:
SSO-AD_Split-tunnel
- 邮件属性:
Duo服务提供商
注意:邮件属性可以设置为
.如果是这种情况,则配置 ldap-naming-attribute
更改自 userPrincipalName
到 sAMAccountName
在Cisco Secure FTD上。
第三步:单击 Save
按钮以保存配置。
第四步: 导航至 Users > Add User
如图所示:
Duo添加用户
第五步: 使用新用户的所有必要信息填空题。
Duo用户信息
注意:用户名数据和电子邮件数据必须与Active Directory服务器中提供的信息匹配。
第六步:添加电话(Add Phone)以添加用户的电话号码。这是用户通过2FA和Duo Push进行身份验证所必需的。
Duo添加电话
步骤 7.激活特定用户的Duo Mobile。
激活Duo手机
注:确保在最终用户设备上安装Duo Mobile:
步骤 8生成Duo Mobile激活代码。
Duo激活码
步骤 9通过SMS发送说明。
双SMS
步骤 10 单击通过SMS发送的链接,Duo应用程序将链接到“设备信息”部分中的用户帐户。
Duo Info部分
步骤 11对要添加的所有用户重复此过程。
步骤 12检索应用程序元数据:
- 导航至
Applications
并点击在步骤1中创建的服务提供商应用。
- 复制
Identity Provider Entity ID URL
, SSO URL
,和 Logout URL
从元数据。
双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证书注册
第二步:配置SAML服务器设置:
- 导航至
Objects > Object Management > AAA Servers > Single Sign-on Server.
- 选择
Add Single Sign-on Server.
FMC SSO
- 根据从Duo收集的元数据,在新SSO服务器上配置SAML值:
- 身份提供程序实体ID:来自Duo应用程序的实体ID
- SSO URL:来自双核应用的SSO服务
- 注销URL:Duo应用程序的SingleLogoutService
- 基本URL:FTD SSL ID证书的FQDN
- 身份提供程序证书:IdP签名证书
- 服务提供商证书:FTD签名证书
FMC SSO信息
注意: Request Timeout
设置为300,因为在身份验证过程中发送Duo Push并且需要用户交互。修改 Request Timeout
根据网络设计的值。
第三步:配置领域/LDAP服务器配置。
- 导航至
Integration > Other Integrations.
FMC领域
FMC添加领域
- 提供Active Directory服务器和目录的详细信息。Click OK.
在本演示中:
- 名称:
ActiveDirectory_SSO
- 类型:AD
- AD主域:
example.com
- 目录用户名:
administrator@example.com
- 目录密码:
- 基础DN:DC=示例,DC=com
- 组DN:DC=example,DC=com
FMC领域信息
注意: LDAPS
(基于SSL的LDAP)可以使用。端口必须从389更改为636。
注意:AD服务器必须具有已上传到Duo的用户数据。
第四步:根据需要创建组策略。
- 导航至
Objects > Object Management > VPN > Group Policy.
- 点击
Add Group Policy
.
- 使用各自的参数创建组策略。
出于本演示的目的,已配置三个组策略:
- SSO_LDAP_ADMINS组策略是属于的用户的组
AnyConnect Admins
组.
组策略1
2. SSO_LDAP_USERS
组策略是属于的用户的组 AnyConnect Users
组.
组策略2
3. NO_ACCESS
Group Policy是不属于任何先前组策略的用户组。它拥有了 Simultaneous Login Per User
参数必须设置为0。
组策略3
第五步:配置LDAP属性映射。
在本演示中,LDAP属性映射配置:
- LDAP属性名称:
memberOf
- 思科属性名称:
Group-Policy
LDAP 属性映射
- 提供
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属性映射
第六步:配置 Connection Profile
.
- 导航至
Devices > Remote Access
然后编辑当前的VPN远程访问配置。
- 创建具有其属性的新连接配置文件。选择
NO_ACCESS
组策略作为此连接配置文件的组策略。
FMC连接配置文件1
- 选择
AAA
选项卡。在 Authentication Method
选项,选择 SAML
和 Authorization Server
选项,选择在步骤3中创建的AD服务器。
FMC连接配置文件AAA
- 创建组别名以将连接映射到此连接配置文件。这是用户可以在AnyConnect软件下拉菜单上看到的标记。
FMC组别名
步骤 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
,可以观察到管理员用户的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
,可以观察到测试用户的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
相关信息