После обновления до CentOS 7 больше невозможно войти через LDAP. В CentOS 6 я использовал пакет pam_ldap, который работал нормально, но теперь pam_ldap больше не доступен для новой версии CentOS.
Подключение через ldapsearch по- прежнему работает нормально, но попытка аутентификации через ssh не работает.
Я переустановил пакет nss-pam-ldapd и перенастроил аутентификацию через authconfig-tui , но она все равно не работает.
Ниже я заменяю свое имя пользователя на user.name, а базу на dc = sub, dc = example, dc = org .
Моя операционная система - CentOS 7. Все доступные на данный момент обновления установлены.
$ 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
Установленные пакеты
$ 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
Содержимое /etc/openldap/ldap.conf
URI ldap://172.16.64.25
BASE dc=sub,dc=example,dc=org
Содержание /etc/nslcd.conf
ldap_version 3
uri ldap://172.16.64.25
base dc=sub,dc=example,dc=org
ssl no
Вывод / 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
Вывод /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'
Вывод команды 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
...
Содержимое _ / 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
Содержимое _ / 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
источник
pam_ldap
использует другой файл, чем/etc/openldap/ldap.conf
? Я хочу сказать/etc/ldap.conf
, случайно. Я хотел бы попробовать отладить модуль, добавивdebug
опцию для дополнительной регистрации verbosiry, то естьauth sufficient pam_ldap.so use_first_pass debug
. Помимо этого, я думаю, что вопрос был запутан вами по совету Джоффри. Пожалуйста, вернитесь к исходной конфигурации, если хотите, чтобы другие могли вам помочь./etc/ldap.conf
?Ответы:
Запуск nslcd в режиме отладки показывает проблему:
nslcd устанавливает фильтр по умолчанию. Невозможно удалить этот фильтр или установить его пустым.
Поскольку ни один из моих пользователей LDAP не имеет объектного класса с именем posixAccount, пользователи не могут быть найдены, и вход в систему запрещен.
Чтобы решить эту проблему, мне пришлось заменить этот фильтр на собственный. Поскольку я ищу uid , полезно установить фильтр для атрибута, который ищется в любом случае.
Новый контент моего /etc/nslcd.conf :
После изменения nslcd.conf мне пришлось перезапустить службу nslcd:
systemctl restart nslcd
Источник: http://lists.arthurdejong.org/nss-pam-ldapd-users/2014/msg00025.html
,
Похоже, это проблема для _nss-pam-ldapd-0.8.13-8.el7.x86_64_ в CentOS 7!
Я попытался воспроизвести проблему на CentOS 6, но на этом nss-pam-ldapd есть зависимости от pam_ldap, который имеет свой конфигурационный файл в /etc/pam_ldap.conf и, кажется, не использует /etc/nslcd.conf в том, как он работает на CentOS 7.
источник
pam_ldap
конфликты имен очень запутанные. :( Есть несколько реализаций, которые все претендуют на имя этого модуля.