Назад | Перейти на главную страницу

pam_ldap и ldaps не могут связаться с сервером ldap

Я пытаюсь разрешить аутентификацию через LDAP в хост-системе CentOS. Но я всегда получаю Не удается связаться с сервером LDAP ошибка от pam_ldap.

Сервер LDAP доступен для проверки связи, и аутентификация отлично работает с ldap: //, но не с ldaps: //. Он также отлично работает с ldaps: // в ОС Debian, но не в CentOS.

Я получил Не могу связаться ошибка также с $ ldapsearch ... но я исправил настройку TLS_REQCERT разрешить в /etc/openldap/ldap.conf. Но установка этого параметра для /etc/pam_ldap.conf не помогает.

Шаги, которые я сделал:

Дополнительная информация:

Также сбивает с толку IP в / var / журнал / безопасный. Там сказано Не удалось ввести пароль для testuser из 10.1.1.1, но настроенный IP-адрес для LDAP-сервера - 10.1.1.42, а IP-адрес хоста - 10.1.1.27. В любом случае, если я использую uri ldap: //10.1.1.42 и прокомментирую строку ssl на аутентификация работает как шарм.

Любые идеи?

.

Пытаюсь пройти аутентификацию через pam, / var / журнал / безопасный

Sep 15 09:50:37 client-server unix_chkpwd[16146]: password check failed for user (testuser)
Sep 15 09:50:37 client-server sshd[16144]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.1.1.1  user=testuser
Sep 15 09:50:37 client-server sshd[16144]: pam_ldap: ldap_simple_bind Can't contact LDAP server
Sep 15 09:50:37 client-server sshd[16144]: pam_ldap: reconnecting to LDAP server...
Sep 15 09:50:37 client-server sshd[16144]: pam_ldap: ldap_simple_bind Can't contact LDAP server
Sep 15 09:50:40 client-server sshd[16144]: Failed password for testuser from 10.1.1.1 port 11339 ssh2
Sep 15 09:50:40 client-server sshd[16145]: Received disconnect from 10.1.1.1: 13: Unable to authenticate

Бегать $ ldapsearch -v -H ldaps: //10.1.1.42/ -D cn = admin, dc = sub, dc = example, dc = org -W -x -b dc = sub, dc = example, dc = org -d1 чтобы проверить, // работает ли ldaps. (Да, это работает)

ldap_url_parse_ext(ldaps://10.1.1.42/)
ldap_initialize( ldaps://10.1.1.42:636/??base )
ldap_create
ldap_url_parse_ext(ldaps://10.1.1.42:636/??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 10.1.1.42:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 10.1.1.42:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
TLS: certificate [CN=sub.example.org,OU=test-ou,O=test-o,ST=test-st,C=DE] is not valid - error -8172:Peer's certificate issuer has been marked as not trusted by the user..
TLS certificate verification: subject: CN=sub.example.org,OU=test-ou,O=test-o,ST=test-st,C=DE, issuer: CN=sub.example.org,OU=test-ou,O=test-o,ST=test-st,C=DE, cipher: AES-128, security level: high, secret key bits: 128, total key bits: 128, cache hits: 0, cache misses: 0, cache not reusable: 0
ldap_open_defconn: successful
ldap_send_server_request
...

Содержание /etc/pam_ldap.conf

ldap_version 3
pam_password crypt
uri ldaps://10.1.1.42:636
base dc=sub,dc=example,dc=org
ssl on
tls_reqcert allow
tls_cacertfile /srv/ldap-cacert.pem
tls_checkpeer no

Содержание /etc/openldap/ldap.conf

TLS_REQCERT allow
TLS_CACERTFILE /srv/ldap-cacert.pem
URI ldaps://10.1.1.42:636/
BASE dc=sub,dc=example,dc=org

Содержание /etc/nslcd.conf

uid nslcd
gid ldap
ssl on
tls_reqcert allow
tls_cacertfile /srv/ldap-cacert.pem
uri ldaps://10.1.1.42:636/
base dc=sub,dc=example,dc=org

Содержание /etc/ldap.conf и /etc/ldap/ldap.conf:

tls_checkpeer no
tls_reqcert allow
tls_cacertfile /srv/ldap-cacert.pem
uri ldaps://10.1.1.42:636/
base dc=sub,dc=example,dc=org

Подсказка в ldapsearch вывод команды:

TLS: certificate [CN=sub.example.org,OU=test-ou,O=test-o,ST=test-st,C=DE] is not valid - error -8172:Peer's certificate issuer has been marked as not trusted by the user..
TLS certificate verification: subject: CN=sub.example.org,OU=test-ou,O=test-o,ST=test-st,C=DE, issuer: CN=sub.example.org,OU=test-ou,O=test-o,ST=test-st,C=DE, cipher: AES-128, security level: high, secret key bits: 128, total key bits: 128, cache hits: 0, cache misses: 0, cache not reusable: 0

Он говорит: certificate ... is not valid... Peer's certificate issuer has been marked as not trusted by the user. Это означает, что ЦС, используемый для выдачи сертификата сервера, не является доверенным. Мне кажется, что CACERTFILE TLS_CACERTFILE /srv/ldap-cacert.pem не содержит правильный сертификат CA. Это не будет работать, пока вы не получите сообщение об ошибке. ldapsearch вывод.

Как только это будет решено, вы можете получить ошибки из-за CN сертификата. Если да, попробуйте использовать ldaps://sub.example.org/ как URI вместо ldaps://10.1.1.42/. Если ваш DNS не разрешает это имя, просто введите его в свой /etc/hosts файл (просто для тестирования вам следует обновить записи DNS).

Мигтор подтолкнул меня в правильном направлении. Спасибо!

Когда я удалил TLS_REQCERT и проверил ldapsearch ошибки я тоже получил TLS: error: connect - force handshake failure: errno 2 - moznss error -8172.

Мой сертификат CA правильный, но openldap по умолчанию использует Mozilla Network Security Services (MozNSS) для проверки полномочий. Поэтому мне нужно добавить свой самозаверяющий ЦС в эту базу данных.

Редактировать: Как указал Migtor в своем комментарии ниже, это должно применяться только к CentOS, RHEL и производным инструментам.

.

Решение

Сначала скопируйте сертификат CA клиенту (мой путь: /etc/openldap/cacerts/ldap-cacert.pem)

После установки pam_ldap база данных MozNSS находится в / etc / openldap / certs:

  • бегать # certutil -d /etc/openldap/certs -A -n "ldap CA" -t TCu,Cu,Tuw -a -i /etc/openldap/cacerts/ldap-cacert.pem
    • -n «ldap CA» - это просто имя для идентификации вашего сертификата в базе данных MozNSS.
  • проверить: # certutil -L -d /etc/openldap/certs

Новое содержание моего /etc/pam_ldap.conf

ldap_version 3
pam_password crypt
uri ldaps://[FQDN-of-my-ldap-server]:636
base dc=sub,dc=example,dc=org
ssl on
tls_cacertdir /etc/openldap/certs

.

А как насчет nss-pam-ldapd?

Это больше не требуется. Я очистил его, и /etc/nslcd.conf больше не доступен.

.

Источники: