WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Les services d'annuaires LDAP: application au référencement dans les transports terrestres camerounais

( Télécharger le fichier original )
par Dany Stéphane ZIE FOMEKONG
Ecole supérieure de commerce et de gestion - Siantou - Marster en informatique approfondie 2006
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

B. Implémentation

B.1 Installation et configuration des serveurs

1. Apache et BIND

Pour ce qui concerne l'installation d'apache et de Bind, nous n'entrerons pas dans les détails d'installation. On va configurer les deux serveurs selon nos besoins.

On utilisera le serveur Web Apache dans sa version 2.1.0 et le serveur de noms Bind dans sa version 9 qui sont par ailleurs tous gratuits.

a) Apache

Pour rendre accessible la consultation et l'administration de l'annuaire via un simple navigateur web, il faut compiler apache à l'installation avec le paquetage auth_ldap.

b) Bind

Pour configurer le DNS nous allons prendre comme domaine fictif de travail master.net et comme hôte dany. Notre réseau a une adresse de classe C 192.168.100 car la démonstration sera effectuée en Intranet et le serveur LDAP avec lequel nous travaillons a l'adresse 192.168.100.2

- Fichier named.conf

Nous allons créer deux zones master.net et 0.168.192.in-addr.arpa pour la résolution noms-adresses et adresses-noms.

// Zone master.net

zone "master.net" {

type master;

file "db.master";

};

// zone resolution inverse

zone "0.168.192.in-addr.arpa" {

type master;

file "db.192.168.100";

};

- Fichier db.master

$TTL 38400

master.net. IN SOA dany.master.net. dany.master.net. (

1 ; numéro de série

10800 ; rafraîchissement

3600 ; nouvel essai

604800 ; Obsolescence après une semaine

86400 ) ; TTL minimal de 1 jour

; serveur de noms

@ IN NS dany.master.net.

; adresse et alias

; adresse des hôtes

IN A 192.168.100.2

localhost.master.net IN A 127.0.0.1

mail.master.net IN A 192.168.100.2

dany IN A 192.168.100.2

dany.master.net IN A 192.168.100.2

; alias

www IN CNAME dany.master.net.

mail IN CNAME dany.master.net.

news IN CNAME dany.master.net.

ldap IN CNAME dany.master.net.

pop IN CNAME dany.master.net.

imap IN CNAME dany.master.net.

; Spécification serveur de messagerie

@ IN MX 10 dany.master.net.

Test DNS avec nslookup

[root@dany named]# nslookup master.net

Note: nslookup is deprecated and may be removed from future releases.

Consider using the `dig' or `host' programs instead. Run nslookup with

