Nach dem Upgrade auf CentOS 7 ist es nicht mehr möglich, sich über LDAP anzumelden. Mit CentOS 6 habe ich das Paket pam_ldap verwendet, das gut funktioniert hat, aber jetzt ist pam_ldap für die neue Version von CentOS nicht mehr verfügbar.
Die Verbindung über ldapsearch funktioniert immer noch einwandfrei , aber der Versuch, sich über ssh zu authentifizieren, funktioniert nicht.
Ich habe das Paket nss-pam-ldapd neu installiert und die Authentifizierung über authconfig-tui neu konfiguriert , aber es funktioniert immer noch nicht.
Unten ersetze ich meinen Benutzernamen durch user.name und die Basis durch dc = sub, dc = example, dc = org .
Mein Host-Betriebssystem ist ein CentOS 7. Alle derzeit verfügbaren Updates sind installiert.
$ uname -a
Linux isfet 3.10.0-123.8.1.el7.x86_64 #1 SMP Mon Sep 22 19:06:58 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Installierte Pakete
$ rpm -qa | grep -i ldap
openldap-2.4.39-3.el7.x86_64
nss-pam-ldapd-0.8.13-8.el7.x86_64
openldap-clients-2.4.39-3.el7.x86_64
Inhalt von /etc/openldap/ldap.conf
URI ldap://172.16.64.25
BASE dc=sub,dc=example,dc=org
Inhalt von /etc/nslcd.conf
ldap_version 3
uri ldap://172.16.64.25
base dc=sub,dc=example,dc=org
ssl no
Ausgabe von / var / log / Secure
Oct 6 12:12:16 isfet sshd[3937]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=172.16.64.1 user=user.name
Oct 6 12:12:17 isfet sshd[3937]: Failed password for user.name from 172.16.64.1 port 18877 ssh2
Ausgabe von /var/log/audit/audit.log
type=USER_AUTH msg=audit(1412590243.286:364): pid=3912 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication acct="user.name" exe="/usr/sbin/sshd" hostname=172.16.64.1 addr=172.16.64.1 terminal=ssh res=failed'
type=USER_AUTH msg=audit(1412590243.287:365): pid=3912 uid=0 auid=4294967295 ses=4294967295 msg='op=password acct="user.name" exe="/usr/sbin/sshd" hostname=? addr=172.16.64.1 terminal=ssh res=failed'
Ausgabe des Befehls ldapserach
$ ldapsearch -H ldap://172.16.64.25/ -D cn=Manager,dc=sub,dc=example,dc=org -W -x -b dc=sub,dc=example,dc=org -d1
ldap_url_parse_ext(ldap://172.16.64.25/)
ldap_create
ldap_url_parse_ext(ldap://172.16.64.25:389/??base)
Enter LDAP Password:
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP 172.16.64.25:389
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 172.16.64.25:389
ldap_pvt_connect: fd: 3 tm: -1 async: 0
attempting to connect:
connect success
ldap_open_defconn: successful
ldap_send_server_request
ber_scanf fmt ({it) ber:
ber_scanf fmt ({i) ber:
ber_flush2: 61 bytes to sd 3
ldap_result ld 0x7f9b07402110 msgid 1
wait4msg ld 0x7f9b07402110 msgid 1 (infinite timeout)
wait4msg continue ld 0x7f9b07402110 msgid 1 all 1
** ld 0x7f9b07402110 Connections:
* host: 172.16.64.25 port: 389 (default)
refcnt: 2 status: Connected
last used: Mon Oct 6 12:04:38 2014
** ld 0x7f9b07402110 Outstanding Requests:
* msgid 1, origid 1, status InProgress
outstanding referrals 0, parent count 0
ld 0x7f9b07402110 request count 1 (abandoned 0)
** ld 0x7f9b07402110 Response Queue:
Empty
ld 0x7f9b07402110 response count 0
ldap_chkResponseList ld 0x7f9b07402110 msgid 1 all 1
ldap_chkResponseList returns ld 0x7f9b07402110 NULL
ldap_int_select
read1msg: ld 0x7f9b07402110 msgid 1 all 1
ber_get_next
ber_get_next: tag 0x30 len 50 contents:
read1msg: ld 0x7f9b07402110 msgid 1 message type bind
ber_scanf fmt ({eAA) ber:
read1msg: ld 0x7f9b07402110 0 new referrals
read1msg: mark request completed, ld 0x7f9b07402110 msgid 1
request done: ld 0x7f9b07402110 msgid 1
res_errno: 0, res_error: <>, res_matched: <cn=Manager,dc=sub,dc=example,dc=org>
ldap_free_request (origid 1, msgid 1)
ldap_parse_result
ber_scanf fmt ({iAA) ber:
ber_scanf fmt (}) ber:
ldap_msgfree
ldap_err2string
ldap_bind: Success (0)
matched DN: cn=Manager,dc=sub,dc=example,dc=org
...
Inhalt von _ / etc / pam.d / password-auth
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass retry=3 type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so
Inhalt von _ / etc / pam.d / system-auth
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass retry=3 type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so
quelle
pam_ldap
eine andere Datei als verwenden/etc/openldap/ldap.conf
? Ich möchte/etc/ldap.conf
sofort sagen . Ich würde versuchen, das Modul zu debuggen, indem ich diedebug
Option für die zusätzliche Protokollierung verbosiry hinzufüge, dauth sufficient pam_ldap.so use_first_pass debug
. H. Darüber hinaus denke ich, dass Sie die Frage nach Joffreys Rat verwirrt haben. Bitte kehren Sie zu Ihrer ursprünglichen Konfiguration zurück, wenn Sie möchten, dass andere Ihnen helfen können./etc/ldap.conf
?Antworten:
Das Ausführen von nslcd im Debug-Modus zeigt das Problem:
nslcd legt standardmäßig einen Filter fest. Es ist nicht möglich, diesen Filter zu entfernen oder auf leer zu setzen.
Da keiner meiner LDAP-Benutzer eine objectClass namens posixAccount hat, können die Benutzer nicht gefunden werden und die Anmeldung wird verweigert.
Um dieses Problem zu beheben, musste ich diesen Filter mit einem eigenen überschreiben. Da ich nach der UID suche, ist es nützlich, den Filter für ein Attribut festzulegen, nach dem sowieso gesucht wird.
Neuer Inhalt meiner /etc/nslcd.conf :
Nach dem Ändern der nslcd.conf musste ich den Dienst nslcd neu starten:
systemctl restart nslcd
Quelle: http://lists.arthurdejong.org/nss-pam-ldapd-users/2014/msg00025.html
.
Dies scheint ein Problem für _nss-pam-ldapd-0.8.13-8.el7.x86_64_ unter CentOS 7 zu sein!
Ich habe versucht, das Problem unter CentOS 6 zu reproduzieren, aber auf diesem nss-pam-ldapd gibt es Abhängigkeiten zu pam_ldap , dessen Konfigurationsdatei in /etc/pam_ldap.conf gespeichert ist und /etc/nslcd.conf anscheinend nicht so verwendet, wie es funktioniert unter CentOS 7.
quelle
pam_ldap
Namenskollisionen sind sehr verwirrend. :( Es gibt mehrere Implementierungen, die alle Anspruch auf diesen