Ldap

De Wiki doc


Ce tuto va traiter :

  • La mise en place d'un serveur LDAP assisté par phpLDAPadmin.
  • La mise en place des clients

Serveur

Installer OpenLDAP

Changer le hostname et le hosts pour definire le domaine:

ldap2.jmador.yo

Installer slapd et ldap-utils

$ apt install slapd ldap-utils

Pendant l’installation, slapd va vous demander le mot de passe admin pour LDAP. Entrez celui que vous souhaitez (éviter les caractères spéciaux).

Éditez le fichier /etc/ldap/ldap.conf

#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
BASE    dc=jmador,dc=yo
URI     ldap://127.0.0.1
#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never
# TLS certificates (needed for GnuTLS)
TLS_CACERT      /etc/ssl/certs/ca-certificates.crt

Lancez l’assistant de configuration

$ dpkg-reconfigure slapd

Pendant l'installation il vous sera posé les questions suivantes :

  • Voulez-vous omettre la configuration d'OpenLDAP : `Non`

  • Nom de domaine : `jmador.yo`

  • Nom d'entité : `ldap2`

  • Mot de passe de l'administrateur : `[mot de passe admin]`

  • Mot de passe de l'administrateur : `[mot de passe admin]`

  • Module de base de données à utiliser : `MDB`

  • Faut-il supprimer la base de données lors de la purge du paquet : `Oui`

  • Faut-il déplacer l'ancienne base de données : `Oui`

  • Faut-il autoriser le protocole LDAPv2 : `Non`

Pour vérifier que votre serveur LDAP fonctionne, il suffit de lancer la commande suivante :

$ ldapsearch -x

Vous devriez obtenir ce résultat :

[...]
result: 0 Success
[...]

phpLDAPadmin

Installation et configuration

Installation d’une interface graphique pour l’administration de LDAP

$ apt install phpldapadmin

Créez un lien symbolique pour le dossier de phpldapadmin

$ ln -s /usr/share/phpldapadmin/ /var/www/phpldapadmin

Maintenant éditez le fichier /etc/phpldapadmin/config.php et remplacer le nom de domaine par le votre. Editez également les lignes suivantes

[...]
// Uncomment and set your timezone //
$config->custom->appearance['timezone'] = 'Europe/Paris';
[...]
// Set your LDAP server name //
$servers->setValue('server','name','Mon serveur LDAP');
[...]
// Set your LDAP server IP address // 
$servers->setValue('server','host','192.168.10.133');
[...]
// Set Server domain name //
$servers->setValue('server','base',array('dc=jmador,dc=yo'));
[...]
// Set Server domain name //
$servers->setValue('login','bind_id','cn=admin,dc=jmador,dc=yo');
[...]

Relancez le service Apache2

$ service apache2 restart

L'interface phpLDAPadmin

Dans un navigateur web, rendez-vous à l’adresse suivante : https://ldap2.jmador.yo/phpldapadmin/

Cliquer sur connexion pour vous identifier:

Taper votre mot de passe administateur:

Créer une Unité Organisationnelle

  • Cliquer sur "Créer une nouvelle entrée ici:

  • Cliquer sur "Générique : Unité Organisationnelle" :

  • Nommer l'Unité Organisationnelle :

  • Puis cliquer sur "Créer un objet" puis "Valider"

Créer un groupe Posix

  • Cliquer sur votre Unité Organisationnelle et cliquer sur "Créer une sous-entrée"

  • Choisir "Générique : Groupe Posix"

  • Nommer le groupe :

  • Puis cliquer sur "Créer un objet" puis "Valider"

Créer un utilisateur

  • Cliquer sur votre groupe Posix et cliquer sur "Créer une sous-entrée"

  • Choisir "Générique : Compte Utilisateur"

  • Compléter les champs comme sur la capture (Ne pas compléter les champs "Nom Commun" et "Répertoire personnel" car ils vont s'auto compléter avec les champs "Prénom" et "Nom de famille") :

  • Puis cliquer sur "Créer un objet" puis "Valider"

Client

Installation

Installez le paquet libnss-ldap:

$ apt install libnss-ldap

Pendant l'installation il vous sera posé les questions suivantes :

  • Identifiant uniforme de ressource (" URI ") du serveur LDAP : `ldap://ldap2.jmador.yo`

WARNING: Bien remplacer `ldapi:///` par `ldap://`

  • Nom distinctif (DN) de la base de recherche : `dc=jmador,dc=yo`

  • Version de LDAP à utiliser : `3`

  • Compte LDAP pour le superutilisateur (" root ") : `cn=admin,dc=jmador,dc=yo`

  • Mot de passe du compte du superutilisateur LDAP : `[mot de passe admin]`

  • Taper entrée

  • Donner les privilèges de superutilisateur local au compte administrateur LDAP : `Non`

  • La base de données LDAP demande-t-elle une identification : `Non`

Configurations

Modifier le fichier /etc/nsswitch.conf

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap
gshadow:        files

hosts:          files dns ldap
networks:       files ldap

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Vérifiez que NSS voit bien ce que fournit LDAP à l'aide getent:

$ getent passwd

Ceci devrait vous montrer les comptes de LDAP qui ne sont pas dans le fichier /etc/passwd.

Puis redemmarer le service:

$ service nscd restart

Pour permet la création du dossier personnel des utilisateurs LDAP, ajouter dans le fichier /etc/pam.d/common-session la ligne suivante :

[...]
session required pam_mkhomedir.so

Configurations Avancées

Une tâche commune est de restreindre la connexion à un certain groupe LDAP. Avec NIS, vous auriez fait cela en ajustant précautionneusement le fichier /etc/passwd. Avec LDAP, la façon la plus simple de faire est d'utiliser le module pam_access qui est fourni avec libpam-modules.

Ajoutez la ligne suivante au fichier /etc/pam.d/common-auth :

[...]
account required    pam_access.so

Ceci va activer le fichier /etc/security/access.conf, que vous pouvez ajuster comme suit :

[...]
-:ALL EXCEPT root (groupe-famille):ALL

Explication:

  • -:ALL : Interdire toutes les connexions sur l'ordi
  • EXCEPT root (groupe-famille) : Sauf l'utilisateur root et le groupe groupe-famille
  • :ALL : Sur tous les tty (je suis pas sûr)