the `-sil[ent]' option to prevent this message from appearing.

Server: 192.168.100.2

Address: 192.168.100.2#53

Name: master.net

Address: 192.168.100.2

[root@dany named]#

2. Package OpenLDAP

a) Installation par tarball

On vérifie d'abord qu' Openldap n'est pas déjà installé sur votre système en tapant :

rpm -qa | grep -i ldap

On supprime du système les packages contenus dans la liste avec la commande rpm -e nom-du-package (sauf libldap2 qui sert pour de nombreux packages).
Si pour des histoires de dépendance vous n'arrivez pas à tout supprimer ce n'est pas bien grave car par défaut le tarball et les packages mdk ne placent pas les fichiers au même endroit. Lors du lancement du daemon et des exécutables il faut juste faire attention d'appeler le bon exécutable (servez vous de la commande which nom-exe ).

L'archive à récupérer est  openldap-2.2.28.tgz qu'on décompressera en tapant :

tar xvfz openldap-2.2.28.tgz

Cela va nous créer un répertoire openldap-2.2.28. Avant d'aller plus loin il faudra installer (commande urpmi nom-package ) les packages suivants de la Mandrake 9.2

libgdbm2
libgdbm2-devel

En effet par défaut openldap utilise une base de donnée Berkeley dans sa version 4.2 qui est utilisée, comme la 10.0 ne propose que la 4.1, je me suis rabattu sur la base de donnée de type ldbm. Puis on tape successivement :

./configure --enable-crypt --disable-bdb --enable-ldbm

make depend

make

On peut tester maintenant que tout marche bien  en tapant :

cd tests
make

pour installer les binaires de ldap on tapera, en tant que root :

cd ..
make install

Les binaires sont installés par défaut dans /usr/local/sbin et /usr/local/libexec, les fichiers de config dans /usr/local/etc/openldap et les bases dans /usr/local/var/openldap-data. Les biblio vont se trouver sous /usr/local/lib, si ce n'est pas fait, rajouter ce chemin à la fin du fichier /etc/ld.so.conf et tapez

ldconfig

pour changer l'emplacement de tous ces fichiers taper:

configure -help

b) Installation par RPM

Il suffit d'installer (commande urpmi openldap) les packages suivants (dans l'ordre) :

libldap2-2.1.25-6mdk
openldap-2.1.25-6mdk
perl-ldap-0.31-2mdk
openldap-servers-2.1.25-6mdk
openldap-clients-2.1.25-6mdk

Vous pouvez maintenant installer aussi le package php-ldap pour le support LDAP de PHP avec Apache.

 

c) Mise en place des classes d'objet

Le fichier de configuration slapd.conf fait appel à /usr/local/etc/openldap/schema/core.schema (/usr/share/openldap/schema/core.schema pour une install avec package) qui décrit les classes d'objet. Voilà un exemple avec la classe "person"

objectclass ( 2.5.6.6 NAME 'person'
        DESC 'RF256: a person'
        SUP top STRUCTURAL
        MUST ( sn $ cn )
        MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )

MUST correspond au attributs obligatoires et MAY à ceux facultatifs
objectClass est le nom de la classe qui descend elle même de la classe top
sn correspond à surname (nom)
cn correspond à common name (prénom nom)
Je vous laisse déviner la signification des autres attributs.

On voit qu'il est nécessaire de fournir les attributs sn (surname) et cn (common name), sont facultatifs le mot de passe (userPassword), le numéro de téléphone (telephoneNumber ), les liens (seeAlso) et la description.

Les attributs sont définis dans le même fichier, la syntaxe est la suivante pour telephoneNumber par exemple :

attributetype ( 2.5.4.20 NAME 'telephoneNumber'
        DESC 'RF256: Telephone Number'
        EQUALITY telephoneNumberMatch
        SUBSTR telephoneNumberSubstringsMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} )

Pour créer les classes d'objet agency et vhicule dérivant de organizationalUnit, disposant de l'attribut obligatoire title en plus et des arguments facultatifs ou (groupe de travail) et l (localistation). On tapera dans le fichier core.schema juste après la définition de la classe organizationalUnit.

objectclass ( 2.5.6.6.2 NAME `agency' SUP organizationalUnit STRUCTURAL
    MUST ( title )
    MAY ( ou $ l ) )

Vous noterez le nombre 2.5.6.6.2, ce nombre doit être unique dans le fichier, il dérive directement du numéro de la classe objet organizationalUnit qui a pour numéro 2.5.6.6. Il est évident que comme agency et vhicule dérivent de organizationalUnit, les attributs ** sont aussi obligatoires.

A noter qu'avec une installation avec package les classes "locales" peuvent être créées dans le fichier /etc/openldap/schema/local.schema

d) Choix du suffixe

Le rootDSE ou suffixe correspond à l'entrée tout en haut de l'arbre (DIT) de l'annuaire, on utilise généralement le nom de domaine, avec la syntaxe suivante  dc=master, dc=net  pour le domaine master.net (dc correspond à Domain Component).

e) Configuration du serveur LDAP

# $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.8.8.6 2001/04/20 23:32:43 kurt Exp $

#

# See slapd.conf(5) for details on configuration options.

# This file should NOT be world readable.

#

# Modified by Christian Zoffoli <czoffoli@linux-mandrake.com>

# Version 0.2

#

include /usr/share/openldap/schema/core.schema

include /usr/share/openldap/schema/cosine.schema

include /usr/share/openldap/schema/corba.schema

include /usr/share/openldap/schema/inetorgperson.schema

include /usr/share/openldap/schema/java.schema

include /usr/share/openldap/schema/krb5-kdc.schema

include /usr/share/openldap/schema/kerberosobject.schema

include /usr/share/openldap/schema/misc.schema

include /usr/share/openldap/schema/nis.schema

include /usr/share/openldap/schema/openldap.schema

#include /usr/share/openldap/schema/rfc822-MailMember.schema

