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
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 Nicolas SHINEY | March 29, 2018 | No Comments | Système | Tags : centos centos 7 ldap