Sécurisation de l’annuaire
1. Objectif
Après avoir conçu l’arborescence des répertoires, une politique de sécurité doit être définie. En effet, dans le cas d’un annuaire à accès public (pour tout le monde) comme le serait l’accès à un annuaire de numéros de téléphone, au niveau de sécurité ne serait nécessaire pour l’authentification des utilisateurs  ; cependant, il faudra protéger son contenu afin qu’il soit accessible en lecture seulement. En revanche, si les données de l’annuaire renferment des informations sensibles telles que des numéros de sécurité sociale ou de comptes bancaires ou bien même des mots de passe d’utilisateurs voire des certificats utilisés par des applications, alors il faudra sécuriser l’accès à l’annuaire en identifiant les personnes voulant s’y connecter par un mécanisme d’authentification. Il faudra également, mettre en place un système d’autorisation au sein de l’annuaire afin de s’assurer que les données ne sont consultables ou modifiables que par les utilisateurs étant habilités à le faire.
Par ailleurs, la sécurité de l’annuaire concernera également la façon dont transiteront les données entre le client et le serveur LDAP par le biais de protocoles garantissant le cryptage et l’intégrité des données (utilisation de SSL avec validité des certificats).
2. Étude de l’authentification à l’annuaire
Le terme authentification désigne la façon dont les personnes "s’identifient" auprès de l’annuaire afin d’accéder à son contenu. Cette opération se nomme, dans la terminologie LDAP, bind ou "liaison" en français.
Généralement, les opérations de liaison consistent à fournir un identifiant et son mot de passe. Toutefois, dans le cas d’un annuaire LDAP, l’identifiant de l’utilisateur est en fait un DN (c’est-à-dire une entrée de type utilisateur dans l’annuaire). Il sera donc nommé le "bind DN" ou le "DN de liaison" à l’annuaire.
Reste maintenant à découvrir comment le protocole LDAP sécurise son mécanisme d’authentification... ou pas.
Ce mécanisme permet de configurer trois niveaux de sécurité :
	•	Pas d’authentification : appelé le mode en accès "anonyme". Cela consiste à effectuer une requête LDAP sans fournir de nom d’utilisateur et de mot de passe. Ce ne doit être utilisé que dans le cas d’utilisation d’annuaires publics consultables en lecture seulement. Ceci pourrait s’apparenter à l’accès de n’importe quel site internet offrant du contenu sans identification préalable, mais également pour des clients LDAP n’utilisant pas la dernière version du protocole LDAP (LDAPv3). Évidemment à proscrire dans le cadre d’un service d’authentification centralisée.
	•	Non authentifié (unauthenticated) : une liaison où l’utilisateur fournit un nom d’utilisateur (un DN utilisateur contenu dans l’annuaire), mais pas de mot de passe. Ce mode est (était) utilisé à des fins de traçabilité afin de savoir qui se connecte à l’annuaire, mais peut être sujet à des attaques de type "Déni de service".
	•	Et enfin l’authentification de base : appelée liaison simple (simple bind). Ce mode permet d’authentifier la liaison à l’annuaire par un traditionnel couple "identifiant/mot de passe". Cependant, ce mode n’offre aucune intégrité et confidentialité des données, car la communication est transmise en clair sur le réseau... et donc l’accréditation "identifiant/mot de passe" peut être facilement interceptée. La parade consiste donc soit à chiffrer les données transmises lors de l’authentification de base par encapsulation dans un protocole inférieur (type SSL/TLS ou même IPSec), soit à faire appel à un mécanisme d’authentification externe via le "protocole" (ou couche d’abstraction) SASL intégré depuis le protocole LDAPv3.
La recommandation est bien entendu d’utiliser une authentification sécurisée et ce d’autant plus si le serveur d’annuaire se trouve exposé à Internet ou bien même dans un intranet. Pour ce faire, OpenLDAP offre la possibilité d’utiliser différents mécanismes d’authentifications externes regroupés sous la référence SASL ou bien même une infrastructure de type Kerberos. Bref, il est possible de choisir parmi différentes méthodes en fonction des implémentations déjà en place dans l’entreprise. Autrement, il sera probablement judicieux d’utiliser SSL, car son support est désormais inclus dans la majorité des clients LDAP disponibles. Lors de l’utilisation de SSL, il est possible que le serveur authentifie le client en utilisant son certificat de serveur, pouvant être considéré comme une signature numérique sécurisée, qui l’identifie de manière unique. Ce certificat aura été généré et enregistré auprès d’une autorité de certification fiable, également appelée autorité de certification (CA), telle que VeriSign. En outre, lors de l’utilisation de certificats de serveur, une communication cryptée peut être établie entre le client et le serveur, permettant une authentification de base sécurisée du client sur le serveur.
L’utilisation de certificats de serveur SSL sera particulièrement intéressante lors, de la configuration des services LDAP sur des réseaux non sécurisés, tels qu’Internet. Cela permettra aux clients de vérifier l’identité du serveur et de chiffrer la communication de l’authentification de base des clients vers le serveur.
Ainsi, une matrice comme celle de la figure 3-6 pourra être réalisée afin de déterminer le niveau de sécurité d’accès à l’annuaire :
Étude de la sécurité d’accès et de transmission des données à l’annuaire	Choix	Raison	
Authentification à l’annuaire individuel	oui	Contenu sensible	
Cryptage de la transmission des données	oui	Réseau public	
Intégrité de la transmission des données	oui	Réseau public	
Authentification du serveur LDAP	oui	Réseau public/ usurpation d’identité	
Authentification des clients LDAP	non	Trop de contraintes dans la gestion des certificats clients + coût	
Figure 3-6 : Matrice étude sécurité "accès à l’annuaire"
3. Étude de l’autorisation au contenu de l’annuaire
Les données dans l’arborescence des annuaires devront être protégées de différentes façons selon leur niveau d’accessibilité. Certaines informations doivent être consultables par tout le monde tandis que d’autres doivent être seulement lisibles par une partie des utilisateurs. De même, la majorité des informations doit être protégée en écriture. Seuls les administrateurs de l’annuaire auront accès en écriture à l’ensemble des données de l’annuaire.
Cependant, il faut savoir que LDAPv3 ne gère pas de mécanisme d’autorisation aux données de l’annuaire. En d’autres termes, il n’y a pas d’attributs définis pour gérer cela. En conséquence, les fournisseurs ont développé leurs propres implémentations au travers de listes de contrôle d’accès (ACL). Les ACL sont ainsi utilisés pour définir les règles d’accès aux différentes entrées de l’arborescence de l’annuaire en fonction de l’utilisateur de liaison connecté à l’annuaire.
Ainsi, une matrice comme celle de la figure 3-7 pourra être réalisée afin de déterminer les autorisations au contenu de l’annuaire :
Étude de l’autorisation au contenu de l’annuaire (Branche/Attribut)	Utilisateur de liaison	Droits	
Attribut : userpassword	Tous les utilisateurs de liaison	Lecture	
Branche ’sudo’	Seul l’utilisateur de liaison ’sudo’	Lecture	
Branche ’utilisateur’	Tous les utilisateurs de liaison	Lecture	
Branche ’groupe’	Tous les utilisateurs de liaison	Lecture	
Figure 3-7 : Matrice étude autorisation au contenu de l’annuaire