Fixer des limites aux opérations LDAP
Le service d’annuaire LDAP étant en libre-service et proposé à tous clients voulant utiliser ses services, il convient donc d’imposer des règles appelées "limites" afin qu’un seul client trop actif ne monopolise l’intégralité de l’activité du serveur LDAP. En effet, ceci peut apparaître volontairement par l’activité d’un hacker qui voudrait provoquer un arrêt ou une dégradation du service LDAP (on parle alors de "déni de service") par émission d’un grand nombre de requêtes LDAP et/ou trop complexes engendrant ainsi une suractivité de l’annuaire. Mais ce cas de figure pourrait également apparaître à cause d’un problème de configuration du client LDAP.
1. Le type de limites
OpenLDAP fournit ainsi deux sortes de limites qui seront appliquées aux requêtes LDAP, en provenance des différents clients de l’entreprise, entrantes dans l’annuaire :
	•	Une limite de taille qui permettra de restreindre le nombre d’entrées qu’un client peut récupérer en une seule opération.
	•	Et une limite de temps qui permettra de stopper la requête après un temps de traitement trop long.
2. Les limites hard ou soft
Pour chacune des limites (taille ou temps), il est possible de renseigner deux valeurs appelées : soft et hard. Ces deux valeurs correspondent en fait à la valeur par défaut et à la valeur maximale autorisée. Ainsi, la valeur "soft" est la valeur par défaut appliquée aux requêtes LDAP et la valeur "hard" est celle que les clients LDAP ne pourront pas dépasser.
En effet, les clients LDAP peuvent spécifier leur propre limite de taille et de temps lors de l’émission des opérations de recherche depuis la première version de X.500. Ainsi, grâce à la limite "hard", un client, même s’il a spécifié des valeurs très hautes pour ses opérations de recherche, ne pourra jamais aller au-delà des valeurs indiquées par la valeur "hard". De même que, si le client ne précise aucune valeur, alors celle spécifiée par la valeur "soft" sera utilisée.
En cas d’opération dépassant la limite "hard", celle-ci affichera tout de même les résultats obtenus jusqu’à la limite (par exemple, l’opération de recherche renverra seulement les 1000 premières entrées trouvées pour une limite de taille hard fixée à 1000) et le message d’erreur suivant sera envoyé : adminLimitExceeded error.
¬
Le compte rootdn n’est pas soumis aux limites.
3. La portée des limites
a. Les limites globales
Les limites spécifiées dans la partie globale de la configuration de l’annuaire (dans le DIT "cn=config") seront les valeurs par défaut utilisées si aucune base de données de l’annuaire n’a de limites spécifiques.
La syntaxe suivante fixera la même valeur pour les limites soft et hard :
olcSizeLimit: {<integer>|unlimited} 
olcTimeLimit: {<integer>|unlimited}
Pour paramétrer des valeurs différentes, il faudra alors utiliser la syntaxe suivante :
olcSizeLimit size[.{soft|hard|unchecked}]=<integer> [...] 
olcTimeLimit time[.{soft|hard}]=<integer> [...]
¬
Même si aucune limite n’est paramétrée, il existe comme même des valeurs par défaut qui seront appliquées à l’ensemble de l’annuaire : limite de taille paramétrée à 500 entrées et limite de temps à 3600 secondes.
b. Les limites par base de données
Il est possible de configurer des limites applicables au niveau de la base de données (du DIT) elle-même, remplaçant ainsi les limites globales de l’annuaire. Sa configuration permet également de spécifier à quel utilisateur de liaison celle-ci sera appliquée.
Sa syntaxe est la suivante :
olclimits <who> <limit> [<limit> [...]]
Voir le tableau ci-dessous pour connaître les différentes valeurs de ’who’ :
Valeur	Description	
*	Désigne ’Tout le monde’ en incluant les connexions en ’anonymes’ et les utilisateurs authentifiés.	
anonymous	Désigne l’utilisateur ’Anonyme’.	
users	Désigne les utilisateurs authentifiés.	
self	Désigne l’utilisateur de l’entrée ciblée seulement.	
[dn[.<basic-style>]=<regex>	Désigne le ou les utilisateurs identifiés par l’expression régulière.	
dn.<scope-style>=<DN>]	Désigne le ou les utilisateurs dans la portée d’une entrée (DN).