#include /usr/share/openldap/schema/pilot.schema

#include /usr/share/openldap/schema/autofs.schema

#include /usr/share/openldap/schema/samba.schema

#include /usr/share/openldap/schema/qmail.schema

#include /usr/share/openldap/schema/mull.schema

#include /usr/share/openldap/schema/netscape-profile.schema

#include /usr/share/openldap/schema/trust.schema

#include /usr/share/openldap/schema/dns.schema

#include /usr/share/openldap/schema/cron.schema

include /etc/openldap/schema/local.schema

# Define global ACLs to disable default read access.

include /etc/openldap/slapd.access.conf

# Do not enable referrals until AFTER you have a working directory

# service AND an understanding of referrals.

#referral ldap://root.openldap.org

pidfile /var/run/ldap/slapd.pid

argsfile /var/run/ldap/slapd.args

modulepath /usr/lib/openldap

#moduleload back_dnssrv.la

#moduleload back_ldap.la

#moduleload back_passwd.la

#moduleload back_sql.la

# SASL config

#sasl-host ldap.master.net

# To allow TLS-enabled connections, create /usr/share/ssl/certs/slapd.pem

# and uncomment the following lines.

#TLSRandFile /dev/random

#TLSCipherSuite HIGH:MEDIUM:+SSLv2

TLSCertificateFile /etc/ssl/openldap/ldap.pem

TLSCertificateKeyFile /etc/ssl/openldap/ldap.pem

#TLSCACertificatePath /etc/ssl/openldap/

TLSCACertificateFile /etc/ssl/openldap/ldap.pem

#TLSVerifyClient 0

#######################################################################

# ldbm database definitions

#######################################################################

database ldbm

suffix "dc=master,dc=net"

#suffix "o=My Organization Name,c=US"

rootdn "cn=Manager,dc=master,dc=net"

#rootdn "cn=Manager,o=My Organization Name,c=US"

# Cleartext passwords, especially for the rootdn, should

# be avoided. See slappasswd(8) and slapd.conf(5) for details.

# Use of strong authentication encouraged.

rootpw {SSHA}RK9gP6YyIOOreXm5+oFsZ8W+9AiEL4el

# The database directory MUST exist prior to running slapd AND

# should only be accessable by the slapd/tools. Mode 700 recommended.

directory /var/lib/ldap

# Indices to maintain

#index objectClass eq

index objectClass,uid,uidNumber,gidNumber eq

index cn,mail,surname,givenname eq,subinitial

# logging

loglevel 256

# Basic ACL

access to attr=userPassword

by self write

by anonymous auth

by dn="cn=Manager,dc=master,dc=net" write

by * none

access to *

by dn="cn=Manager,dc=master,dc=net" write

by * read

access to attr=userPassword

by self write

by anonymous auth

by dn="dc=master,dc=net" write

by * none

Le fichier ldap.conf peut être vide dans un premier temps voire inexistant.

Le mot de passe de l'administrateur est secret par défaut et en clair. Pour des raisons de sécurité il vaut mieux le crypté.

slappasswd -v -s Mot_de_Passe -h {SSHA}

A la place de

rootpw      secret

Dans slapd.conf, vous mettrez donc:

rootpw          {SSHA}RK9gP6YyIOOreXm5+oFsZ8W+9AiEL4el


 

f) Lancement du serveur

Pour une installation par RPM, vous allez retrouver un fichier de lancement ldap sous /etc/rc.d/init.d. Pour l'installation par tarball, voici un fichier ldap à placer sous /etc/rc.d/init.d, attention ce fichier utilise les chemins par défaut, vous devez le modifier si nécessaire et lui donner des droits d'exécution (755). Vous devez aussi modifier (non nécessaire pour installation par rpm) le fichier /etc/rc.d/init.d/functions et à la place de :

PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"

On mettra

PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/libexec"

pour que serveur LDAP soit lancé automatiquement à l'état de marche 3, 4 et 5 ( les deux types d'install) on tapera :

chkconfig --level 345 ldap on

Pour l'arrêter à l'état de marche 0, 1, 2 et 6, on tapera:

chkconfig --level 0126 ldap off

Au prochain reboot le serveur sera lancé automatiquement, pour éviter un reboot pour lancer le serveur, il suffit de taper :

