Serveur OpenLdap
Introduction
Nous allons aborder la configuration d’un serveur en tant que contrôleur principale de domaine (P.D.C) avec LDAP.
Le protocole LDAP définit comment s'établit la communication client-serveur. Il fournit à l'utilisateur des commandes pour se connecter ou se déconnecter, pour rechercher, comparer, créer, modifier ou effacer des entrées.
Le serveur peut utiliser diverses bases de données pour stocker un répertoire, chacune d'elles étant optimisée de façon à permettre des opérations de consultation rapides et en grande quantité. Lorsqu'un client LDAP se connecte à un serveur LDAP, il peut soit consulter un répertoire, soit y apporter des modifications. Si l'application cliente tente de changer des informations dans un répertoire LDAP, le serveur vérifie d'abord que l'utilisateur est bien autorisé à effectuer des changements et ensuite ajoute ou met à jour les informations.
Le protocole LDAP fonctionne sur un modèle Requête-Réponse(s) : tant qu'un client ne sollicite pas le serveur, il ne lui transmet pas de réponse. En revanche, depuis l'ajout de l'extension IntermediateResponse à LDAP, une requête peut correspondre à plusieurs réponses.
En revanche, il existe dans LDAP des évènements asynchrones, appelés "alertes". Une alerte est souvent attachée à un évènement, par exemple la fin du support de TLS lors d'une session protégée par StartTLS. Ces alertes peuvent émaner du client comme du serveur, indifféremment.
Le Directory Information Tree
LDAP présente les informations sous forme d'une arborescence d'informations hiérarchique appelée DIT (Directory Information Tree), dans laquelle les informations, appelées entrées (ou encore DSE, Directory Service Entry), sont représentées sous forme de branches. Une branche située à la racine d'une ramification est appelée racine ou suffixe (en anglais root entry).
Chaque entrée de l'annuaire LDAP correspond à un objet abstrait ou réel (par exemple une personne, un objet matériel, des paramètres, …).
Chaque entrée est constituée d'un ensemble de paires clés/valeurs appelées attributs.
Les attributs des entrées
Une entrée de l'annuaire contient une suite de couples types d'attributs - valeurs d'attributs. Les attributs sont caractérisés par :
• Un nom qui l'identifie
• Un Object Identifier (OID) qui l'identifie également
• S'il est mono ou multi-valué
• Une syntaxe et des règles de comparaison
• Un indicateur d'usage
• Un format ou une limite de taille de valeur qui lui est associée
Les attributs décrivent généralement des caractéristiques de l'objet.
Architecture d'OpenLDAP
OpenLDAP comprend un certain nombre de caractéristiques importantes parmi lesquelles figurent :
• Prise en charge de LDAPv3 — OpenLDAP prend en charge SASL (Simple Authentication and Security Layer), TLS (Transport Layer Security) et SSL (Secure Sockets Layer) entre autres améliorations. De nombreux changements apportés au protocole depuis LDAPv2 visent à augmenter la sécurité de LDAP.
• Prise en charge de IPv6 — OpenLDAP prend en charge le protocole de la prochaine génération, Internet Protocol version 6.
• LDAP sur IPC — OpenLDAP peut communiquer au sein d'un système en utilisant IPC (de l'anglais interprocess communication). Il en résulte une sécurité améliorée car il n'est plus nécessaire de communiquer à travers un réseau.
• Mise à jour de C API — Améliore la manière dont les programmeurs se connectent aux serveurs de répertoires LDAP et les utilisent.
• Prise en charge de LDIFv1 — Grâce à cette prise en charge, OpenLDAP 2.0 est pleinement compatible avec la version 1 du format LDIF (ou LDAP Data Interchange Format).
• Amélioration du serveur autonome LDAP — À présent le serveur inclut entre autres un système de contrôle d'accès mis à jour, un pool de conversation et des outils plus performants.
Installation et configuration
Au niveau du serveur LDAP
Nous disposons d'un pc qui possède une distribution Centos
Installations des paquets.
Tout d'abord nous allons installer les paquets samba.
=> yum install openldap-servers openldap-clients samba
Nous allons ensuite Configuré notre serveur Ldap pour qu’il ait comme suffixe le domaine « info » et comme dompte administrateur : admin /password
Dans /etc/openldap/slapd.conf, tapez
suffix "dc=info,dc=com"
rootdn "cn=admin,dc=info,dc=com"
rootpw password
Ensuite nous allons crypter le mot de passe
=> slappasswd -s password
Lancement du service LDAP
=> service ldap start
Création d'un fichier de base
Nous allons ensuite crée un fichier ldif de base qui nous permet de demander au serveur ldap de crée la base de l’arborescence.
=> [root@localhost ~]# nano ~/base.ldif
Fichier base.ldif
dn: dc=info,dc=com
dc: info
objectClass: domain
Importez le fichier base.ldif :
[root@localhost ~]# ldapadd -x -D "cn=admin,dc=info,dc=com" -w password -f ~/base.ldif
Resultat
adding new entry "dc=info,dc=com "
Création d’une Unité Organisationnel
Nous allons crée une OU que nous nommerons “user”
=> [root@localhost ~]# nano ~/user.ldif
Fichier « user.ldif »
dn: ou=User,dc=info,dc=com
ou: User
objectClass: organizationalUnit
dn: uid=user1,ou=User,dc=info,dc=com
uid: user1
cn: user1
displayName: User 1
givenName: User
sn: user1
objectClass: inetOrgPerson
userPassword: password
Importer le fichier user.ldif
[root@localhost ~]# ldapadd -x -D "cn=admin,dc=info,dc=com" -w password -f ~/user.ldif
Resultat:
adding new entry "ou=User ,dc=info, dc=com"
adding new entry "uid=user1,ou=Contact,dc=info,dc=com"
Contrôleur de domaine principal (PDC) utilisant openLDAP
Configuration de smb.conf
Nous allons apporter les modifications suivantes :
passdb backend = ldapsam:ldap://info.com
…
ldap suffix = dc=info,dc=com
ldap machine suffix = ou=User
ldap user suffix = ou=User
ldap group suffix = ou= User
ldap idmap suffix = ou= User
ldap admin dn = cn=admin
ldap ssl = no
ldap passwd sync = yes
idmap uid = 15000-20000
idmap gid = 15000-20000
Ensuite exécuter
=> smbpasswd –W
Fichier smb.conf
#============================ Option Général =====================
[global]
#identificarion :
workgroup = INFO
server string = Samba Server Version %v
netbios name = SMBSERVER
#Gestion du réseau :
interfaces = lo eth0
hosts allow = 127. 192.168.2.
; bind interfaces only = yes
#Gestion des logs :
log file = /var/log/samba/%m.log
max log size = 50
#Mode d'authentification sur le domaine (demande d'un login et d'un password)
security = user
passdb backend = ldapsam:ldap://192.168.1.1
; map to guest = Bad User
; guest account = smbguest
#Gestion du cryptage des mots de passe
; encrypte passwords = yes
; smb passwd file = /etc/samba/smbpasswd
; username map = /etc/samba/smbusers
- Controleur de domaine
domain master = yes
domain logons = yes
- Gestion ldap
ldap suffix = dc=info,dc=com
ldap machine suffix = ou=info
ldap user suffix = ou= info
ldap group suffix = ou= info
ldap idmap suffix = ou= info
ldap admin dn = cn=admin
ldap ssl = no
ldap passwd sync = yes
idmap uid = 15000-20000
idmap gid = 15000-20000
- Gestion des paramètres de connections utilisateur
logon script = %m.bat
# the login script name depends on the unix user used
; logon script = %u.bat
logon path = \\%L\Profiles\%u
logon home = \\%L\Profiles\%u
; logon drive = P:
- Explorateur d'ordinateur :
local master = yes
os level = 33
preferred master = yes
- Résolution de nom :
wins support = yes
; wins server = w.x.y.z
; wins proxy = yes
dns proxy = no
name resolve order = lmhosts wins bcast
- Casse des fichiers :
preserve case = yes
#Les noms au format 8.3 (type DOS) sont convertis en majuscule
short preserve case = no
#================== Définitions des partages ===================
;[homes]
#Partage par defaut des fichiers personnel de chaque utlisateur (sauf guest)
#nous allons utiliser un partage pour gérer les fichiers personnel des utilisateurs
; comment = Repertoire personnel de %U
; preexec = /home/samba/smbuser.pl %U %m %I
; browseable = no
; #taille max
; max disk size = 100
; writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
;[printers]
#Partage d'imprimante
#pas d 'imprimantes
; comment = All Printers
; path = /var/spool/samba
; browseable = no
; guest ok = no
; writable = no
; printable = yes
[commun]
#Partage commun accessible a tous
comment = répertoire commun
path = /home/samba/commun
read only = no
guest ok = yes
[%U]
#Notre version du partage par defaut des fichiers personnel de chaque utilisateur
comment = Repertoire personnel de %U
path = /home/samba/users/%U
valid users = %U
public = no
writable = yes
printable = no
[netlogon]
#Partage NETLOGON indispensable au fonction de contrôleur de domaine Samba
comment = Network Logon Service
browseable = no
path = /home/samba/netlogon
guest ok = yes
writable = no
share modes = no
;[profiles]
; path = /var/lib/samba/profiles
; browseable = no
; guest ok = yes
;[public]
#Partage principal contenant les logiciels réseaux
; comment = Public Stuff
; path = /home/samba/SoftEtDonneesDivers
; public = yes
; writable = yes
; printable = no
; write list = +staff
Bibliographie
http://www-sop.inria.fr/members/Laurent.Mirtain/ldap-livre.html
http://www.netid.washington.edu/documentation/images/adStructureDetailed.jpg
http://damstux.free.fr/wiki/index.php?title=PDC_Samba_LDAP
http://doc.ubuntu-fr.org/slapd
http://www.croc-informatique.fr/2009/11/installation-et-configuration-openldap-sur-centos-5/