3 votes

pam_ldap et ldaps ne peuvent pas contacter le serveur ldap

J'essaie d'autoriser l'authentification via LDAP sur un système hôte CentOS. Mais j'obtiens toujours un Impossible de contacter le serveur LDAP erreur de pam_ldap.

Le serveur LDAP est pingable et l'authentification fonctionne parfaitement avec ldap://, mais pas avec ldaps://. L'authentification fonctionne aussi parfaitement avec ldaps:// sur debian OS, mais pas sur CentOS.

J'ai obtenu le Pas de contact erreur également avec $ ldapsearch ... mais je l'ai corrigé en le paramétrant TLS_REQCERT permet dans le fichier /etc/openldap/ldap.conf. Mais ce réglage dans /etc/pam_ldap.conf n'est d'aucune utilité.

Les étapes que j'ai suivies :

  • yum install pam_ldap nss-pam-ldapd openldap-clients
  • authconfig-tui et activer LDAP pour l'authentification
  • modifier /etc/pam_ldap
  • modifier /etc/nslcd.conf
  • modifier /etc/openldap/ldap.conf
  • créer /etc/ldap/ldap.conf (j'ai lu quelque part qu'il s'agissait d'un chemin de secours pour le fichier de configuration)
  • créer /etc/ldap.conf (avec le même contenu que /etc/ldap/ldap.conf)
  • redémarrer les services nscd et nslcd

Quelques informations supplémentaires :

  • le certificat CA du serveur LDAP est lisible par tous.
  • iptables est désactivé

L'IP dans /var/log/secure . On peut y lire Échec du mot de passe pour l'utilisateur test de 10.1.1.1 Mais l'IP configurée pour le serveur LDAP est 10.1.1.42 et l'IP de l'hôte est 10.1.1.27. Quoi qu'il en soit, si j'utilise l'uri ldap://10.1.1.42 et que je commente la ligne ssl activé L'authentification fonctionne à merveille.

Des idées ?

.

Essai d'authentification via pam, /var/log/secure

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

Ejecutar $ 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 pour vérifier si ldaps// fonctionne. (Oui, il fonctionne)

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
...

Contenu de /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

Contenu de /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

Contenu de /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

Contenu de /etc/ldap.conf y /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

6voto

manyjays Points 1

L'indice se trouve dans le ldapsearch sortie de la commande :

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

Il est écrit : certificate ... is not valid... Peer's certificate issuer has been marked as not trusted by the user . Cela signifie que l'autorité de certification utilisée pour émettre le certificat du serveur n'est pas fiable. Il me semble que le fichier CACERTFILE TLS_CACERTFILE /srv/ldap-cacert.pem ne contient pas le bon certificat d'autorité de certification. Cela ne fonctionnera pas tant que vous n'obtiendrez pas une erreur propre. ldapsearch de la production.

Une fois ce problème résolu, il se peut que vous obteniez des erreurs dues à la CN du certificat. Si c'est le cas, essayez d'utiliser ldaps://sub.example.org/ comme URI au lieu de ldaps://10.1.1.42/ . Si votre DNS ne résout pas ce nom, mettez-le dans votre /etc/hosts (à titre de test, vous devriez mettre à jour vos enregistrements DNS).

3voto

Tom Points 81

Migtor m'a poussé dans la bonne direction. Je vous remercie !

Lorsque j'ai supprimé TLS_REQCERT et a vérifié pour le ldapsearch J'ai également obtenu les erreurs suivantes TLS: error: connect - force handshake failure: errno 2 - moznss error -8172 .

Mon certificat CA est correct, mais openldap utilise Mozilla Network Security Services (MozNSS) par défaut pour vérifier l'autorité. Je dois donc ajouter mon autorité de certification auto-signée à cette base de données.

Editer : Comme l'a souligné Migtor dans son commentaire ci-dessous, cela ne devrait s'appliquer qu'à CentOS, RHEL et leurs dérivés.

.

Solution

Copiez d'abord votre certificat CA sur le client (mon chemin : /etc/openldap/cacerts/ldap-cacert.pem).

Après l'installation pam_ldap Une base de données MozNSS est située dans /etc/openldap/certs :

  • courir # certutil -d /etc/openldap/certs -A -n "ldap CA" -t TCu,Cu,Tuw -a -i /etc/openldap/cacerts/ldap-cacert.pem
    • -n "ldap CA" est juste un nom pour identifier votre certificat dans la base de données MozNSS.
  • vérifier : # certutil -L -d /etc/openldap/certs

Nouveau contenu de mon /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

.

Qu'en est-il de nss-pam-ldapd ?

Ce n'est plus nécessaire. Je l'ai purgé et le fichier /etc/nslcd.conf n'est plus disponible.

.

Sources :

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X