Setelah meningkatkan ke CentOS 7, tidak mungkin lagi untuk masuk melalui LDAP. Dengan CentOS 6 saya menggunakan paket pam_ldap yang berfungsi dengan baik, tetapi sekarang pam_ldap tidak lagi tersedia untuk versi baru CentOS.
Menghubungkan melalui ldapsearch masih berfungsi dengan baik, tetapi mencoba untuk mengautentikasi melalui ssh tidak berfungsi.
Saya menginstal ulang paket nss-pam-ldapd dan mengkonfigurasi ulang otentikasi melalui authconfig-tui , tetapi masih tidak berfungsi.
Di bawah ini saya mengganti nama pengguna saya dengan user.name dan basis dengan dc = sub, dc = contoh, dc = org .
OS host saya adalah CentOS 7. Semua pembaruan yang tersedia saat ini diinstal.
$ 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
Paket yang diinstal
$ 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
Konten /etc/openldap/ldap.conf
URI ldap://172.16.64.25
BASE dc=sub,dc=example,dc=org
Konten /etc/nslcd.conf
ldap_version 3
uri ldap://172.16.64.25
base dc=sub,dc=example,dc=org
ssl no
Output dari / 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
Output dari /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'
Output dari perintah 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
...
Isi dari _ / 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
Isi dari _ / 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
sumber
pam_ldap
menggunakan file yang berbeda dengan/etc/openldap/ldap.conf
? Saya ingin mengatakan/etc/ldap.conf
, begitu saja. Saya akan mencoba men-debug modul dengan menambahkandebug
opsi untuk menambahkan logging verbosiry, yaituauth sufficient pam_ldap.so use_first_pass debug
. Di luar ini, saya pikir pertanyaan itu telah dikacaukan oleh Anda mengikuti saran Joffrey. Harap kembali ke konfigurasi asli Anda jika Anda ingin orang lain dapat membantu Anda./etc/ldap.conf
?Jawaban:
Menjalankan nslcd dalam mode debug menunjukkan masalah:
nslcd menetapkan filter secara default. Tidak mungkin menghapus filter ini atau mengosongkannya.
Karena tidak ada pengguna LDAP saya memiliki objectClass yang disebut posixAccount pengguna tidak dapat ditemukan dan login ditolak.
Untuk memperbaiki masalah ini, saya harus menimpa filter ini dengan yang saya miliki. Karena saya mencari uid , berguna untuk mengatur filter pada atribut yang dicari.
Konten baru dari /etc/nslcd.conf saya :
Setelah mengubah nslcd.conf saya harus me-restart layanan nslcd:
systemctl restart nslcd
Sumber: http://lists.arthurdejong.org/nss-pam-ldapd-users/2014/msg00025.html
.
Ini tampaknya menjadi masalah untuk _nss-pam-ldapd-0.8.13-8.el7.x86_64_ pada CentOS 7!
Saya mencoba mereproduksi masalah pada CentOS 6, tetapi pada nss-pam-ldapd ini memiliki dependensi ke pam_ldap yang memiliki file konfigurasi di /etc/pam_ldap.conf dan sepertinya tidak menggunakan /etc/nslcd.conf dalam cara kerjanya pada CentOS 7.
sumber
pam_ldap
tabrakan penamaan sangat membingungkan. :( Ada beberapa implementasi yang semuanya mengklaim nama modul itu.