Présentation de OpenLDAP
OpenLDAP (http://www.openldap.org) est un projet libre de
serveur d'annuaire conforme à la norme LDAP 3. Ce serveur, dérivé de l'implémentation
mise au point par l'université du Michigan, est développé selon les termes de la licence
GNU GPL, ce qui signifie qu'il est entièrement gratuit et que les sources
de ce logiciel sont disponibles.
OpenLDAP est composé des éléments suivants :
OpenLDAP est composé des éléments suivants :
- Le serveur LDAP : slapd
- La passerelle LDAP vers X500 : ldapd
- Le serveur de réplication : slurpd
- Des outils d'administration
LDAP signifie "Lightweight Directory Access Protocol".
LDAP
est un protocole, ce qu'il signifie que son rôle est de présenter des
informations. Un serveur LDAP agit en tant qu'intermédiaire entre une
source de données et un client. Nous verrons qu'en tant qu'intermédiaire
il définit quelques conventions, notamment l'organisation des données
qu'il présente qui sera sous forme hiérarchique, mais aussi un format
d'échange standard.
LDAP fonctionne sur le port TCP 389 (par défault). Installation de OpenLDAP
Voici la liste des paquetages à installer sous Redhat/Fedora Core 1 :
- openldap
- openldap-clients
- openldap-servers
Comme pour la plupart des logiciels sous Linux, OpenLDAP peut-être installé de différentes façons :
- sous forme de fichiers RPM
- en compilant les sources
Installation de OpenLDAP sous forme de RPM
Pour installer le serveur LDAP sous forme de RPM, il s'agit dans un premier temps de
récupérer le package (nommé openldap-version.rpm où
version représente la version actuelle de openldap), puis d'exécuter la commande suivante :
rpm -ivh openldap-2.3.38-3.fc8.i386.rpm
Installation de OpenLDAP à partir des sources
L'installation à l'aide des fichiers sources :yum install openldap
Configuration du serveur
Configuration : fichier slapd.conf
L'intégralité de la configuration du serveur OpenLDAP (le démon slapd) s'effectue en modifiant le fichier slapd.conf, situé dans le répertoire /etc/ldap.Editer le fichier de configuration du serveur /etc/openldap/slapd.conf avec les entrées suivantes :
access to attr=userPassword by self write by anonymous auth by dn="cn=Manager,dc=menara,dc=ma" write by * compare access to * by self write by dn="cn=Manager,dc=menara,dc=ma" write by * read
database bdb suffix "dc=menara,dc=ma" rootdn "cn=Manager,dc=menara,dc=ma" rootpw ijFYNcSNctBYg
Utiliser la commande :
slappasswd -v -s secret -h {CRYPT}
pour générer le mot de passe crypté cprrespondant à secret . Ce mot de passe crypté sera utilisé pour le champ rootpw.
test de la configuration de slapd.conf
Utilisez votre éditeur préféré, puis sauvegardez votre configuration. Testez-là ensuite pour voir si aucune erreur n'a été commise :# slaptest -f /etc/ldap/slapd.conf
config file testing succeeded
Arrêt et démarrage de serivce ldap
pour démarrer le service ldap il y a deux methode :
methode 2: #service ldap [start|stop|restart]
Migrer les données existantes :
configuration de fichier : migrate_common.ph
Ensuite, nous migrons les comptes des utilisateurs. Ouvrez le fichier /usr/share/openldap/migration/migrate_common.ph
# cd /usr/share/openldap/migration # vi migrate_common.ph
et modifiez-le comme
suit :
$DEFAULT_MAIL_DOMAIN = "menara.ma";
$DEFAULT_BASE = "dc=menara,dc=ma";
$DEFAULT_MAIL_HOST = "mail.menara.ma";
puis sauvegardez votre configuration
Exécuter les scripts de migration
Maintenant, exécutez les scripts de migration :
# ETC_SHADOW=/etc/shadow
# export ETC_SHADOW # ./migrate_group.pl /etc/group /tmp/group.ldif # ./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif
Initialiser l'annuaire
L'initialisation de l'annuaire n'est qu'un ajout massif de plusieurs entrées. Cet ajout massif peut se faire par le biais de slapadd si vous possédez déjà un dump de l'annuaire et si vous vous situez sur le serveur.
A distance, c'est l'outil ldapadd qui va nous permettre d'effectuer cette opération. Il suffit de fournir à ldapadd un fichier LDIF contenant plusieurs entrées qui seront ajoutées dans le même ordre avec lequel elles apparaissent dans le fichier.
Ce fichier va donc tout d'abord contenir l'entrée de la racine, qui est nécessaire, puis chacune des "ou" que nous avons vues en exemple. Enfin, les feuilles seront constituées d'utilisateurs et de groupes.
Fichier LDIF à insérer (temps.ldif) :
cd /tmp
vi temps.ldif
dn: dc=menara,dc=ma
objectClass: dcObject
objectClass: organization
dc: menara
o: menara.ma
description: menara
objectClass: dcObject
objectClass: organization
dc: menara
o: menara.ma
description: menara
dn: ou=Group,dc=menara,dc=ma
ou: Group
objectClass: organizationalUnit
description: Groupes d'utilisateurs
ou=People,dc=menara,dc=ma
ou: People
ou: People
objectClass: top
objectClass: organizationalUnit
description: Utilisateurs de systeme
objectClass: organizationalUnit
description: Utilisateurs de systeme
puis sauvegardez votre configuration
Importer les données dans notre annuaire
Ensuite, pour entrer ces informations dans l'annuaire, il faut
utiliser la commande suivante :
# ldapadd -x -D "cn=Manager,dc=menara,dc=ma" -W -f /tmp/temps.ldif
Configuration du client
Configuration : fichier ldap.conf
pour configurer le client modifiez /etc/ldap.conf comme ceci :
host 192.168.1.1
base dc=menara,dc=ma
bindpw secret
binddn cn=Manager,dc=menara,dc=ma
pam_filter objectclass=Account pam_login_attribute uid
pam_password crypt
nss_base_passwd ou=People,dc=menara,dc=ma nss_base_shadow ou=People,dc=menara,dc=ma nss_base_group ou=Group,dc=menara,dc=ma
puis sauvegardez votre configuration
Configuration : /etc/nsswitch.conf
configurez vos clients pour qu'ils valident les comptes des utilisateurs
via le système LDAP :
vi /etc/nsswitch.conf
modifiez /etc/nsswitch.conf comme ceci :
passwd: files ldap group: files ldap shadow: files ldap
puis sauvegardez votre configuration
Configurer PAM
il faut configurer PAM pour permettre une authentification
LDAP. Installez sys-auth/pam_ldap afin que PAM dispose du support LDAP
et sys-auth/nss_ldap pour que le système puisse utiliser des serveurs
LDAP pour obtenir des informations supplémentaires (utilisé par le fichier
nsswitch.conf).
Installation de pam_ldap et nss_ldap
# emerge pam_ldap nss_ldap
Maintenant, modifier le fichier /etc/pam.d/login comme ca :
#cd /etc/pam.d/
#vi login
#vi login
auth required pam_securetty.so
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
auth sufficient /lib/security/pam_ldap.so
account required pam_stack.so service=system-auth
account sufficient /lib/security/pam_ldap.so
password required pam_stack.so service=system-auth
password sufficient /lib/security/pam_ldap.so
# pam_selinux.so close should be the first session rule
session sufficient /lib/security/pam_ldap.so
session required pam_selinux.so close
session required pam_stack.so service=system-auth
#session optional pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should be the last session rule
session required pam_selinux.so multiple open
puis sauvegardez votre configuration
et modifier le fichier /etc/pam.d/su comme ca :
#vi su
#%PAM-1.0
auth sufficient /lib/security/$ISA/pam_rootok.so
auth sufficient pam_ldap.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient /lib/security/$ISA/pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required /lib/security/$ISA/pam_wheel.so use_uid
auth required /lib/security/$ISA/pam_stack.so service=system-auth
auth sufficient /lib/security/pam_ldap.so
account sufficient /lib/security/pam_ldap.so
account required /lib/security/$ISA/pam_stack.so service=system-auth
password sufficient /lib/security/pam_ldap.so
password required /lib/security/$ISA/pam_stack.so service=system-auth try_first_pass
session sufficient /lib/security/pam_ldap.so
# pam_selinux.so close must be first session rule
session required /lib/security/$ISA/pam_selinux.so close
session required /lib/security/$ISA/pam_stack.so service=system-auth
# pam_selinux.so open and pam_xauth must be last two session rules
session required /lib/security/$ISA/pam_selinux.so open multiple
session optional /lib/security/$ISA/pam_xauth.so
puis sauvegardez votre configuration
et modifier le fichier /etc/pam.d/gdm comme ca :
| |||
#vi gdm | |||
#%PAM-1.0
auth required pam_env.so
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
auth sufficient /lib/security/pam_ldap.so
account sufficient /lib/security/pam_ldap.so
account required pam_stack.so service=system-auth
password sufficient /lib/security/pam_ldap.so
password required pam_stack.so service=system-auth
session sufficient /lib/security/pam_ldap.so
session required pam_stack.so service=system-auth
session optional pam_console.so
puis sauvegardez votre configuration
Ajout d'un compte
Testons notre configuration en ajoutant deux comptes à l'annuaire : un groupe "utilisateurs" et un utilisateur "mohaammed" appartenant à ce groupe (newuser.ldif) :vi newuser.ldif
dn: uid=mohammed,ou=Group,dc=menara,dc=ma
uid: mohammed
cn: mohammed
objectClass: account
objectClass: posixAccount
objectClass: posixGroup
objectClass: top
objectClass: shadowAccount
userPassword: {CRYPT}e0NSWVBUfUNBSzA2dFkzZG03Z0U
shadowLastChange: 11858
shadowMax: 99999
shadowWarning: 7
shadowInactive: -1
shadowExpire: -1
loginShell: /bin/sh
uidNumber: 5010
gidNumber: 5010
homeDirectory: /home/mohammed
gecos: mohammed
uid: mohammed
cn: mohammed
objectClass: account
objectClass: posixAccount
objectClass: posixGroup
objectClass: top
objectClass: shadowAccount
userPassword: {CRYPT}e0NSWVBUfUNBSzA2dFkzZG03Z0U
shadowLastChange: 11858
shadowMax: 99999
shadowWarning: 7
shadowInactive: -1
shadowExpire: -1
loginShell: /bin/sh
uidNumber: 5010
gidNumber: 5010
homeDirectory: /home/mohammed
gecos: mohammed
puis sauvegardez votre configuration
vi newgroup.ldif
objectClass: posixGroup
objectClass: top
cn: mohammed
gidNumber: 5010
puis sauvegardez votre configuration
Importer les données dans notre annuaire
Ensuite, pour entrer ces informations dans l'annuaire, il faut
utiliser la commande suivante :
# ldapadd -x -D "cn=Manager,dc=genfic,dc=com" -W -f /tmp/newuser.ldif
# ldapadd -x -D "cn=Manager,dc=genfic,dc=com" -W -f /tmp/newgroup.ldif
creation de répertoire de base d'utilisateur
mkdir /home/mohammed
modification de droit d'accès du repertoire
chown -R mohammed:mohammed /home/mohammed
apres copier les fichier trouve sur le répertoire /etc/skel vers /home/mohammed
cp /etc/skel/* /home/mohammed/
Permettre au système d'utiliser le répertoire
Dites au système de lire les informations utilisateur dans l'annuaire LDAP:redémarrer le serveur
#reboot
Conclusion
LDAP, par le biais de sa standardisation, permet une interopérabilité simple, fiable et pérenne et offre ainsi cet avantage de pouvoir centraliser l'information au sein d'une entreprise : comptes POSIX, adresses de messagerie, et autres informations y trouvent leur place.OpenLDAP offre une implémentation complète et robuste de ce standard en proposant un serveur et des outils clients.
Vous avez appris à travers ce cours à mettre en place votre premier annuaire. Félicitations, mais ça n'est qu'un début... ! La connexion de Samba à cet annuaire est un exemple parmi d'autres, qui, je l'espère, vous donnera envie d'aller plus loin et de mettre en place un véritable système d'informations centralisé grâce à LDAP.
Aucun commentaire :
Enregistrer un commentaire