/etc/rc.d/init.d/ldap start ou service ldap start

 
 

g) Ajouter un enregistrement

Nous avons différents moyens d'ajouter des données à l'annuaire, pour des besoins de configurations on va d'abord aborder la méthode manuelle. Pour ajouter des données au serveur LDAP nous devons fournir un fichier au format LDIF (pour LDAP Directory Interchange Format), le fichier est un format texte facilement lisible au contraire du format interne de l'annuaire. Notre fichier comportera l'enregistrement du domaine (master.net) pour notre annuaire et les enregistrements des 10 provinces du Cameroun, enregistrements figés dans la base de données.

A noter que:

- chaque enregistrement dans le fichier est séparé du précédent et du suivant par une ligne vierge,

- les espaces sont pris en compte. ATTENTION, il est très important qu'il n'y ait aucun espace en fin de ligne.

Creation du fichier LDIF de base (base.ldif)

# Build the root node.

dn: dc=master,dc=net

dc: master

objectClass: top

objectClass: dcObject

objectClass: organization

o: Annuaire LDAP Master

#Province du Adamaoua

dn: ou=adamaoua,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: adamaoua

#Province du Centre

dn: ou=centre,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: centre

#Province du Littoral

dn: ou=littoral,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: littoral

#Province du Est

dn: ou=est,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: est

#Province du Ouest

dn: ou=ouest,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: ouest

#Province du Sud-ouest

dn: ou=sud-ouest,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: sud-ouest

#Province du Nord-ouest

dn: ou=nord-ouest,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: nord-ouest

#Province du Nord

dn: ou=nord,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: nord

#Province du Extreme-nord

dn: ou=extreme-nord,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: extreme-nord

#Province du Sud

dn: ou=sud,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: sud

Pour ajouter l'enregistrement il faut utiliser la commande ldapadd qui necessite une authentification.

ldapadd -x -D "description du dn de l'administrateur" -W -f nom-du-fichier-ldif

Dans notre cas on aura concretement:

[root@dany openldap]# ldapadd -x -c -D "cn=Manager,dc=master,dc=net» -W -f base.ldif

Enter LDAP Password:

adding new entry "dc=master,dc=net"

adding new entry "ou=adamaoua,dc=master,dc=net"
adding new entry "ou=centre,dc=master,dc=net"
adding new entry "ou=littoral,dc=master,dc=net"

adding new entry "ou=est,dc=master,dc=net"

adding new entry "ou=ouest,dc=master,dc=net"

adding new entry "ou=sud-ouest,dc=master,dc=net"

adding new entry "ou=nord-ouest,dc=master,dc=net"

adding new entry "ou=nord,dc=master,dc=net"

adding new entry "ou=extreme-nord,dc=master,dc=net"

adding new entry "ou=sud,dc=master,dc=net"

[root@dany openldap]#

A présent il faut vérifier tout ça. On va utiliser la fonction ldapserach

[root@dany projet]# ldapsearch -x -b 'dc=master,dc=net' '(objectclass=*)'

# extended LDIF

#

# LDAPv3

# base <dc=master,dc=net> with scope sub

# filter: (objectclass=*)

# requesting: ALL

# master.net

dn: dc=master,dc=net

objectClass: top

objectClass: dcObject

objectClass: organization

dc: master

o: masterLDAP

# adamaoua, master.net

dn: ou=adamaoua,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: adamaoua

# centre, master.net

dn: ou=centre,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: centre

# littoral, master.net

dn: ou=littoral,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: littoral

# est, master.net

dn: ou=est,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: est

# ouest, master.net

dn: ou=ouest,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: ouest

# sud-ouest, master.net

dn: ou=sud-ouest,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: sud-ouest

# nord-ouest, master.net

dn: ou=nord-ouest,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: nord-ouest

# nord, master.net

dn: ou=nord,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: nord

# extreme-nord, master.net

dn: ou=extreme-nord,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: extreme-nord

# sud, master.net

dn: ou=sud,dc=master,dc=net

objectClass: top

objectClass: organizationalunit

ou: sud

# search result

search: 2

result: 0 Success

# numResponses: 13

# numEntries: 11

[root@dany projet]#

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Un démenti, si pauvre qu'il soit, rassure les sots et déroute les incrédules"   Talleyrand