Puncte:2

libpam-ldapd - Autentificarea LDAP pe Debian 11 nu funcționează

drapel ke

Am mai văzut aici câteva alte întrebări referitoare la o problemă similară - dar nu am găsit ceva care să funcționeze cu adevărat pentru mine.

Scopul meu este de a autentifica (în principal pentru SSH) toate mașinile Debian împotriva unui director UCS (OpenLDAP) - în viitor numai atunci când utilizatorul este membru al unui anumit grup ldap. Dar în prezent mă străduiesc să funcționeze chiar și fără a fi membru de grup.

Intotdeauna primesc eroarea:

nslcd: [7b23c6] <authc="test"> DEBUG: ldap_sasl_bind("uid=test,cn=users,dc=securitywho,dc=local","***") (uri="ldap://ldap. securitywho.local") (ppolicy=yes)
nslcd: [7b23c6] <authc="test"> DEBUG: rezultat ldap_parse_result(): acreditări nevalide
nslcd: [7b23c6] <authc="test"> DEBUG: nu s-a putut lega la serverul LDAP ldap://ldap.securitywho.local: Acreditări nevalide
nslcd: [7b23c6] <authc="test"> DEBUG: ldap_unbind()
nslcd: [7b23c6] <authc="test"> uid=test,cn=users,dc=securitywho,dc=local: acreditări nevalide
nslcd: [7b23c6] <authc="test"> DEBUG: myldap_search(base="cn=users,dc=securitywho,dc=local", filter="(&(objectClass=*)(uid=test))")
nslcd: [7b23c6] <authc="test"> DEBUG: ldap_result(): uid=test,cn=users,dc=securitywho,dc=local

Utilizatorul bind funcționează, am verificat totul cu o comandă ldapsearch - acolo totul funcționează bine cu utilizatorul bind și dacă folosesc o parolă greșită, depanarea arată o eroare că funcția de legare nu funcționează.

Ldapsearch a folosit - și funcționează:

ldapsearch -x -H ldap://ldap.securitywho.local -D "uid=srv_linux,cn=users,dc=securitywho,dc=local" -b cn=users,dc=securitywho,dc=local -W

Snip de la ieșire:

# test, utilizatori, securitywho.local
dn: uid=test,cn=users,dc=securitywho,dc=local
krb5MaxLife: 86400
krb5MaxRenew: 604800
uid: test
Număr uid: 2008
sn: test
gecos: test
displayName: test
homeDirectory: /home/test
loginShell: /bin/bash
mailForwardCopyToSelf: 0
cn: test
krb5PrincipalName: [email protected]
shadowLastChange: 18992
sambaBadPasswordCount: 0
sambaBadPasswordTime: 0
sambaActFlags: [U ]
objectClass: shadowAccount
objectClass: top
objectClass: sambaSamAccount
objectClass: montare automată
objectClass: univentionPWHistory
objectClass: persoană
objectClass: krb5KDCEntry
objectClass: univentionObject
objectClass: inetOrgPerson
objectClass: krb5Principal
objectClass: organizationalPerson
objectClass: univentionMail
objectClass: posixAccount
sambaSID: S-1-5-21-258973841-725078507-1497259816-5016
gidNumăr: 5001
sambaPrimaryGroupSID: S-1-5-21-258973841-725078507-1497259816-513
univentionObjectType: utilizatori/utilizator

Doar pentru a verifica dacă testuser-ul meu funcționează, am rulat comanda ldapsearch cu testuser - totul a funcționat și aici. Am verificat că cu mai multe conturi în directorul OpenLDAP, toate au funcționat aici, dar niciunul când am încercat pentru SSH.

ldapsearch -x -H ldap://ldap.securitywho.local -D "uid=test,cn=users,dc=securitywho,dc=local" -b cn=users,dc=securitywho,dc=local -W

Configurați /etc/nslcd.conf

# /etc/nslcd.conf
# fișier de configurare nslcd. Vezi nslcd.conf(5)
# pentru detalii.

# Utilizatorul și grupul nslcd ar trebui să ruleze ca.
uid nslcd
gid nslcd

# Locația în care serverele LDAP ar trebui să fie accesibile.
uri ldap://ldap.securitywho.local

# Baza de căutare care va fi utilizată pentru toate interogările.
baza cn=utilizatori,dc=securitywho,dc=local

# Versiunea protocolului LDAP de utilizat.
#ldap_versiunea 3

