Social Icons

lundi 10 septembre 2012

Installation et Configuration de serveur Openldap sous linux

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 :
  • 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 1:              #/etc/init.d/slapd [start|stop|restart]

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

dn: ou=Group,dc=menara,dc=ma
ou: Group
objectClass: organizationalUnit
description: Groupes d'utilisateurs

ou=People,dc=menara,dc=ma
ou: People
objectClass: top
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

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



 puis sauvegardez votre configuration

vi newgroup.ldif

dn: cn=mohammed,ou=Group,dc=menara,dc=ma
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:

#system-config-authentication

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

Abonnez-vous par e-mail

Pour recevoire les nouvelles article