LdapErr:DSID-0C0903AA,数据 52e:使用 pam_ldap 针对 AD '08 进行身份验证

LdapErr:DSID-0C0903AA,数据 52e:使用 pam_ldap 针对 AD '08 进行身份验证

我对我正在尝试进行身份验证的 AD '08 服务器具有完全管理员访问权限。

错误代码意味着凭证无效,但我希望这就像我输入错误的密码一样简单。

首先,我有一个针对同一个域的有效 Apache mod_ldap 配置。

AuthType basic
AuthName "MYDOMAIN"
AuthBasicProvider ldap
AuthLDAPUrl "ldap://10.220.100.10/OU=Companies,MYCOMPANY,DC=southit,DC=inet?sAMAccountName?sub?(objectClass=user)"
AuthLDAPBindDN svc_webaccess_auth
AuthLDAPBindPassword mySvcWebAccessPassword
Require ldap-group CN=Service_WebAccess,OU=Groups,OU=MYCOMPANY,DC=southit,DC=inet

我展示这个是因为它无需使用任何 Kerberos 即可工作,因为许多其他指南都建议对 AD 进行系统身份验证。

现在我想将其转换为 pam_ldap.conf 以便与 OpenSSH 一起使用。

/etc/pam.d/common-auth 部分很简单。

auth sufficient pam_ldap.so debug

此行先于其他行进行处理。

我相信真正的问题是配置pam_ldap.conf。

host 10.220.100.10
base OU=Companies,MYCOMPANY,DC=southit,DC=inet
ldap_version 3
binddn svc_webaccess_auth
bindpw mySvcWebAccessPassword

scope sub
timelimit 30

pam_filter objectclass=User

nss_map_attribute uid sAMAccountName
pam_login_attribute sAMAccountName
pam_password ad

现在,我一直在使用 wireshark 监控 AD 主机上的 ldap 流量。我已从 Apache 的 mod_ldap 捕获成功会话,并将其与 pam_ldap 失败会话进行了比较。

第一个 bindrequest 使用 svc_webaccess_auth 帐户成功,searchrequest 成功并返回结果 1。最后一个使用我的用户的 bindrequest 失败并返回上述错误代码。

除了搜索请求过滤器中的这一行(这里显示 mod_ldap)之外,所有内容看起来都相同。

Filter: (&(objectClass=user)(sAMAccountName=ivasta))

第二个是pam_ldap。

Filter: (&(&(objectclass=User)(objectclass=User))(sAMAccountName=ivasta))

我的用户名是 ivasta。但是,searchrequest 没有返回失败,而是返回了 1 个结果。我也在 cli 上使用 ldapsearch 尝试过此操作。

搜索请求 (searchrequest) 之后的绑定请求 (bindrequest) 失败,并出现上述错误代码 52e。

这是最终的bindrequest的失败消息。

resultcode: invalidcredentials (49)
80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 52e, v1772

这应该意味着密码无效,但我已经尝试过其他用户使用非常简单的密码。

是否有人从自己与 pam_ldap 和 AD 的斗争中认识到了这一点?

编辑:值得注意的是,我也尝试了 pam_password crypt 和 pam_filter sAMAccountName=User,因为这在使用 ldapsearch 时有效。

ldapsearch -LLL -h 10.220.100.10 -x -b "ou=Users,ou=mycompany,dc=southit,dc=inet" -v -s sub -D svc_webaccess_auth -W '(sAMAccountName=ivasta)'

这可以使用 svc_webaccess_auth 帐户密码来实现。此帐户具有对该 OU 的扫描访问权限,以便与 apache 的 mod_ldap 一起使用。

编辑2:当我登录失败时,这是我在 AD '08 日志中得到的全部内容。

An account failed to log on.

Subject:
    Security ID:        SYSTEM
    Account Name:       WIN-DC02$
    Account Domain:     SOUTHIT
    Logon ID:       0x3e7

Logon Type:         3

Account For Which Logon Failed:
    Security ID:        NULL SID
    Account Name:       ivasta
    Account Domain:     SOUTHIT

Failure Information:
    Failure Reason:     Unknown user name or bad password.
    Status:         0xc000006d
    Sub Status:     0xc000006a

Process Information:
    Caller Process ID:  0x264
    Caller Process Name:    C:\Windows\System32\lsass.exe

Network Information:
    Workstation Name:   WIN-DC02
    Source Network Address: 10.220.100.105
    Source Port:        44565

Detailed Authentication Information:
    Logon Process:      Advapi  
    Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
    Transited Services: -
    Package Name (NTLM only):   -
    Key Length:     0

This event is generated when a logon request fails. It is generated on the computer where access was attempted.

The Subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.

The Logon Type field indicates the kind of logon that was requested. The most common types are 2 (interactive) and 3 (network).

The Process Information fields indicate which account and process on the system requested the logon.

The Network Information fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.

The authentication information fields provide detailed information about this specific logon request.
    - Transited services indicate which intermediate services have participated in this logon request.
    - Package name indicates which sub-protocol was used among the NTLM protocols.
    - Key length indicates the length of the generated session key. This will be 0 if no session key was requested

答案1

我必须夹着尾巴回答这个问题,因为我掌握了一些令人尴尬的内部消息。

我没有意识到你必须在系统上创建一个常规 Unix 用户才能登录。一旦我创建了一个与 ivasta 匹配的用户,我就能够使用该用户的 AD 密码登录。

我唯一不能做的事情就是更改密码,即使使用 pam_password 广告,但这并不重要,因为这仅用于用户名记录目的。

相关内容