web-dev-qa-db-ja.com

LdapErr:DSID-0C0903AA、データ52e:pam_ldapを使用したAD'08に対する認証

認証しようとしているAD'08サーバーへの完全な管理者アクセス権があります。

エラーコード は無効な資格情報を意味しますが、これが間違ったパスワードを入力するのと同じくらい簡単だったらいいのにと思います。

まず、同じドメインに対して動作するApachemod_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

ADへのシステム認証については、他の多くのガイドが推奨しているように、Kerberosを使用しなくても機能するため、これを示しています。

ここで、OpenSSHで使用するためにこれをpam_ldap.confに変換したいと思います。

/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は失敗であり、上記のエラーコードを返します。

Searchrequestのフィルターのこの1行を除いて、すべて同じように見えます。ここではmod_ldapを示しています。

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

2つ目はpam_ldapです。

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

私のユーザーの名前はivastaです。ただし、searchrequestは失敗を返しません。1つの結果を返します。また、CLIでldapsearchを使用してこれを試しました。

上記のエラーコード52eで失敗するのは、searchrequestに続くbindrequestです。

これが最後のbindrequestの失敗メッセージです。

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

これは無効なパスワードを意味するはずですが、私は他のユーザーと非常に単純なパスワードで試しました。

誰かがpam_ldapとADとの彼ら自身の闘争からこれを認識していますか?

編集:注目に値するのは、ldapsearchを使用しているときにこれが機能したため、pam_passwordcryptとpam_filtersAMAccountName = Userも試したことです。

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アカウントのパスワードを使用して機能します。このアカウントは、Apacheのmod_ldapで使用するためにそのOUへのスキャンアクセスを持っています。

Edit2:ログインに失敗したときに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
2
Stefan Midjich

恥ずかしい内部情報があるので、これに答える必要があります。

ログインするには、システム上に通常のUnixユーザーを作成する必要があることに気づきませんでした。 ivastaに一致するユーザーを作成するとすぐに、そのユーザーのADパスワードでログインできました。

私ができないことは、pam_password広告を使用してもパスワードを変更することだけですが、これはユーザー名のログ記録のみを目的としているため、問題ではありません。

1
Stefan Midjich