此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍如何为连接到Firepower威胁防御(FTD)的AnyConnect客户端配置Active Directory (AD)身份验证。
Cisco 建议您了解以下主题:
本文档中的信息基于以下软件和硬件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
本文档介绍如何为连接到Firepower威胁防御(FTD)(由Firepower管理中心(FMC)管理)的AnyConnect客户端配置Active Directory (AD)身份验证。
用户身份用于访问策略,以将AnyConnect用户限制到特定IP地址和端口。
Windows服务器预配置了IIS和RDP以测试用户身份。在本配置指南中,创建了三个用户帐户和两个组。
用户帐户:
组:
要在FTD上适当配置AD身份验证和用户身份,需要几个值。
在FMC上完成配置之前,必须在Microsoft服务器上创建或收集所有这些详细信息。主要值包括:
这是服务器的域名。在本配置指南中,example.com是域名。
用于连接Microsoft服务器的IP地址或FQDN。如果使用FQDN,则必须在FMC和FTD中配置DNS服务器以解析FQDN。
在本配置指南中,此值为win2016.example.com(解析为192.168.1.1)。
LDAP服务使用的端口。默认情况下,LDAP和STARTTLS对LDAP使用TCP端口389,LDAP over SSL (LDAPS)使用TCP端口636。
如果使用LDAPS或STARTTLS,则需要用于签署LDAPS使用的SSL证书的根CA。
这是FMC和FTD用于绑定到LDAP服务器并对用户进行身份验证以及搜索用户和组的帐户。
为此创建了一个名为FTD Admin的帐户。
基础DN是FMC的起点,FTD告知Active Directory开始搜索和验证用户。
同样,组DN是起点,FMC告知Active Directory从何处开始搜索用户身份组。
在本配置指南中,根域example.com用作基础DN和组DN。
但是,对于生产环境,在LDAP层次结构中进一步使用Base DN和Group DN更好。
例如,此LDAP层次结构:
如果管理员希望市场营销组织单位内的用户能够对基本DN进行身份验证,可将基本DN设置为根(example.com)。
不过,这也允许财务组织单位下的User1登录,因为用户搜索从根目录开始,然后转至财务、营销和研究。
基本DN设置为example.com
为了将登录限制在市场营销组织单位及更低级别中的唯一用户,管理员可以将Base DN设置为市场营销。
现在只有User2和User3能够进行身份验证,因为搜索从Marketing开始。
基本DN设置为Marketing
请注意,对于FTD中允许用户连接或根据其AD属性为用户分配不同授权的更精细控制,需要配置LDAP授权映射。
有关这方面的详细信息,请参阅:在Firepower威胁防御(FTD)上配置AnyConnect LDAP映射。
本配置指南中使用了此简化的LDAP层次结构,并且根example.com的DN同时用于基础DN和组DN。
1. 打开Active Directory用户和计算机。
2. 单击根域(以打开容器),接着右键单击根域,然后在视图下单击高级功能。
3. 这样可以查看AD对象下的附加属性。例如,要查找根example.com的DN,右键单击example.com,然后选择属性。
4. 在属性下,选择属性编辑器选项卡。在Attributes下查找distinguishedName,然后单击View。
5. 这将打开一个新窗口,可以在此窗口中复制并粘贴到FMC中。在本示例中,根DN为DC=example,DC=com。
复制该值并保存以供以后使用。单击OK退出“String Attribute Editor”窗口,然后再次单击“OK”退出属性。
这可以针对Active Directory中的多个对象完成。例如,以下步骤用于查找User容器的DN:
6. 再次右键单击根DN,然后在视图下再次单击高级功能可删除高级功能视图。
此用户帐户允许FMC和FTD与Active Directory绑定,以搜索用户和组并对用户进行身份验证。
创建单独的FTD帐户的目的是,在用于绑定的凭证遭到入侵时,防止网络内其他位置的未授权访问。
此帐户无需在基础DN或组DN范围内。
1. 在Active Directory用户和计算机中,右键单击FTD帐户添加到的容器/组织。
在此配置中,FTD帐户会被添加到用户名ftd.admin@example.com下的Users容器下。
右键单击用户,然后导航到新建>用户。
2. 完成“新建对象-用户向导”。
3. 核实是否已创建FTD帐户。另外创建两个帐户;IT管理员和测试用户。
虽然无需进行身份验证,但可以使用组来简化将访问策略应用至多个用户以及LDAP授权的过程。
在本配置指南中,组稍后用于通过FMC中的用户身份应用访问控制策略设置。
1. 在Active Directory用户和计算机中,右键单击添加新组的容器或组织单位。
在本示例中,组AnyConnect Admins添加到Users容器下。右键单击用户,然后导航到新建>组。
2. 通过“新建对象-组向导”。
3. 验证组是否已创建。系统也会创建AnyConnect用户组。
4. 右键单击用户组,然后选择属性。在此配置中,用户IT Admin添加到AnyConnect Admins组,用户Test User添加到AnyConnect Users组。
5. 在成员选项卡下,单击添加。
在字段中输入用户,然后单击Check Names以验证找到该用户。验证后,单击OK。
确认已添加正确的用户,然后点击OK。使用相同的步骤,用户Test User也被添加到组AnyConnect Users。
1. 按Win+R并输入mmc.exe。然后单击 OK。
2. 导航到文件>添加/删除管理单元。
3. 在可用管理单元下,选择证书,然后单击添加。
4. 选择计算机帐户,然后单击下一步。
单击 完成。
5. 单击确定。
6. 展开个人文件夹,然后单击证书。LDAPS使用的证书颁发给Windows服务器的完全限定域名(FQDN)。此服务器上列出了3个证书。
在本配置指南中,FQDN是win2016.example.com,因此前2个证书不能用作LDAPS SSL证书。颁发给win2016.example.com的身份证书是由Windows Server CA服务自动颁发的证书。双击证书以检查详细信息。
7. 要用作LDAPS SSL证书,证书必须满足以下要求:
在证书的详细信息选项卡下,选择主题和主题备用名称,则系统会显示FQDN win2016.example.com。
在Enhanced Key Usage下,显示Server Authentication。
8. 确认之后,在证书路径选项卡下,选择作为根CA证书的顶级证书,然后单击查看证书。
9. 这将打开根CA证书的证书详细信息。
在详细信息选项卡下,单击复制到文件。
10. 通过证书导出向导。向导以PEM格式导出根CA。
选择Base-64 encoded X.509。
选择文件的名称及其导出到的位置。
现在请单击Finish。
11. 导航到位置并使用记事本或其他文本编辑器打开证书。这显示PEM格式证书。请将此保存以备日后使用。
-----BEGIN CERTIFICATE----- MIIDCDCCAfCgAwIBAgIQE4ZG5Z1wT6lONTjooEQyMTANBgkqhkiG9w0BAQsFADAd MRswGQYDVQQDExJleGFtcGxlLVdJTjIwMTYtQ0EwIBcNMjAwNDI3MTQ1MDU5WhgP MjA2MDA0MTkxNDUwNTlaMB0xGzAZBgNVBAMTEmV4YW1wbGUtV0lOMjAxNi1DQTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI8ghT719NzSQpoQPh0YT67b Ya+PngsxMyvkewP33QLTAWw1HW1Tb9Mk5BDWOItTaVsgHwPBfd++M+bLn3AiZnHV OO+k6dVVY/E5qVkEKSGoY+v940S2316lzdwReMOFhgbc2qMertIoficrRhihonuU Cjyeub3CO+meJUuKom2R47C0D35TUvo/FEHGgXJFaJS1se2UrpNO7KEMkfA1LPuM aob4XE/OzxYQpPa18djsNnskfcFqD/HOTFQN4+SrOhHWlRnUIQBUaLdQaabhipD/ sVs5PneYJX8YKma821uYI6j90YuytmsHBtCieyC062a8BKqOL7N86HFPFkMA3u8C AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O BBYEFD2fJjf7ER9EM/HCxCVFN5QzqEdvMA0GCSqGSIb3DQEBCwUAA4IBAQB31ZJo vzwVD3c5Q1nrNP+6Mq62OFpYH91k4Ch9S5g/CEOemhcwg8MDIoxW2dTsjenAEt7r phFIHZoCoSyjBjMgK3xybmoSeg8vBjCXseYNGEmOc9KW1oFmTOvdNVIb7Xpl1IVa 6tALTt3ANRNgREtxPA6yQbthKGavW0Anfsojk9IcDr2vp0MTjlBCxsTscbubRl+D dLEFKQqmMeYvkVf+a7a64mqPZsG3Uxo0rd6cZxAPkq/ylcdwNSJFfQV3DgZg+R96 9WLCR3Obig6xyo9Zu+lixcWpdrbADO6zMhbEYEhkhOOjBrUEBBI6Cy83iTZ9ejsk KgwBJXEu33PplW6E -----END CERTIFICATE-----
12. (可选)如果LDAPS可使用多个身份证书,且使用证书的不确定性或者无法访问LDAPS服务器,则可以从之后在Windows服务器或FTD上完成的数据包捕获中提取根ca。
要部署AnyConnect配置,FTD需要注册到智能许可服务器,并且必须向设备应用有效的Plus、Apex或VPN专用许可证。
1. 导航到系统>许可证>智能许可。
2. 验证设备是否合规并已成功注册。确保使用AnyConnect Apex、Plus或VPN专用许可证注册设备。
1. 定位至系统>集成。
2. 在领域下,然后单击新建领域。
3. 根据从Microsoft服务器收集的信息填写适当的字段。然后单击 OK。
4. 在新窗口中,选择目录(如果尚未选择),然后单击添加目录。
填写AD服务器的详细信息。请注意,如果使用了FQDN,则除非将DNS配置为解析FQDN,否则FMC和FTD无法成功绑定。
要设置FMC的DNS,请导航到System > Configuration,然后选择Management Interfaces。
要为FTD设置DNS,请导航到设备>平台设置,创建新策略,或编辑当前策略,然后转到DNS。
如果使用LDAPS或STARTTLS,请点击绿色+(加号)符号,为证书指定一个名称并复制PEM格式的根CA证书。然后单击保存。
从SSL Certificate旁边的下拉菜单中选择新添加的根CA,然后点击STARTTLS或LDAPS。
点击Test以确保FMC可以成功与上一步中提供的目录用户名和密码绑定。
由于这些测试是从FMC启动的,而不是通过FTD上配置的某个可路由接口(例如内部、外部和dmz)启动,因此成功的(或失败的)连接不能保证AnyConnect身份验证的结果相同,因为AnyConnect LDAP身份验证请求是从某个FTD可路由接口启动的。
有关从FTD测试LDAP连接的详细信息,请查看“故障排除”区域中的“测试AAA”和“数据包捕获”部分。
5. 在用户下载下,在后续步骤中下载用于用户身份的组。
选中Download users and groups框,并在Available Groups列中填写在Active Directory中配置的组。
组可以包括(Included)或排除(Exclude),但默认情况下包括组DN下找到的所有组。
也可以包括或排除特定用户。任何包含的组和用户都可以在以后选择用于用户身份。
完成后,单击 Save(保存)。
6. 启用新领域。
7. 如果使用LDAPS或STARTTLS,则根CA也需要受FTD信任。为此,请首先导航到设备>证书。
单击右上方的Add。
选择FTD,将LDAP配置添加到,然后点击+(加号)符号。
为信任点指定Name,然后从Enrollment Type下拉菜单中选择Manual注册。将PEM根ca证书粘贴到此处,然后单击Save。
验证已选择创建的信任点,然后单击Add。
新信任点显示在FTD下。虽然它提到需要导入身份证书,但FTD不需要对LDAPS服务器发送的SSL证书进行身份验证。因此,可以忽略此消息。
1. 这些步骤假设尚未创建远程访问VPN策略。如果已创建一个策略,请点击该策略的edit按钮,并跳到第3步。
导航到Devices > VPN > Remote Access。
单击Add创建新的远程访问VPN策略
2. 完成远程访问VPN策略向导。在Policy Assignment下,为策略和应用该策略的设备指定名称。
在连接配置文件下,指定连接配置文件的名称,该名称也用作AnyConnect用户在连接时看到的组别名。
指定以前在身份验证服务器下创建的领域。
指定为AnyConnect客户端分配IP地址的方法。
指定用于此连接配置文件的默认组策略。
在AnyConnect下,上传并指定使用的AnyConnect软件包。
在Access & Certificate下,指定AnyConnect用户可为AnyConnect访问的接口。
创建和/或指定FTD在SSL握手期间使用的证书。
确保取消选中用于已解密流量(sysopt permit-vpn)的绕过访问控制策略复选框,以便稍后创建的用户身份对RAVPN连接生效。
在Summary下,单击Finish以查看配置。
3. 在VPN > Remote Access策略下,点击相应连接配置文件的编辑图标(铅笔)。
确保将身份验证服务器设置为之前创建的领域。
在高级设置下,可以选中启用密码管理,以允许用户在密码到期时或之前更改其密码。
但是,此设置要求领域使用LDAPS。如果进行了任何更改,请单击Save。
完成后,单击 Save(保存)。
1. 导航到策略>访问控制>身份。
创建新的身份策略。
为新身份策略指定名称。
2. 单击Add Rule。
3. 为新规则指定名称。确保已启用,并且操作已设置为Passive Authentication。
单击Realm & Settings选项卡并选择以前创建的领域。完成后单击Add。
4. 单击Save。
5. 导航到策略>访问控制>访问控制。
6. 编辑在其下配置FTD的访问控制策略。
7. 单击Identity Policy旁边的值。
选择之前创建的身份策略,然后单击确定。
8. 单击添加规则创建新的ACP规则。这些步骤将创建一个规则,以允许AnyConnect管理员组中的用户使用RDP连接到内部网络中的设备。
指定规则的名称。确保规则为Enabled且具有适当的Action。
在Zones选项卡下,为相关流量指定适当的区域。
用户发起的RDP流量进入来自外部区域接口的FTD,然后流出内部区域。
在Networks下,定义源网络和目标网络。
对象AnyConnect_Pool包括分配给AnyConnect客户端的IP地址。
对象Inside_Net包括内部网络子网。
在Users下,在Available Realms下点击之前创建的领域,在Available Users下点击适当的组/用户,然后点击Add to Rule。
如果Available Users部分下没有可用的用户或组,请确保FMC在领域部分下下载了Users和Groups,并且包含相应的Groups/User。
从源角度检查此处指定的用户/组。
例如,根据此规则到目前为止所定义的内容,FTD评估流量是否源自外部区域并指定到内部区域,从AnyConnect_Pools对象中的网络指定到Inside_Net对象中的网络,并且流量是否来自AnyConnect Admins组中的用户。
在Ports下,创建并添加了自定义RDP对象,以允许TCP和UDP端口3389。请注意,原本可以将RDP添加到Applications部分下,但为简单起见,只检查端口。
最后,确保在Logging下,选中Log at End of Connection,以便稍后进行其他验证。完成后单击Add。
9. 为HTTP访问创建了一个附加规则,以允许组AnyConnect中的用户访问Windows Server IIS网站。Click Save.
如果有影响AnyConnect流量的NAT规则(如互联网PAT规则),则配置NAT免除规则非常重要,这样才能使AnyConnect流量不会受NAT影响。
1. 导航到设备> NAT。
选择应用于FTD的NAT策略。
2. 在此NAT策略中,在末尾有一个动态PAT,该PAT会影响从外部接口传出到外部接口的所有流量(包括AnyConnect流量)。
要防止AnyConnect流量受NAT影响,请单击Add Rule。
3. 配置NAT免除规则,确保该规则是手动的NAT规则,并且类型为Static。这是应用于AnyConnect流量的双向NAT规则。
借助这些设置,当FTD检测到源自Inside_Net并发往AnyConnect IP地址(由AnyConnect_Pool定义)的流量时,当流量进入inside_zone并退出outside_zone时,源设备会被转换为同一值(Inside_Net),目标设备会被转换为同一值(AnyConnect_Pool)。在满足这些条件时,这实际上会绕过NAT。
此外,FTD设置为对此流量执行路由查找,而不是代理ARP。完成后单击确定。
4. 单击Save。
1. 完成配置后,单击Deploy。
2. 单击将配置应用于其FTD旁的复选框,然后单击Deploy。
> show running-configuration aaa-server aaa-server LAB-AD protocol ldap max-failed-attempts 4 realm-id 5 aaa-server LAB-AD host win2016.example.com server-port 389 ldap-base-dn DC=example,DC=com ldap-group-base-dn DC=example,DC=com ldap-scope subtree ldap-naming-attribute samaccountname ldap-login-password ***** ldap-login-dn ftd.admin@example.com server-type microsoft
> show running-config webvpn webvpn enable Outside anyconnect image disk0:/csm/anyconnect-linux64-4.7.03052-webdeploy-k9.pkg 1 regex "Linux" anyconnect image disk0:/csm/anyconnect-win-4.7.00136-webdeploy-k9.pkg 2 regex "Windows" anyconnect profiles Lab disk0:/csm/lab.xml anyconnect enable tunnel-group-list enable cache no disable error-recovery disable > show running-config tunnel-group tunnel-group General type remote-access tunnel-group General general-attributes address-pool AnyConnect-Pool authentication-server-group LAB-AD tunnel-group General webvpn-attributes group-alias General enable > show running-config group-policy group-policy DfltGrpPolicy attributes vpn-simultaneous-logins 10 vpn-tunnel-protocol ikev2 ssl-client split-tunnel-policy tunnelspecified split-tunnel-network-list value Lab user-authentication-idle-timeout none webvpn anyconnect keep-installer none anyconnect modules value dart anyconnect ask none default anyconnect http-comp none activex-relay disable file-entry disable file-browsing disable url-entry disable deny-message none anyconnect ssl df-bit-ignore enable > show running-config ssl ssl trust-point FTD-2-SelfSigned outside
用户IT管理员位于AnyConnect Admins组中,该组对Windows服务器具有RDP访问权限。但它无权访问HTTP。
打开与此服务器的RDP和Firefox会话将验证此用户是否只能通过RDP访问服务器。
如果使用AnyConnect用户组(作为HTTP访问但不是RDP访问)中的用户测试用户登录,则可以验证访问控制策略规则是否生效。
由于已在访问控制策略规则中启用日志记录,因此可以检查与这些规则匹配的任何流量的连接事件。
导航到分析>连接>事件。
在连接事件表视图下,日志将过滤为仅显示IT管理员的连接事件。
在这里,您可以验证是否允许流向服务器的RDP流量(TCP和UDP 3389),但端口80流量被阻止。
对于用户Test User,您可以验证到服务器的RDP流量是否被阻止以及端口80流量是否获得允许。
此调试可以在诊断CLI中运行,以排除LDAP身份验证相关的问题:debug ldap 255。
要对用户身份访问控制策略问题进行故障排除,可以在clish中运行system support firewall-engine-debug,以确定流量被意外允许或阻止的原因。
[53] Session Start [53] New request Session, context 0x00002b1d13f4bbf0, reqType = Authentication [53] Fiber started [53] Creating LDAP context with uri=ldap://192.168.1.1:389 [53] Connect to LDAP server: ldap://192.168.1.1:389, status = Successful [53] supportedLDAPVersion: value = 3 [53] supportedLDAPVersion: value = 2 [53] LDAP server 192.168.1.1 is Active directory [53] Binding as ftd.admin@example.com [53] Performing Simple authentication for ftd.admin@example.com to 192.168.1.1 [53] LDAP Search: Base DN = [DC=example,DC=com] Filter = [sAMAccountName=it.admin] Scope = [SUBTREE] [53] User DN = [CN=IT Admin,CN=Users,DC=example,DC=com] [53] Talking to Active Directory server 192.168.1.1 [53] Reading password policy for it.admin, dn:CN=IT Admin,CN=Users,DC=example,DC=com [53] Read bad password count 6 [53] Binding as it.admin [53] Performing Simple authentication for it.admin to 192.168.1.1 [53] Processing LDAP response for user it.admin [53] Message (it.admin): [53] Authentication successful for it.admin to 192.168.1.1 [53] Retrieved User Attributes: [53] objectClass: value = top [53] objectClass: value = person [53] objectClass: value = organizationalPerson [53] objectClass: value = user [53] cn: value = IT Admin [53] sn: value = Admin [53] givenName: value = IT [53] distinguishedName: value = CN=IT Admin,CN=Users,DC=example,DC=com [53] instanceType: value = 4 [53] whenCreated: value = 20200421025811.0Z [53] whenChanged: value = 20200421204622.0Z [53] displayName: value = IT Admin [53] uSNCreated: value = 25896 [53] memberOf: value = CN=AnyConnect Admins,CN=Users,DC=example,DC=com [53] uSNChanged: value = 26119 [53] name: value = IT Admin [53] objectGUID: value = &...J..O..2w...c [53] userAccountControl: value = 512 [53] badPwdCount: value = 6 [53] codePage: value = 0 [53] countryCode: value = 0 [53] badPasswordTime: value = 132320354378176394 [53] lastLogoff: value = 0 [53] lastLogon: value = 0 [53] pwdLastSet: value = 132319114917186142 [53] primaryGroupID: value = 513 [53] objectSid: value = .............{I...;.....j... [53] accountExpires: value = 9223372036854775807 [53] logonCount: value = 0 [53] sAMAccountName: value = it.admin [53] sAMAccountType: value = 805306368 [53] userPrincipalName: value = it.admin@example.com [53] objectCategory: value = CN=Person,CN=Schema,CN=Configuration,DC=example,DC=com [53] dSCorePropagationData: value = 16010101000000.0Z [53] lastLogonTimestamp: value = 132319755825875876 [53] Fiber exit Tx=515 bytes Rx=2659 bytes, status=1 [53] Session End
[-2147483611] Session Start [-2147483611] New request Session, context 0x00007f9e65ccdc40, reqType = Authentication [-2147483611] Fiber started [-2147483611] Creating LDAP context with uri=ldap://171.16.1.1:389 [-2147483611] Connect to LDAP server: ldap://172.16.1.1:389, status = Failed [-2147483611] Unable to read rootDSE. Can't contact LDAP server. [-2147483611] Fiber exit Tx=0 bytes Rx=0 bytes, status=-2 [-2147483611] Session End
可能的解决方案:
[-2147483615] Session Start [-2147483615] New request Session, context 0x00007f9e65ccdc40, reqType = Authentication [-2147483615] Fiber started [-2147483615] Creating LDAP context with uri=ldap://192.168.1.1:389 [-2147483615] Connect to LDAP server: ldap://192.168.1.1:389, status = Successful [-2147483615] defaultNamingContext: value = DC=example,DC=com [-2147483615] supportedLDAPVersion: value = 3 [-2147483615] supportedLDAPVersion: value = 2 [-2147483615] LDAP server 192.168.1.1 is Active directory [-2147483615] supportedSASLMechanisms: value = GSSAPI [-2147483615] supportedSASLMechanisms: value = GSS-SPNEGO [-2147483615] supportedSASLMechanisms: value = EXTERNAL [-2147483615] supportedSASLMechanisms: value = DIGEST-MD5 [-2147483615] Binding as ftd.admin@example.com [-2147483615] Performing Simple authentication for ftd.admin@example.com to 192.168.1.1 [-2147483615] Simple authentication for ftd.admin@example.com returned code (49) Invalid credentials [-2147483615] Failed to bind as administrator returned code (-1) Can't contact LDAP server [-2147483615] Fiber exit Tx=186 bytes Rx=744 bytes, status=-2 [-2147483615] Session End
可能的解决方案:验证登录DN和登录密码是否已正确配置。这可以在AD服务器上通过ldp.exe进行验证。要验证帐户是否可以使用ldp成功绑定,请完成以下步骤:
1. 在AD服务器上,按Win+R并搜索ldp.exe
2. 在连接下,选择连接。
3. 为服务器和相应的端口指定localhost,然后单击OK。
4. 右列显示指示连接成功的文本。导航到Connection > Bind。
5. 选择简单绑定,然后指定目录帐户用户和口令。Click OK.
成功绑定后,ldp显示身份:DOMAIN\username
尝试使用无效的用户名或密码进行绑定会导致失败,例如此处看到的两个。
[-2147483612] Session Start [-2147483612] New request Session, context 0x00007f9e65ccdc40, reqType = Authentication [-2147483612] Fiber started [-2147483612] Creating LDAP context with uri=ldap://192.168.1.1:389 [-2147483612] Connect to LDAP server: ldap://192.168.1.1:389, status = Successful [-2147483612] supportedLDAPVersion: value = 3 [-2147483612] supportedLDAPVersion: value = 2 [-2147483612] LDAP server 192.168.1.1 is Active directory [-2147483612] Binding as ftd.admin@example.com [-2147483612] Performing Simple authentication for ftd.admin@example.com to 192.168.1.1 [-2147483612] LDAP Search: Base DN = [dc=example,dc=com] Filter = [samaccountname=it.admi] Scope = [SUBTREE] [-2147483612] Search result parsing returned failure status [-2147483612] Talking to Active Directory server 192.168.1.1 [-2147483612] Reading password policy for it.admi, dn: [-2147483612] Binding as ftd.admin@example.com [-2147483612] Performing Simple authentication for ftd.admin@example.com to 192.168.1.1 [-2147483612] Fiber exit Tx=456 bytes Rx=1082 bytes, status=-1 [-2147483612] Session End
潜在解决方案:验证AD是否能通过由FTD完成的搜索找到用户。这也可以使用ldp.exe完成。
1. 如上所示成功绑定之后,请导航到视图>树。
2. 指定在FTD上配置的Base DN,然后单击OK
3. 右键单击Base DN,然后单击搜索。
4. 指定与调试中看到的Base DN、Filter和Scope值相同。
在本例中,包括:
ldp发现0个条目,因为Base DN dc=example,dc=com下没有带有sAMAccountname it.admi的用户帐户。
使用正确的sAMAccountname it.admin进行的另一个尝试显示不同的结果。ldp在Base DN dc=example,dc=com下查找1个条目并打印该用户DN。
[-2147483613] Session Start [-2147483613] New request Session, context 0x00007f9e65ccdc40, reqType = Authentication [-2147483613] Fiber started [-2147483613] Creating LDAP context with uri=ldap://192.168.1.1:389 [-2147483613] Connect to LDAP server: ldap://192.168.1.1:389, status = Successful [-2147483613] supportedLDAPVersion: value = 3 [-2147483613] supportedLDAPVersion: value = 2 [-2147483613] LDAP server 192.168.1.1 is Active directory [-2147483613] Binding as ftd.admin@example.com [-2147483613] Performing Simple authentication for ftd.admin@example.com to 192.168.1.1 [-2147483613] LDAP Search: Base DN = [dc=example,dc=com] Filter = [samaccountname=it.admin] Scope = [SUBTREE] [-2147483613] User DN = [CN=IT Admin,CN=Users,DC=example,DC=com] [-2147483613] Talking to Active Directory server 192.168.1.1 [-2147483613] Reading password policy for it.admin, dn:CN=IT Admin,CN=Users,DC=example,DC=com [-2147483613] Read bad password count 0 [-2147483613] Binding as it.admin [-2147483613] Performing Simple authentication for it.admin to 192.168.1.1 [-2147483613] Simple authentication for it.admin returned code (49) Invalid credentials [-2147483613] Message (it.admin): 80090308: LdapErr: DSID-0C09042A, comment: AcceptSecurityContext error, data 52e, v3839 [-2147483613] Invalid password for it.admin [-2147483613] Fiber exit Tx=514 bytes Rx=2764 bytes, status=-1 [-2147483613] Session End
可能的解决方案:验证用户密码配置正确且未过期。与登录DN类似,FTD使用用户凭证对AD执行绑定。
此绑定也可以在ldp中完成,以验证AD是否能够识别相同的用户名和密码凭证。ldp中的步骤在绑定登录DN和/或口令错误部分显示。
此外,还可以查看Microsoft服务器事件查看器日志,了解潜在的故障原因。
test aaa-server命令可用于使用特定用户名和密码模拟从FTD进行的身份验证尝试。这可用于测试连接或身份验证失败。命令为test aaa-server authentication [AAA-server] host [AD IP/hostname]。
> show running-configuration aaa-server aaa-server LAB-AD protocol ldap realm-id 7 aaa-server LAB-AD host win2016.example.com server-port 389 ldap-base-dn DC=example,DC=com ldap-scope subtree ldap-login-password ***** ldap-login-dn ftd.admin@example.com server-type auto-detect > test aaa-server authentication LAB-AD host win2016.example.com Username: it.admin Password: ******** INFO: Attempting Authentication test to IP address (192.168.1.1) (timeout: 12 seconds) INFO: Authentication Successful
数据包捕获可用于验证与AD服务器的可达性。如果LDAP数据包离开FTD,但没有响应,则可能表示存在路由问题。
捕获显示双向LDAP流量。
> show route 192.168.1.1 Routing entry for 192.168.1.0 255.255.255.0 Known via "connected", distance 0, metric 0 (connected, via interface) Routing Descriptor Blocks: * directly connected, via inside Route metric is 0, traffic share count is 1 > capture AD interface inside match tcp any host 192.168.1.1 eq 389 > show capture capture AD type raw-data interface inside [Capturing - 0 bytes] match tcp any host 192.168.1.1 eq ldap > test aaa-server authentication LAB-AD host win2016.example.com username it.admin password ****** INFO: Attempting Authentication test to IP address (192.168.1.1) (timeout: 12 seconds) INFO: Authentication Successful > show capture capture AD type raw-data interface inside [Capturing - 10905 bytes] match tcp any host 192.168.1.1 eq ldap > show capture AD 54 packets captured 1: 23:02:16.770712 192.168.1.17.61960 > 192.168.1.1.389: S 3681912834:3681912834(0) win 32768 <mss 1460,nop,nop,timestamp 1061373057 0> 2: 23:02:16.772009 192.168.1.1.389 > 192.168.1.17.61960: S 491521506:491521506(0) ack 3681912835 win 8192 <mss 1460,nop,nop,timestamp 762393884 1061373057> 3: 23:02:16.772039 192.168.1.17.61960 > 192.168.1.1.389: . ack 491521507 win 32768 <nop,nop,timestamp 1061373058 762393884> 4: 23:02:16.772482 192.168.1.17.61960 > 192.168.1.1.389: P 3681912835:3681912980(145) ack 491521507 win 32768 <nop,nop,timestamp 1061373059 0> 5: 23:02:16.772924 192.168.1.1.389 > 192.168.1.17.61960: P 491521507:491522141(634) ack 3681912980 win 65160 <nop,nop,timestamp 762393885 1061373059> 6: 23:02:16.772955 192.168.1.17.61960 > 192.168.1.1.389: . ack 491522141 win 32768 <nop,nop,timestamp 1061373059 762393885> 7: 23:02:16.773428 192.168.1.17.61960 > 192.168.1.1.389: P 3681912980:3681913024(44) ack 491522141 win 32768 <nop,nop,timestamp 1061373060 0> 8: 23:02:16.775030 192.168.1.1.389 > 192.168.1.17.61960: P 491522141:491522163(22) ack 3681913024 win 65116 <nop,nop,timestamp 762393887 1061373060> 9: 23:02:16.775075 192.168.1.17.61960 > 192.168.1.1.389: . ack 491522163 win 32768 <nop,nop,timestamp 1061373061 762393887> [...] 54 packets shown
AD服务器上的Event Viewer日志可以提供有关失败原因的更详细信息。
1. 搜索并打开事件查看器。
2. 展开Windows Logs并单击Security。使用用户帐户名称搜索Audit Failures并查看Failure信息。
An account failed to log on. Subject: Security ID: SYSTEM Account Name: WIN2016$ Account Domain: EXAMPLE Logon ID: 0x3E7 Logon Type: 3 Account For Which Logon Failed: Security ID: NULL SID Account Name: it.admin Account Domain: EXAMPLE Failure Information: Failure Reason: The specified user account has expired. Status: 0xC0000193 Sub Status: 0x0 Process Information: Caller Process ID: 0x25c Caller Process Name: C:\Windows\System32\lsass.exe Network Information: Workstation Name: WIN2016 Source Network Address: 192.168.1.17 Source Port: 56321
版本 | 发布日期 | 备注 |
---|---|---|
3.0 |
23-Apr-2024 |
重新认证 |
1.0 |
22-Mar-2021 |
初始版本 |