# DN-ul cu care să se lege pentru căutări normale.
binddn uid=srv_linux,cn=users,dc=securitywho,dc=local
bindpw <CUVOLA SUPERSEGURETĂ>

# DN-ul folosit pentru modificările parolei de către root.
#rootpwmoddn cn=admin,dc=exemplu,dc=com

# opțiuni SSL
#ssl dezactivat
#tls_reqcert niciodată
#tls_cacertfile /etc/ssl/certs/ca-certificates.crt

# Domeniul de căutare.
#scop sub
filtru passwd (objectClass=*)
map passwd uid uid

filtru umbră (objectClass=*)
map shadow uid uid

Ieșire completă de depanare a nslcd:

root@ipam:~# nslcd -d
nslcd: DEBUG: NSS_LDAP nss-pam-ldapd 0.9.11
nslcd: DEBUG: CFG: fire 5
nslcd: DEBUG: CFG: uid nslcd
nslcd: DEBUG: CFG: gid 117
nslcd: DEBUG: CFG: uri ldap://ldap.securitywho.local
nslcd: DEBUG: CFG: ldap_version 3
nslcd: DEBUG: CFG: binddn uid=srv_linux,cn=users,dc=securitywho,dc=local
nslcd: DEBUG: CFG: bindpw ***
nslcd: DEBUG: CFG: baza cn=users,dc=securitywho,dc=local
nslcd: DEBUG: CFG: scope sub
nslcd: DEBUG: CFG: deref niciodată
nslcd: DEBUG: CFG: trimiteri da
nslcd: DEBUG: CFG: filtru alias (objectClass=nisMailAlias)
nslcd: DEBUG: CFG: filtru eteri (objectClass=ieee802Device)
nslcd: DEBUG: CFG: grup de filtre (objectClass=posixGroup)
nslcd: DEBUG: CFG: filtru gazde (objectClass=ipHost)
nslcd: DEBUG: CFG: filtrare netgroup (objectClass=nisNetgroup)
nslcd: DEBUG: CFG: rețele de filtrare (objectClass=ipNetwork)
nslcd: DEBUG: CFG: filter passwd (objectClass=*)
nslcd: DEBUG: CFG: protocoale de filtrare (objectClass=ipProtocol)
nslcd: DEBUG: CFG: filtru rpc (objectClass=oncRpc)
nslcd: DEBUG: CFG: servicii de filtrare (objectClass=ipService)
nslcd: DEBUG: CFG: filtru umbră (objectClass=*)
nslcd: DEBUG: CFG: grup de hartă userPassword „*”
nslcd: DEBUG: CFG: map passwd userPassword "*"
nslcd: DEBUG: CFG: map passwd gecos "${gecos:-$cn}"
nslcd: DEBUG: CFG: umbră hartă parola utilizatorului „*”
nslcd: DEBUG: CFG: hartă shadow shadowLastChange „${shadowLastChange:--1}”
nslcd: DEBUG: CFG: map shadow shadowMin "${shadowMin:--1}"
nslcd: DEBUG: CFG: hartă shadow shadowMax „${shadowMax:--1}”
nslcd: DEBUG: CFG: map shadow shadowWarning „${shadowWarning:--1}”
nslcd: DEBUG: CFG: map shadow shadowInactive „${shadowInactive:--1}”
nslcd: DEBUG: CFG: map shadow shadowExpire „${shadowExpire:--1}”
nslcd: DEBUG: CFG: map shadow shadowFlag „${shadowFlag:-0}”
nslcd: DEBUG: CFG: pam_authc_ppolicy da
nslcd: DEBUG: CFG: bind_timelimit 10
nslcd: DEBUG: CFG: limită de timp 0
nslcd: DEBUG: CFG: idle_timelimit 0
nslcd: DEBUG: CFG: reconnect_sleeptime 1
nslcd: DEBUG: CFG: reconnect_retrytime 10
nslcd: DEBUG: CFG: ssl dezactivat
nslcd: DEBUG: CFG: cerere tls_reqcert
nslcd: DEBUG: CFG: dimensiunea paginii 0
nslcd: DEBUG: CFG: nss_min_uid 0
nslcd: DEBUG: CFG: nss_uid_offset 0
nslcd: DEBUG: CFG: nss_gid_offset 0
nslcd: DEBUG: CFG: nss_nested_groups nr
nslcd: DEBUG: CFG: nss_getgrent_skipmembers nr
nslcd: DEBUG: CFG: nss_disable_enumeration nr
nslcd: DEBUG: CFG: validnames /^[a-z0-9._@$()]([a-z0-9._@$() \~-]*[a-z0-9._@$ ()~-])?$/i
nslcd: DEBUG: CFG: ignorecase nr
nslcd: DEBUG: CFG: pam_authc_search BASE
nslcd: DEBUG: CFG: cache dn2uid 15m 15m
nslcd: pornește versiunea 0.9.11
nslcd: DEBUG: initgroups("nslcd",117) terminat
nslcd: DEBUG: setgid(117) terminat
nslcd: DEBUG: setuid(110) terminat
nslcd: DEBUG: unlink() of /var/run/nslcd/socket failed (ignorat): Nu există un astfel de fișier sau director
nslcd: acceptarea conexiunilor
nslcd: [8b4567] DEBUG: conexiune de la pid=896662 uid=0 gid=0
nslcd: [8b4567] <authc="test"> DEBUG: nslcd_pam_authc("test","sshd","***")
nslcd: [8b4567] <authc="test"> DEBUG: myldap_search(base="cn=users,dc=securitywho,dc=local", filter="(&(objectClass=*)(uid=test))")
nslcd: [8b4567] <authc="test"> DEBUG: ldap_initialize(ldap://ldap.securitywho.local)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_rebind_proc()
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_simple_bind_s("uid=srv_linux,cn=users,dc=securitywho,dc=local","***") (uri="ldap://ldap. securitywho.local")
nslcd: [8b4567] <authc="test"> DEBUG: ldap_result(): uid=test,cn=users,dc=securitywho,dc=local
nslcd: [8b4567] <authc="test"> DEBUG: myldap_search(base="uid=test,cn=users,dc=securitywho,dc=local", filter="(objectClass=*)")
nslcd: [8b4567] <authc="test"> DEBUG: ldap_initialize(ldap://ldap.securitywho.local)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_rebind_proc()
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_sasl_bind("uid=test,cn=users,dc=securitywho,dc=local","***") (uri="ldap://ldap. securitywho.local") (ppolicy=yes)
nslcd: [8b4567] <authc="test"> DEBUG: rezultat ldap_parse_result(): acreditări nevalide
nslcd: [8b4567] <authc="test"> DEBUG: nu s-a putut lega la serverul LDAP ldap://ldap.securitywho.local: Acreditări nevalide
nslcd: [8b4567] <authc="test"> DEBUG: ldap_unbind()
nslcd: [8b4567] <authc="test"> uid=test,cn=users,dc=securitywho,dc=local: acreditări nevalide
nslcd: [8b4567] <authc="test"> DEBUG: myldap_search(base="cn=users,dc=securitywho,dc=local", filter="(&(objectClass=*)(uid=test))")
nslcd: [8b4567] <authc="test"> DEBUG: ldap_result(): uid=test,cn=users,dc=securitywho,dc=local

Ceea ce am încercat a fost să mă joc cu „sfera de căutare” din /etc/nslcd.conf, dar nicio combinație nu a făcut-o să funcționeze. Ceea ce în prezent nu văd nicio problemă de configurare - a avut cineva aceeași problemă sau m-ar putea ajuta? Am instalat totul cu:

apt-get install libpam-ldapd
Puncte:1
drapel ke

După câteva ore, remediile wireshark au arătat că BIND-Request pentru utilizatorul BIND a fost trimis corect la serverul ldap (BIND cu autentificare simplă --> fără criptare). Dar utilizatorul meu de testare nu a trimis parola reală către serverul ldap, asta înseamnă că autentificarea nu trebuia să aibă succes. --> Teste efectuate cu SSH.

Am încercat să mă conectez la consola locală și am văzut că acum autentificarea a avut succes în ceea ce privește depanarea nslcd - dar /var/log/auth.log a arătat:

1 ian 14:01:43 ipam login[489]: pam_unix(login:auth): verificați trecerea; utilizator necunoscut
1 ian 14:01:43 ipam login[489]: pam_unix(login:auth): eșec de autentificare; logname=LOGIN uid=0 euid=0 tty=/dev/tty1 ruser= rhost=
1 ianuarie 14:01:43 ipam login[489]: pam_unix(login:account): nu a putut identifica utilizatorul (din getpwnam(test))
1 ianuarie 14:01:43 ipam login[489]: Eroare de autentificare

Dar acum totul funcționează bine - cum l-am reparat? --> Reporniți.

Nu mai trebuiau făcute modificări de configurare, configurația mea din postarea inițială a fost corectă și funcționează bine acum.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.