Skip navigation

CentOS 7 : LDAP

Mise en place d’un serveur LDAP sous CentOS 7

Environment

Nom de l’hôte Adresse IP OS Rôle
server.stan.local 172.16.0.10 CentOS 7 Serveur LDAP
client.stan.local 172.16.0.20 CentOS 7 Client LDAP

Installation côté serveur

En l’absence de domaine/DNS valide, modifier le fichier etc/hosts côté serveur et côté client.

root@centos~#: vim /etc/hosts

aperçu du contenu du fichier

[…]
172.16.0.10 server.stan.local server
172.16.0.20 client.stan.local client

Installation de ldap.

root@centos~#: yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel

Démarrage du service ldap.

root@centos~#: systemctl start slapd.service

Démarrage du service ldap au boot.

root@centos~#: systemctl enable slapd.service

Véfirier que le service ldap tourne sur son port.

root@centos~#: netstat -laputn | grep -i 389

sortie

tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      1238/slapd
tcp6       0      0 :::389                  :::*                    LISTEN      1238/slapd 

Mise en place du mot de passe root.

root@centos~#: slappasswd

sortie

New password:
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Configuration de LDAP

Création de fichier db.ldif.
contenu du fichier

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=stan,dc=local

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=stan,dc=local

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

olcSuffix – suffixe de base de données, il s’agit du nom de domaine pour lequel le serveur LDAP fournit les informations. Doit être changé pour le nom de domaine approprié.

olcRootDN – “root Distinguished Name (DN)”, entrée pour l’utilisateur root qui a un accès sans restriction pour effectuer toutes les activités d’administration sur LDAP.

olcRootPW – mot de passe de l’utilisateur RootDN.

Envoyer le fichier ce configuration au serveur LDAP.

root@centos~#: ldapmodify -Y EXTERNAL  -H ldapi:/// -f db.ldif

sortie

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

Création de fichier monitor.ldif.

root@centos~#: vim monitor.ldif

contenu du fichier

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=ldapadm,dc=stan,dc=local" read by * none
root@centos~#: ldapmodify -Y EXTERNAL  -H ldapi:/// -f monitor.ldif

sortie

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"

Créer le certificat LDAP

Le certificat LDAP peut se faire grâce à openssl.
openssl req -new -x509 -nodes -out /etc/openldap/certs/stan.cert.pem -keyout /etc/openldap/certs/stan.key.pem -days 365
sortie

Generating a 2048 bit RSA private key
...................+++
..................................................+++
writing new private key to '/etc/openldap/certs/stan.key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:server.stan.local
Email Address []:

Attribuer les droits au service ldad à ses certificats.

root@centos~#: chown -R ldap:ldap /etc/openldap/certs/*.pem

Vérifiez que les certificats LDAP ont bien été créé dans : /etc/openldap/certs/

root@centos~#: ls -l /etc/openldap/certs/*.pem

sortie

-rw-rw-r--. 1 ldap ldap 1294 Mar 29 05:14 /etc/openldap/certs/stan.cert.pem
-rw-rw-r--. 1 ldap ldap 1708 Mar 29 05:14 /etc/openldap/certs/stan.key.pem

Créez le fichier certs.ldif pour configurer LDAP afin d’utiliser une communication sécurisée à l’aide du certificat auto-signé.

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/stan.cert.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/stan.key.pem

Importer la configuration sur le serveur LDAP.

root@centos~#: ldapmodify -Y EXTERNAL  -H ldapi:/// -f certs.ldif

sortie

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

modifying entry "cn=config"

Tester la configuration.

root@centos~#: slaptest -u

sortie

config file testing succeeded

Configuration de la base de donnée LDAP

Le fichier de configuration de base de données d’exemple est une bonne base.

root@centos~#: cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

Attribution des droits de ce fichier au service ldap.

Ajoutez les schémas “cosine”, “inetorgperson” et “nis” à LDAP.

root@centos~#: ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
root@centos~#: ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
root@centos~#: ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

Les 3 sorties sont similaire.
sortie

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

Générez le fichier base.ldif pour le domaine.

root@centos~#: vim base.ldif

contenu du fichier

dn: dc=stan,dc=local
dc: stan
objectClass: top
objectClass: domain

dn: cn=ldapadm ,dc=stan,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou=People,dc=stan,dc=local
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=stan,dc=local
objectClass: organizationalUnit
ou: Group

Construire la structure du répertoire.

root@centos~#: ldapadd -x -W -D "cn=ldapadm,dc=stan,dc=local" -f base.ldif

sortie

Enter LDAP Password:     # password used earlier for the slappasswd command
adding new entry "dc=stan,dc=local"

adding new entry "cn=ldapadm ,dc=stan,dc=local"

adding new entry "ou=People,dc=stan,dc=local"

adding new entry "ou=Group,dc=stan,dc=local"

Créer un fichier LDIF pour un nouvel utilisateur : kyle.

root@centos~#: vim kyle.ldif

contenu du fichier

