Qu`est ce que LDAP ? LDAP (Lightweight Directory Access Protocol

Transcription

Qu`est ce que LDAP ? LDAP (Lightweight Directory Access Protocol
Qu’est ce que LDAP ?
LDAP (Lightweight Directory Access Protocol, protocole d'accès aux annuaires allégé) est
une norme ouverte proposée pour les services d'annuaire globaux ou locaux sur intranet et/ou
Internet, en particulier pour les services d’annuaire X500.Les détails de LDAP sont définis
dans RFC2251"The Lightweight Directory Access Protocol (v3)" et d’autres documents
comportant les spécifications techniques : RFC3377
Quel genre d’information peut être stocké dans l’annuaire ?le modèle de données de LDAP
est basé sur des entrées. Une entrée est une collection d’attributs qui a un unique
Distinguished Name (DN). Le DN est employé pour se référer à l’entrée de manière claire.
DN:relativeDomainName=domain1,dc=nic,dc=cctld
objectClass:dNSZone
objectClass:zonePerson
relativeDomainName:domain1
zoneName:cctld
dNSClass:IN
proprietaire:CLIENT1
dateacquis:20040604041800Z
validite:20060605164000Z
technical-contact: ALAIN AINA
technical-contact:AIT, bangkok
technical-contact:Tel:+78123455678-Email:[email protected]
admin-contact: John CRAIN
admin-contact:ICANN
admin-contact:Tel:+2282255555 - Email: [email protected]
dNSTTL:7200
nSRecord: adjo.cafe.org.
nSRecord: ns.psg.com.
Comment l’information est-elle arrangée ? Dans LDAP, les entrées sont structurées sous
forme d’un arbre hiérarchique. Traditionnellement, cette structure reflétait les frontières
géographique et/ou organisationnelle. L’arbre peut également être arrangée sur la base des
noms de domaine Internet. Cette approche d’appellation grandissante devient populaire car
elle soutient que les services d’annuaires soient localisés en utilisant le DNS
.
En outre, LDAP vous permet de contrôler quels attributs sont exigés et permis dans une entrée
par l’utilisation d’un attribut spécial appelé classe d’objet ou ObjectClass. Les valeurs de
l’attribut ObjectClass déterminent les règles de schéma que l’entrée doit obéir.
objectclass ( 1.1.2.2.2 NAME 'myPerson'
DESC 'my person'
SUP inetOrgPerson
MUST ( myUniqueName $ givenName )
MAY myPhoto )
attributetype ( 1.1.2.1.2 NAME 'myPhoto'
DESC 'a photo (application defined format)'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE )
Comment l’information est-elle référencée ? Une entrée est référencée par son distinguished
name, qui est représentée en prenant le nom de l’entrée lui-même (appelé Relative
Distinguished Name ou RDN) et en enchaînant les noms des entrées de ses ancêtres. Le
format du DN complet est décrit dans RFC2253, "Lightweight Directory Access Protocol
(v3): UTF-8 String Representation of Distinguished Names."
DN:relativeDomainName=domain1,dc=nic,dc=cctld
Comment l'information est-elle consultée ? LDAP définit des opérations pour interroger et mettre à
jour l'annuaire. Des opérations sont fournies pour ajouter et supprimer une entrée de l'annuaire,
changer une entrée existante et changer le nom d’une entrée. La majeure partie du temps, bien que,
LDAP soit employé pour rechercher l'information dans l'annuaire, l'opération de recherche de LDAP
permet à une certaine partie de l'annuaire d'être recherchée par des entrées qui vérifient quelques
critères indiqués par un filtre de recherche. L'information peut être demandée par chaque entrée qui
vérifie les critères.
Comment l’information est-elle protégée contre les accès non autorisé ? Quelques services
d'annuaire n'assurent aucune protection, permettant à n'importe qui de voir l'information.
LDAP fournit à un client un mécanisme de s’authentifier ou de prouver son identité à un
serveur d’annuaire, préparant ainsi le terrain pour que le contrôle d'accès riche protège
l'information que le serveur contient. LDAP supporte également des services sécuritaires de
confidentialité et d'intégrité.
Modèles de LDAP
Les modèles de LDAP représentent les services fournis par un serveur, comme vu par un client. Ils
sont des modèles abstraits qui décrivent les diverses facettes d’un annuaire LDAP. RFC 2251 divise
un annuaire LDAP en deux composants : le modèle du protocole et le modèle de données.
Modèle de données
Le modèle de données fournit les structures et le type de données nécessaire pour construire l’arbre
d'un annuaire LDAP. Une entrée est l’unité de base dans un annuaire LDAP. Vous pouvez visualiser
une entrée comme nœud intérieur ou extérieur dans l’arbre de l’annuaire ou DIT (Directory Information
Tree).Une entrée contient des informations sur un exemple d’un ou plusieurs Classes d’objets
(objectclass). Ces classes d’objets ont certains attributs requis ou facultatifs. Les types d’attributs ont
défini des codes et des règles qui régissent de telles choses comme type de données que l’attribut
peut contenir et comment comparer ces données pendant une recherche.
Modèle de nommage
Le modèle de nommage définit comment des entrées et les données dans l’arbre
d’information (ou DIT) sont uniquement mises en référence. Chaque entrée a un attribut qui
est unique parmi toutes les entrées filles d’un parent simple. Cet attribut unique s’appelle
relative distinguished name (RDN). Vous pouvez identifier de manière unique n’importe
quelle entrée dans un annuaire en suivant le RDNs de toutes les entrées du chemin du noeud
désiré jusqu’à la racine de l’arbre. Cette chaîne créée en combinant RDNs pour former un
nom unique s’appelle le noeud distinguished name (DN).
Modèle fonctionnel
Le modèle fonctionnel est le protocole lui-même. Le modèle fonctionnel décrit le
moyen d’accéder aux données et les opérations qu’on peut leur appliqués. Le modèle
fonctionnel définit les opérations d’interrogation (recherche et lecture), de comparaison, de
mise à jour (écriture), d’authentification et de contrôle ainsi que des opérations étendues
valables uniquement pour la version 3 de LDAP.
access to *
by self write
by anonymous auth
by users read
Modèle de sécurité
Le modèle de sécurité fournit un mécanisme au client afin qu’ils prouvent leur identité
(authentification) et aux serveurs la possibilité de contrôler l’accès aux données des utilisateurs
authentifiés (autorisation).LDAPv3 fournit plusieurs méthodes d’authentification non disponibles dans
les versions antérieures du protocole. Quelques dispositifs, tels que des listes de contrôles d’accès,
n’ont pas encore été normalisés, laissant les fournisseurs à leurs propres dispositifs.
Le service d’annuaire LDAP fonctionne en mode client serveur. Bon nombres de serveurs LDAP
contiennent des données comportant l’arbre d’information de l’annuaire (DIT). Un client
LDAP se connecte à un serveur LDAP, puis émet une requête pour obtenir des informations
ou fournit au serveur des informations à entrer dans l'annuaire. Le serveur répond à la requête,
la renvoie à un autre serveur LDAP ou accepte les informations afin de les incorporer dans
l'annuaire.
Le nom présenté à un serveur LDAP référencé par une entrée sera la même qu’au niveau d’un
autre serveur LDAP.
Procédure d’Installation de openldap
Installation de Berkelley DB
Maintenant nous devons obtenir le code source du DB de Berkeley sur
http://www.sleepycat.com. Veuillez télécharger la version 4.2.52 de Berkeley DB sans
cryptage.
$cd /tmp
$ tar -xvzf db-4.2.52.NC.tar.gz
$ ./db-4.2.52.NC /dist/configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin -sbindir=/usr/sbin --libdir=/usr/lib
$make
$su –
Password: <root password>
#cd /tmp
#make install
Installation de openldap
Télécharger le logiciel
Une copie du logiciel peut être obtenu en suivant les instructions sur la page de
téléchargement de OPENLDAP (http://www.openldap.org/software/download/). Il est
recommandé que les nouveaux utilisateurs commencent avec la dernière version réalisée.
$cd /tmp
$tar -xvzf openldap-2.2.17.tar.gz
$cd openldap-2.2.17
$./configure --prefix=/usr --exec-prefix=/usr --libexecdir=/usr/sbin --sbindir=/usr/sbin -bindir=/usr/bin --libdir=/usr/lib --oldicludedir=/usr/include --localstatedir=/var/run -sysconfdir=/etc --enable-shared --with-gnu-ld --enable-debug --with-tls --with-threads -enable-crypt --enable-cleartext --enable-slapd --enable-slurpd --enable-bdb --enable-local -enable-passwd --enable-static --enable-FEATURE --with-PACKAGE --enable-syslog enable-ldap --with-readline
$ make depend
$make
$ cd tests
$ make
$ su –
Password: <root password>
#cd /tmp/openldap-2.2.17
#make install
Editez le fichier de configuration
Utilisez votre éditeur favori pour ouvrir l’exemple fourni de slapd.conf (habituellement
installé dans /etc/openldap/slapd.conf)pour contenir la définition de la base de données
BDB sous la forme:
database bdb
suffix “dc=<MY-DOMAIN>,dc=<COM>”
rootdn “cn=Manager,dc=<MY-DOMAIN>,dc=<COM>”
rootpw secret
directory /var/openldap-data
Soyez sûr de remplacer <MY-DOMAIN> et <COM> avec les domain component approprié
de votre nom de domaine .Par exemple, nic.cctld, utilisera:
database bdb
suffix "dc=nic,dc=cctld"
rootdn "cn=Manager,dc=nic,dc=cctld"
rootpw secret
directory /var/openldap-data
Vous devez être certain de spécifier un répertoire où les fichiers index doivent être crées.
Vous avez besoin de créer ce répertoire avec les droits appropriés devant permettre à slapd
d’ y écrire.
#mkdir –p /var/openldap-data
#chmod –R 700 /var/openldap-data
Démarrer SLAPD
Vous pourrez maintenant démarrer le serveur autonome LDAP, en exécutant la commande :
slapd.
Pour vérifier si le serveur fonctionne et est bien configuré, vous pourrez faire une recherche
sur le serveur avec ldapsearch.
ldapsearch -x -b ‘’ -s base ‘(objectclass=*)’ namingContexts
Notons que l’utilisation des simples quotes autour des paramètres de commande évite que
les caractères spéciaux soient interprétés par le shell. Ceci devrait retourner:
dn:
namingContexts: dc=nic,dc=cctld
Ajouter les entrées initiales à votre annuaire
Vous utiliserez ldapadd pour ajouter des entrées à votre annuaire LDAP. ldapadd requiert une
entrée au format LDIF. Nous le ferons en deux étapes:
o
Créer un fichier LDIF
o
Exécuter ldapadd
Utiliser votre éditeur favori et créer un fichier LDIF qui contient :
dn:dc=nic,dc=cctld
objectClass:dcObject
objectClass:organization
o:CCTLD COMPANY
dc:cctld
dn:cn=Manager,dc=nic,dc=cctld
objectClass:organizationalRole
cn:Manager
Maintenant vous pouvez insérer ces entrées dans votre annuaire en utilisant la commande
ldapadd.
ldapadd -x -D "cn=Manager,dc=nic,dc=cctld" -W -f cctld.ldif
Où cctld.ldif est le fichier que vous avez crée en haut
Voir si cela fonctionne
Maintenant nous pourrons vérifier si les entrées ajoutées sont dans l’annuaire. Vous pourrez
utiliser n’importe quel client LDAP pour faire ceci, mais notre exemple utilise l’outil
ldapsearch
ldapsearch -x -b ‘dc=nic,dc=cctld’ ‘(objectclass=*)’
Cette commande recherchera et affichera chaque entrée de la base de données. Vous êtes
maintenant en mesure d’ajouter plusieurs entrées en utilisant ldapadd ou d’autres client
LDAP, expérimenté avec diverses options de configuration, backend arrangements, etc…
Bind et LDAP
Télécharger bind-9.3.0 sur www.isc.org
Télécharger bind-sdb-ldap-1.0-beta et dnszone.schema www.venaas.no/ldap/bind-sdb
Télécharger localzone.schema à partir de http://www.trstech.net/registry/localzone.schema
1-Maintenir votre repertoire schéma de ldap
# cp /tmp/dnszone.schema
/etc/openldap/schema/
#cp /tmp/localzone.schema
/etc/openldap/schema/
Soyez sûr que root est le propriétaire de ces deux fichiers.
2-Mettre à jour votre fichier slapd.conf en y ajoutant les lignes suivantes:
include
include
include
include
/etc/openldap/schema/core.schema
/etc/openldap/schema/cosine.schema
/etc/openldap/schema/dnszone.schema
/etc/openldap/schema/localzone.schema
#
index relativeDomainName,zoneName
pres,eq
index nSRecord,aRecord,sOARecord,mXRecord
pres,eq
3-Installation
$cd /tmp
$tar -xvzf /tmp/bind-9.3.0.tar.gz
$tar -xvzf /tmp/bind-sdb-1.0.tar.gz
$cp /tmp/bind-sdb-1.0/ldapdb.c /tmp/bind-9.3.0/bin/named
$cp /tmp/bind-sdb-1.0/ldapdb.h /tmp/bind-9.3.0/bin/named/include/
4-Editer avec votre éditeur favori /tmp/bind-9.3.0/bin/named/Makefile.in et y ajouter les lignes
suivantes :
DBDRIVER_OBJS = ldapdb.@O@
DBDRIVER_SRCS = ldapdb.c
DBDRIVER_INCLUDES = -I/usr/local/include
DBDRIVER_LIBS = -L/usr/local/lib -lldap –llber
5-Editer /tmp/bind-9.3.0/bin/named/main.c puis ajouter :
o la ligne # include <ldapdb.h> below # include "xxdb.h"
o la ligne ldapdb_init(); below xxdb_init();
o la ligne ldapdb_clear(); below xxdb_clear();
6-Après ces changements, vous êtes prêt pour créer le binaire de LDAP en éxécutant:
$cd /tmp/bind-9.3.0/
$./configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin -libexecdir=/usr/libexec --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib --oldincludedir=/usr/include/
--enable-static --enable-shared --enable-fast-install --with-gnu-ld with-pic
$make
$su –
Password: <root password>
#cd /tmp/bind-9.3.0
#make install
Exécuter named -c /etc/namedb/named.conf –u bind -g et regarder les messages d’erreurs
7- créez un fichier (cctld.ldif) avec des données de zone ( cctld Zone et deux sous-domaines :
domain1 et domain2)
dn:relativeDomainName=@,dc=nic,dc=cctld
objectClass:dNSZone
objectClass:zonePerson
relativeDomainName:@
zoneName:cctld
dNSClass:IN
proprietaire: Republic of
sOARecord: ns1.cctld.net.
Admin.mail.cctld.
2004060101
604800
3600
technical-contact:Alain AINA
technical-contact: ISOC EDU
technical-contact: Email: [email protected]
admin-contact: ISOC
admin-contact: US
admin-contact:Tel:+1711112255555 Email:[email protected]
nSRecord:ns1.cctld.net.
nSRecord:ns2.isoc.org.
nSRecord:ns3.icann.org.
nSRecord:ns4.nsrc.org.
dn:relativeDomainName=domain1,dc=nic,dc=cctld
objectClass:dNSZone
objectClass:zonePerson
relativeDomainName:domain1
zoneName:cctld
dNSClass:IN
proprietaire:CLIENT1
dateacquis:20040604041800Z
validite:20060605164000Z
technical-contact: ALAIN AINA
technical-contact:AIT, bangkok
technical-contact:Tel:+78123455678-Email:[email protected]
admin-contact: John CRAIN
admin-contact:ICANN
admin-contact:Tel:+2282255555 - Email: [email protected]
dNSTTL:7200
nSRecord: adjo.cafe.org.
nSRecord: ns.psg.com.
dn:relativeDomainName=domain2,dc=nic,dc=cctld
objectClass:dNSZone
objectClass:zonePerson
relativeDomainName:domain2
21600 3600
zoneName:cctld
dNSClass:IN
proprietaire:Client2
dateacquis:20040604041800Z
validite:20060605164000Z
technical-contact: samuel SODATONOU
technical-contact:Tel:+22822192245
admin-contact: Steve Huter
admin-contact:Tel:+1645662219235 - Email: [email protected]
dNSTTL:7200
nSRecord: localhost.cctld.
nSRecord: ns.ripe.net.
8-Ajoutez le fichier cctldzone.ldif à votre base ldap:
#ldapadd -x -D ‘’cn=Manager,dc=nic,dc=cctld’’ -W -f cctldzone.ldif
Password: <ldap Manager password>
9-Editez /etc/named.conf et insérez les lignes suivantes
zone "cctld" IN {
type master ;
database "ldap ldap://localhost/dc=nic,dc=cctld??sub? 172800";
};
Après modification de votre fichier named.conf , redémarrer le service named et exécutez dig pour
rechercher les enregistrements NS et SOA de votre cctld, domain1.cctld et domain2.cctld .
dig @localhost cctld soa +norec
dig @localhost cctld ns +norec
dig @localhost domain1.cctld
dig @localhost. domain2.cctld
Installation de php-ldapadmin
NB: Vous avez besoin de apache + php avec support ldap
Obtenez le fichier source de phpldapadmin-0.9.4b.tar.gz sur
http://phpldapadmin.sourceforge.net/download.php
#mkdir –p /var/www/html/ldap
# cd /var/www/html/ldap
# tar -xvzf /tmp/phpldapadmin-0.9.4b.tar.gz
# mv phpldapadmin-0.9.4b ./phpldapadmin
#cd phpldapadmin
#cp config.php.example ./config.php
Editez le fichier config.php et changez le nom du serveur, la base, le binddn et le mot de passé de
bind
Exemple
$servers[$i][‘host’] = ‘ldap://localhost’;
$servers[$i][‘base’] = ‘dc=nic,dc=cctld’;
$servers[$i][‘port’] = 389;
$servers[$i][‘auth_type’] = ‘config’;
$servers[$i][‘login_dn’] = ‘cn=Manager,dc=nic,dc=cctld’;
$servers[$i][‘login_pass’] = ‘secret’;
Après avoir changé votre fichier config.php, vous pouvez vous connectez avec votre navigateur Web à
l’adresse htpp://ip_addresse/ldap/phpldapadmin
Autres clients LDAP
LDAPBROWSER : http://www.iit.edu/~gawojar/ldap/
WEB2LDAP : http://freshmeat.net/projects/web2ldap/
GQ :http://biot.com/gq/
Reference: http://www.trstech.net/registry

Documents pareils

TP Java EE

TP Java EE – sous Windows, il vous faudra configurer le fichier slapd.conf. – sous Linux, le fichier slapd.conf a été remplacé par un répertoire slapd.d qui contient des fichiers LDIF. La première étape dans ...

Plus en détail