双身份验证代理不适用于 PANOS 8.1.7 或以上
15921
Created On 04/29/20 20:24 PM - Last Modified 02/05/25 03:52 AM
Symptom
- 升级 PANOS 到 8.1.7 或以上后,管理员无法 firewall 通过身份验证登录到 LDAP 承载 Duo 身份验证代理服务的身份验证服务器。
- 当管理员尝试登录 firewall 时,他们会获得 Duo 推送,当他们点击时,批准登录屏幕的用户名和密码部分将重置字段,并说"无效的用户名和密码"。
- Firewall"系统日志"将显示一个日志,其中指出" LDAP 身份验证服务器已关闭",但事实并非如此。
Environment
- PAN-OS:8.1.7或以上。
- 帕洛阿尔托 Firewall .
- 承载双身份验证代理服务的身份验证服务器。
- 协议: LDAP .
Cause
- 此问题是由于在协议的 8.1.7 版本中添加了主动修复 LDAP 。
- 根据 LDAP 协议,一旦绑定到特定用户(当前身份验证反对该用户),我们就可以绑定回绑定/bindpw 以进行未来的 LDAP 操作。
- 在 8.1.7 版本之前,在验证最终用户身份验证(搜索最终用户的 dn 并与最终用户的密码结合)后,authd 确实 ONE 会与绑定/绑定/绑定 ddpw 绑定时间,但不会检查它是否成功。它只是将最终用户的身份验证成功/失败返回到上层过程。
奥思德日志:
debug: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1203): User "test.user" is ACCEPTED (msgid = 4, LDAPp=0x13b2820) debug: _get_AD_passwd_exp_in_days(pan_authd_shared_ldap.c:86): userAccountControl = 512 (not never expire) debug: _get_AD_passwd_exp_in_days(pan_authd_shared_ldap.c:95): Password doesn't expire for "test.user" by maxPwdAge debug: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1235): Got user expire-in-days: -1 (-1 means no expiration), passwd_exp in auth profile: 7 debug: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1279): binding back to binddn: cn=***********,ou=*********,ou=********,dc=*********,dc=*** debug: pan_authd_ldap_bind(pan_authd_shared_ldap.c:614): binding with binddn cn=***********,ou=*********,ou=********,dc=*********,dc=*** Error: _get_ldap_result(pan_authd_shared_ldap.c:569): ldap op failed Can't contact LDAP server Error: pan_authd_ldap_bind(pan_authd_shared_ldap.c:629): failed to get ldap result Error: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1282): Failed to rebind, get out debug: pan_auth_response_process(pan_auth_state_engine.c:4271): auth status: auth success
- 从 8.1.7 版本开始,在验证最终用户身份验证(搜索最终用户的 dn 并与最终用户的密码绑定)后,authd 最多会 THREE 与绑定/bindpw 绑定到绑定/bindpw 直到成功(以防网络非常不稳定)。即使3次尝试后,如果绑定绑定/bindpw失败,authd将返回"需要重新连接到 LDAP 服务器"到上层,并会认为连接没有用处。
奥思德日志:
debug: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1232): User "test.user" is ACCEPTED (msgid = 4, LDAPp=0x1db04e0) debug: _get_AD_passwd_exp_in_days(pan_authd_shared_ldap.c:88): userAccountControl = 512 (not never expire) debug: _get_AD_passwd_exp_in_days(pan_authd_shared_ldap.c:136): pwdlastset: 13197988228 seconds since January 1, 1601 (UTC) debug: _get_AD_passwd_exp_in_days(pan_authd_shared_ldap.c:155): AD pwd expires in days 37 (max 255 warning limit) debug: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1264): Got user expire-in-days: -1 (-1 means no expiration), passwd_exp in auth profile: 7 debug: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1312): binding back to binddn: cn=***********,ou=*********,ou=********,dc=*********,dc=*** debug: pan_authd_ldap_bind(pan_authd_shared_ldap.c:630): binding with binddn binding back to binddn: cn=***********,ou=*********,ou=********,dc=*********,dc=*** Error: _get_ldap_result(pan_authd_shared_ldap.c:585): ldap op failed Can't contact LDAP server Error: pan_authd_ldap_bind(pan_authd_shared_ldap.c:645): failed to get ldap result Error: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1315): Failed to rebind back to binddn (Try 1) debug: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1312): binding back to binddn: binding back to binddn: cn=***********,ou=*********,ou=********,dc=*********,dc=*** debug: pan_authd_ldap_bind(pan_authd_shared_ldap.c:630): binding with binddn binding back to binddn: cn=***********,ou=*********,ou=********,dc=*********,dc=*** Error: pan_authd_ldap_bind(pan_authd_shared_ldap.c:639): Failed to bind ldap (Can't contact LDAP server) Error: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1315): Failed to rebind back to binddn (Try 2) debug: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1312): binding back to binddn: binding back to binddn: cn=***********,ou=*********,ou=********,dc=*********,dc=*** debug: pan_authd_ldap_bind(pan_authd_shared_ldap.c:630): binding with binddn binding back to binddn: cn=***********,ou=*********,ou=********,dc=*********,dc=*** Error: pan_authd_ldap_bind(pan_authd_shared_ldap.c:639): Failed to bind ldap (Can't contact LDAP server) Error: pan_authd_ldap_authenticate(pan_authd_shared_ldap.c:1315): Failed to rebind back to binddn (Try 3) Error: _generate_bind_back_to_binddn_fail_log(pan_authd_shared_ldap.c:1043): 3 tries to bind back to binddn failed: basedn: DC=*********,DC=*** ; binddn: cn=***********, ou=*********,ou=********,dc=*********,dc=*** ; bind_timelimit 30 ; ip: 192.168.43.29 ; uri: ldap://192.168.43.29:389 Error: _start_sync_auth(pan_auth_service_handle.c:603): LDAP auth: "Can't contact LDAP server" against 192.168.43.29:389 with 0th VOIDp=0x1db04e0 Error: _start_sync_auth(pan_auth_service_handle.c:606): -> enter into retry interval (wait for 60 sec) LDAP auth server 192.168.43.29 is down !!!
- 默认情况下, DUO 不支持在用户身份验证后绑定回绑定/绑定。 这会导致绑定回绑定/绑定失败,因此,管理身份验证失败。
Resolution
- 根据 LDAP 协议,将绑定回绑定/绑定可以在连接内按需要多次完成。因此,必须 DUO 完成更改,这可以通过将配置更改应用到 Duo 代理配置文件来实现。 客户需要联系 DUO 支持团队以获取有关这些更改的更多信息。
OR
- 使用 RADIUS 双身份验证代理服务与身份验证服务器进行通信。
Additional Information
什么是绑定回绑定/绑定?
- 在 LDAP firewall 与身份验证服务器之间的初始连接中 LDAP ,身份验证将 BIND 使用绑定/绑定。 此 BIND 操作有助于 firewall 对目录服务器进行身份验证,并建立用于后续操作的授权标识。
- 当用户提供 LDAP 凭据时,authd 将通过搜索用户的 dn 并将其与用户的 pw 绑定并将其发送到身份验证服务器来验证最终用户 LDAP 。 LDAP 身份验证服务器将相应地响应它。
- 用户经过身份验证后,authd 将绑定回绑定/绑定。
- 这有助于身份验证保持一个 LDAP 连接,并将其重复使用以进行数百万次身份验证,以便具有较高的吞吐量。
- 如果绑定回绑定/bindpw 不是身份验证代码的一部分,则需要 LDAP 为每个身份验证创建一个新连接,然后拆下连接。