dn: uid=kyle,ou=People,dc=stan,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: kyle
uid: kyle
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/kyle
loginShell: /bin/bash
gecos: Kyle [Admin (at) stan]
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7

Utiliser la commande ldapadd avec le fichier précédement pour créer le nouvel utilisateur “kyle” dans le répertoire OpenLDAP.

root@centos~#: ldapadd -x -W -D "cn=ldapadm,dc=stan,dc=local" -f kyle.ldif

sortie

Enter LDAP Password:
adding new entry "uid=kyle,ou=People,dc=stan,dc=local"

root@centos~#: ldappasswd -s nouveau-mot-de-passe -W -D "cn=ldapadm,dc=stan,dc=local" -x "uid=kyle,ou=People,dc=stan,dc=local"

sortie

Enter LDAP Password:

Détail de la commande ldappasswd.

Option Description
-s mot de passe pour le nom d’utilisateur
-x nom d’utilisateur pour lequel le mot de passe est changé
-D nom distinctif pour l’authentification auprès du serveur LDAP
-W Demander le mot de passe (root pas celui de l’utilisateur en cours de modification) au prompt au lieu de spécifier le mot de passe sur la ligne de commande.

Verify LDAP entries
Vérifier les entrées LDAP

root@centos~#: ldapsearch -x cn=kyle -b dc=stan,dc=local

sortie

# extended LDIF
#
# LDAPv3
# base <dc=stan,dc=local> with scope subtree
# filter: cn=kyle
# requesting: ALL
#

# kyle, People, stan.local
dn: uid=kyle,ou=People,dc=stan,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: kyle
uid: kyle
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/kyle
loginShell: /bin/bash
gecos: Kyle [Admin (at) stan]
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
userPassword:: e1NTSEF9amRiOEVGMXNaVnJab2JhVE1jQVNYNzNZM21DODdoSXI=

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Supprimer une entrée de LDAP.

root@centos~#: ldapdelete -W -D "cn=ldapadm,dc=stan,dc=local" "uid=kyle,ou=People,dc=stan,dc=local"

Ajouter le service LDAP au pare-feu (tcp 389).

root@centos~#: firewall-cmd --permanent --add-service=ldap
root@centos~#: firewall-cmd --reload

Configure Rsyslog to log a LDAP events to log file /var/log/ldap.log.
Configurez Rsyslog pour enregistrer les événements LDAP dans le fichier journal /var/log/ldap.log.

Ajouter la ligne ci-dessous au fichier /etc/rsyslog.conf.

root@centos~#: vim /etc/rsyslog.conf

aperçu du contenu du fichier

[…]
local4.* /var/log/ldap.log

Redémarrez le service rsyslog.

root@centos~#: systemctl restart rsyslog

Installation côté client

Installer des packets LDAP client.

root@centos~#: yum install -y openldap-clients nss-pam-ldapd

Ajouter la machine client au serveur LDAP pour une connexion unique.

root@centos~#: authconfig --enableldap --enableldapauth --ldapserver=172.16.0.10 --ldapbasedn="dc=stan,dc=local" --enablemkhomedir --update

Redémarrer le service ldap client.

root@centos~#: systemctl restart nslcd

La commande getent permet d’obtenir les entrées LDAP du serveur LDAP.

root@centos~#: getent passwd kyle

sortie

kyle:x:9999:100:Kyle [Admin (at) stan]:/home/kyle:/bin/bash

Mise en place de phpldapadmin

Installation des epel-release.

root@debian~#: yum -y install epel-release

Installation des phpldapadmin.

root@debian~#: yum install -y phpldapadmin

Mise à jour de la configuration de phpldapadmin dans httpd.

root@debian~#: vim /etc/httpd/conf.d/phpldapadmin.conf

: commenter les lignes en bleu et ajouter les lignes en vert.

contenu du fichier

#
#  Web-based tool for managing LDAP servers
#

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
#Require local
Require all granted
  </IfModule>
  <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
  </IfModule>
</Directory>

Ajouter le service HTTPD au pare-feu (tcp 80).

root@debian~#: firewall-cmd --permanent --zone=public --add-service=http
root@debian~#: firewall-cmd --reload

Redémarrer le service httpd.

root@debian~#: systemctl restart httpd.service

Mise à jour de la configuration de phpldapadmin.

root@debian~#: vim etc/phpldapadmin/config.php

aperçu du contenu du fichier

[…]
$servers->setValue('server','name','Stan Local LDAP Server');
[…]
$servers->setValue('server','base',array('dc=stan,dc=local'));

Serveur accessible à :

: http://172.16.0.10/phpldapadmin
Login : cn=ldapadm,dc=stan,dc=local
Pass : celui utilisé plus tôt avec la commande slappasswd.

: manipulation faites sous centOS 7 (Kernel: Linux 3.10.0-693.21.1.el7.x86_64)

source : step-step-openldap-server-configuration-centos-7-rhel-7, install-configure-phpldapadmin-centos-7-ubuntu-16-04.html.

by | March 29, 2018 | No Comments | Système | Tags : centos centos 7 ldap