Tag Archives: openldap configuration

OpenLDAP tutorial – Remotly configuration management by the administrator

Prerequisites: OpenlDAP is installed and pre configured on a Debian, Ubuntu or compliant system. cf. previous articles about OpenLDAP.

1. Avoid entering the administrator password at each command

Store the super administrator password (“admin” in the sample) in a file:
echo -n "admin" > ~/pwdAdmin
chmod 600 ~/pwdAdmin
This creates the «pwdAdmin» file that contains the super administrator password. To test its use:
ldapsearch -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -y ~/pwdAdmin -b dc=ldaptuto,dc=net
The advantage of using the server administrator account instead of the system administrator account (root) is that you can execute remote commands. Those commands may be launched from a desktop machine. in this case replace localhost with the DNS name of the remote machine or its IP address.

2. Super administrator access rights to server configuration

The configuration of the OpenLDAP server is located in the database under the DIT cn = config. It’s the equivalent of the configuration file slapd.conf content in the old-style work. By default the super administrator cannot access this configuration:
ldapsearch -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -y ~/pwdAdmin -b cn=config
The result of this command is empty. We will use the «root» system user’s extended rights to give the OpenLDAP server super administrator access to the configuration data. Create ths LDIF file «acces-admin.ldif» who has the content:
dn: olcDatabase={0}config,cn=config
changeType: modify
add: olcAccess
olcAccess: to * by dn.exact=cn=admin,dc=ldaptuto,dc=net manage by * break
Then, execute the modify command on the server:
sudo ldapmodify -Y external -H ldapi:/// -f acces-admin.ldif
This gives read and write rights on all configuration data of the server to the administrator (cn=admin,dc=ldaptuto,dc=net). It can easily be verified by running the previous query on this data and did not return any results.]]>

Enable the production of Openldap Log file

Goal: In this 3rd part of the «OpenLDAP tutorial», we will enable the production of Log. To do that we must change default configuration of the server. The production of OpenLDAP log is very important for supervision and the proper use of this server. Prerequisite: The OpenLDAP server is installed with its default configuration. The installation has been done on GNU/Linux Debian, Ubuntu OS or compliant system. cf. part 1 and part 2 of this «OpenLDAP tutorial» series.

1. Enable the production of server Logs

sudo ldapsearch -Y external -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" olcLogLevel -LLL > slapdlog.ldif
This command creates the slapdlog.ldif file whose content is the result of the LDAP query executed by ldapsearch utility:
dn: cn=config
olcLogLevel: none
The first line contains the DN (distinguished name) who is the unique identifier of the entry. The second line contains the unique attribute requested by the query with value: none. The production of log files is disabled by default. Modify that file so that its content becomes:
dn: cn=config
changeType: modify
replace: olcLogLevel
olcLogLevel: stats
Now, this LDIF (Lightweight data interchange format) contains a modify command: the second line says we want to change the entry, the third line indicates that it is a replacement of the content of the olcLogLevel attribute and the fourth shows the new value of this attribute. stats level allow generate logs of connections, operations and results. This is perfect for daily monitoring. To run the command file on the server, we use:
sudo ldapmodify -Y external -H ldapi:/// -f slapdlog.ldif
If we get the message: modifying entry “cn=config”, the operation was successful. To check the result:
sudo ldapsearch -Y external -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" olcLogLevel
This new setting is immediately considered by the server and no reboot is required. The server sends the produced Logs, to the system log management mechanism. This is rsyslog for recent versions of Debian / Ubuntu OS.

2. Consideration of OpenLDAP log in rsyslog

Create a configuration file in the folder /etc/rsyslog.d/choose any name10-slapd.conf for example. The number in the name classifies files in this folder. This file contains those settings:
$template slapdtmpl,"[%$DAY%-%$MONTH%-%$YEAR% %timegenerated:12:19:date-rfc3339%] %app-name% %syslogseverity-text% %msg%\n"
local4.*    /var/log/slapd.log;slapdtmpl
The chosen name slapdtmpl, refers to a presentation format of the contents of the log file. For details on the template creations for rsyslog consult the manual:
man rsyslog.conf
See, in particular the section TEMPLATES. Finally you must restart rsyslog for the new settings to take effect.
service rsyslog restart

3. Test this functionality of the OpenLDAP server

Start a query and view the contents of the file /var/log/slapd.log :
sudo ldapsearch -Y external -H ldapi:/// -b dc=ldaptuto,dc=net
sudo cat /var/log/slapd.log
You should have a fairly significant content that show the work done by the OpenLDAP server to produce the query result..]]>

OpenLDAP tutorial – Installation

First article in a series “OpenLDAP tutorial”.The presentation is done step by step by showing all the details necessary for the final operation. The exposed installation has a minimum configuration for correct operation. Other articles will follow to improve the installation on different aspects. It is advisable to follow this series of posts in order:

  1. This article, installation and basic configuration.
  2. Modify the default settings
  3. Enable the production of Openldap Log file
  4. Remotly configuration management by the administrator
  5. Organization and data types
  6. Adding data to the directory
  7. Using OpenLDAP to protect access to a website
  8. OpenLDAP password policy – Managing users accounts
Prerequisite: Nothing about the OpenLDAP server.

OpenLDAP tutorial, step 1: Properly configure the host Debian / Ubuntu

The server installation procedure systematically sets up a database.  The DIT (like an instance in relational databases) is selected based on the domain name of the host machine.
hostname -f
This command returns the full qualified name of the machine. Example: desktop.meddeb.net. In this case the database will have as DIT: dc=meddeb,dc=net (the right part of the name from the 1st dot met). If the configuration does not suit you, it should be modified (files /etc/hostname and /etc/hosts).

OpenLDAP tutorial, step 2: Install the OpenLDAP server on Debian / Ubuntu

sudo apt-get purge slapd
sudo apt-get install slapd
The installation process will start and request the password of the server administrator. openldap tutorial, openldap ubuntu, openldap debianIn addition to the executable binary files, it is installed the files in folders:
  • /usr/lib/ldap/ : OpenLDAP overlay libraries, binary native files.
  • /etc/ldap/schema/ : OpenLDAP schemas availables, text files.
  • /etc/ldap/slap.d/ : Dynamic configuration, text files.
  • /var/lib/ldap/ : Installed database files.
  • /var/run/slapd/ : Run settings, text files.

OpenLDAP tutorial, step 3: Install the OpenLDAP client utilities

sudo apt-get install ldap-utils
This installs the Openldap client utilities , including the ldapsearch query tool. The configuration file of those tools, /etc/ldap/ldap.conf, may be very useful. It allows to set defaults queries parameters. This simplifies the interaction with the server. a typical contents of this file is:
BASE   dc=meddeb,dc=net
URI    ldap://localhost
SIZELIMIT      12
TIMELIMIT      15
DEREF          never
# TLS certificates (needed for GnuTLS)
TLS_CACERT      /etc/ssl/certs/ca-certificates.crt

OpenLDAP tutorial, step 4: Check the installation.

slapd -V ↵
@(#) $OpenLDAP: slapd  (Ubuntu) (Mar 17 2014 21:20:08) $
        buildd@aatxe:/build/buildd/openldap-2.4.31/debian/build/servers/slap
In this sample, the installed server version is 2.4.31
ldapsearch -Y external  -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" -LLL ↵
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcLogLevel: none
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
This gives the global part of the configuration. This is a default setting. Notice the runtime parameters folder: /var/run/slapd/. Notice, also, the olcLogLevel parameter set to none. This value must be modified for better operation.
sudo ldapsearch -Y external  -H ldapi:/// -b dc=meddeb,dc=net -LLL ↵

ASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: dc=meddeb,dc=net
objectClass: top
objectClass: dcObject
objectClass: organization
o: meddeb.net
dc: meddeb

dn: cn=admin,dc=meddeb,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
This gives the only two entries created by default in the directory:
  • dc=meddeb,dc=net, who is the DIT of the directory.
  • cn=admin,dc=meddeb,dc=net, who is the administrator of the directory and his password given during installation.
]]>

OpenLDAP tutorial (4) – Accès à la configuration dynamique par l'administrateur

Objectif: OpenLDAP tutorial (4) a pour objectif de donner à l’administrateur du serveur OpenLDAP, créé à l’installation, les droits de gérer les données de la configuration. Ceci devrait faciliter la gestion de cette configuration, notamment en ouvrant la possibilité de la modifier à distance. Pré-requis: OpenlDAP est installé et pré-configuré sur une machine Debian, Ubuntu ou compatible. cf. les articles précédents au sujet d’OpenLDAP.

1. Eviter de saisir le mot de passe de l’administrateur à chaque commande

On stocke le mot de passe du super administrateur (ici “admin” à titre d’exemple) dans un fichier:
echo -n "admin" > pwdAdmin
chmod 600 pwdAdmin
Ceci crée le fichier pwdAdmin qui contient le mot de passe du super administrateur. Pour tester son utilisation:
ldapsearch -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -y pwdAdmin -b dc=ldaptuto,dc=net
L’intérêt d’utiliser le compte de l’administrateur du serveur au lieu de celui de l’administrateur système de la machine (root) est qu’on peut lancer les commandes à distance (dans ce cas remplacer localhost par le nom de la machine distante).

2. Droits d’accès du super administrateur à la configuration du serveur

La configuration du serveur OpenLDAP se trouve dans la base de données sous le DIT cn=config. Il s’agit de l’équivalent du contenu du fichier de configuration dans l’ancien mode de fonctionnement. Par défaut le super administrateur ne peut pas accéder à cette configuration:
ldapsearch -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -y pwdAdmin -b cn=config
Le résultat est vide. On va utiliser les droits étendu de l’utilisateur système root pour donner un droit d’accès à la configuration au super administrateur du serveur OpenLDAP. Créer le fichier LDIF acces-admin.ldif, dont le contenu est :
dn: olcDatabase={0}config,cn=config
changeType: modify
add: olcAccess
olcAccess: to * by dn.exact=cn=admin,dc=ldaptuto,dc=net manage by * break
Exécuter la commande d’ajout de ce fichier sur le serveur:
sudo ldapmodify -Y external -H ldapi:/// -f acces-admin.ldif
Ceci donne les droits de lecture et d’écriture sur toutes les données de la configuration du serveur à l’administrateur (cn=admin,dc=ldaptuto,dc=net). On peut facilement le vérifier en lançant la requête précédente sur ces données et qui n’a retourné aucun résultat.]]>

Activer le Log OpenLDAP

Objectif: Cette 3eme partie de la série OpenLDAP tutorial a pour objectif d’activer le log OpenLDAP. Pour atteindre cet objectif il faut paramétrer l’installation du serveur d’annuaire OpenLDAP. Cette production est très importante, voire indispensable pour la surveillance et l’utilisation correcte de ce serveur. Pré-requis: OpenlDAP est installé et pré-configuré sur une machine Debian, Ubuntu ou compatibles. cf. la partie 1 et la partie 2 de cette série OpenLDAP Tutorial.

1. Activer les fichiers journaux (Log) du serveur OpenLDAP

sudo ldapsearch -Y external -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" olcLogLevel -LLL > slapdlog.ldif
Cette commande crée le fichier slapdlog.ldif dont le contenu est le résultat de la requête LDAP exécutée par l’utilitaire ldapsearch:
dn: cn=config
olcLogLevel: none
La première ligne contient le DN (distinguished name) qui est l’identifiant unique de l’entrée. La deuxième ligne contient l’unique attribut demandée par la requête avec comme valeur: none. La génération de log est désactivée par défaut. Modifier ce fichier pour que son contenu devienne:
dn: cn=config
changeType: modify
replace: olcLogLevel
olcLogLevel: stats
Maintenant ce fihier LDIF (Lightweight data interchange format) contient une commande de modification: la deuxième ligne déclare qu’on veut modifier l’entrée, la troisième indique qu’il s’agit d’un remplacement de contenu de l’attribut olcLogLevel de cette entrée et la troisième indique la nouvelle valeur de cet attribut. stats permet de générer les logs des connexions, des opérations et de leurs résultats ce qui est parfait pour une surveillance quotidienne. Pour exécuter la commande de ce fichier sur le serveur, on utilise:
sudo ldapmodify -Y external -H ldapi:/// -f slapdlog.ldif
Si on obtient le message: modifying entry “cn=config”, l’opération a réussi. Pour vérifier:
sudo ldapsearch -Y external -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" olcLogLevel
Normalement la prise en compte par le serveur est immédiate et aucun redémarrage n’est nécessaire. Le serveur envoi les logs produits au mécanisme de gestion des logs système. Il s’agit de rsyslog pour les versions récentes.

2. Prise en compte des log OpenLDAP par rsyslog

Créer un fichier de configuration dans dans le dossier /etc/rsyslog.d/, choisir un nom quelconque: 10-slapd.conf par exemple. Le chiffre dans le nom permet de classer les fichiers dans ce dossier. Ce fichier contient l’unique ligne:
local4.*    /var/log/slapd.log;slapdtmpl
slapdtmpl est un nom au choix qui désigne un format de présentation du contenu de ce fichier de log. Il s’agit donc de créer ce format, cela se fait dans le fichier de configuration de rsyslog:
sudo vi /etc/rsyslog.conf
Dans l’éditeur ajouter ce qui suit, en dessous de la première ligne à partir du début qui commence par $template:
$template slapdtmpl,"[%$DAY%-%$MONTH%-%$YEAR% %timegenerated:12:19:date-rfc3339%] %app-name% %syslogseverity-text% %msg%\n"
Pour plus de détails sur la créations de format pour rsyslog consulter le manuel:
man rsyslog.conf
Voir, notamment, le paragraphe TEMPLATES. Enfin il faut redémarrer rsyslog pour que le nouveau paramétrage soit pris en compte:
service rsyslog restart

3. Tester cette fonctionnalité du serveur OpenLDAP

Lancer une requête et consulter le contenu du fichier /var/log/slapd.log:
sudo ldapsearch -Y external -H ldapi:/// -b dc=ldaptuto,dc=net
sudo cat /var/log/slapd.log
Normalement, on doit avoir un contenu assez significatif de ce qui a été exécuté par le serveur OpenLDAP.]]>

OpenLDAP tutorial (2) – Modifier les paramètres par défaut

Objectif: Ce 2eme article de la série  «OpenLDAP tutorial» vise à améliorer la configuration basique du serveur vue dans le 1er article. Il s’agit d’une reconfiguration qui permet de personnaliser les paramètres pris par défaut par la procédure d’installation. Cette reconfuguration permet de préparer le servuer à une utilisation dans un environnement réel. Pré-requis: Le serveur OpenLDAP est installé avec sa configuration par défaut. L’installation est supposée faite sur une machine Debian / Ubuntu ou compatibles. L’installation initiale par l’utilitaire apt-get utilise les paramètres systèmes pour effectuer certaines configurations, notamment le DIT de l’annuaire. Ceci peut être reconfiguré. Toutefois cette reconfiguration doit être faite avant toute alimentation du serveur d’annuaire avec des données. La raison est que cette opération réinitialise la base de données et remet son contenu à zéro. Cette reconfiguration se fait avec la commande:

sudo dpkg-reconfigure slapd
Suite à cela une série d’écrans s’affichent l’un après l’autre pour demander de saisir des paramètres ou effectuer des choix.

Reconfiguration d’OpenLDAP – étape 1Reconfiguration d’OpenLDAP – étape 2

Par défaut c’est le nom de domaine configuré pour la machine hôte qui est pris. Saisir le nom de domaine, ceci fixe le DIT de l’annuaire. Ici : dc=ldaptuto,dc=net (pour la saisie de ldaptuto.net).

Reconfiguration d’OpenLDAP – étape 3

Saisir le nom de l’organisation, un libellé rattaché au DIT de l’annuaire. Ne sert que pour l’information.

Reconfiguration d’OpenLDAP – étape 4

Mot de passe de l’administrateur de l’annuaire qui est cn=admin,dc=ldaptuto,dc=net. L’adminstrateur possède tous les droits et n’est soumis à aucune restriction configurée (équivalent de root pour les systèmes unix).

Reconfiguration d’OpenLDAP – étape 5

Le type de base de données à utiliser. OpenLDAP peut fonctionne avec plusieurs types de bases de données dont BDB, HDB et MDB qui sont proposées par la procédure d’installation. MDB est la base de données recommandée. Elle est plus compacte et performante que HDB et BDB. MDB fonctionne sans configuration particulière et permet de renommer un sous ensemble de l’annuaire (un  noeud quelconque) tout comme HDB.

Reconfiguration d’OpenLDAP – étape 6

Comportement à la désinstallation puis la purge du paquet slapd. Choisir si les fichiers des données doivent être supprimés ou non (<Non> est plus prudent, <Oui> est plus efficace).

Reconfiguration d’OpenLDAP – étape 7

Répondre par <Oui>. les fichiers de données seront déplacés de /var/lib/ldap vers /var/backup

Reconfiguration d’OpenLDAP – étape 8

Répondre <Non>, sauf il y a une bonne raison (généralement maintenir une compatibilité avec un système ancien) pour le faire. A la suite de cette étape, le serveur d’annuaire est réinitialisé et redémarré.

Vérifier le nouveau paramétrage

sudo ldapsearch -Y external -H ldapi:///  -b dc=ldaptuto,dc=net ↵

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
# extended LDIF
#
# LDAPv3
# base <dc=ldaptuto,dc=net> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# ldaptuto.net
dn: dc=ldaptuto,dc=net
objectClass: top
objectClass: dcObject
objectClass: organization
o: OpenLDAP tutorial
dc: ldaptuto

# admin, ldaptuto.net
dn: cn=admin,dc=ldaptuto,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2
On remarquera dc=ldaptuto,dc=net et le libellé du DIT o: OpenLDAP tutorial]]>

Openldap tutorial – Installation et configuration de base

« OpenLDAP tutorial », basée sur la pratique. La démarche de l’exposé se fait pas à pas en montrant tous les détails nécessaires au bon fonctionnement final. L’installation exposée comprend une configuration minimale pour un fonctionnement correcte. D’autres articles suivront pour améliorer l’installation sur différents aspects. Il est conseillé de suivre cette serie d’articles dans l’ordre.

  1. Cet article: Installation et configuration de base
  2. Modifier les paramètres par défaut
  3. Activer le Log OpenLDAP
  4. Accès à la configuration dynamique par l’administrateur
  5. Organisation et types de données
  6. Ajouter des données à l’annuaire
  7. Utilisation pour protéger l’accès à un site web
  8. OpenLDAP password policy – gérer les comptes des utilisateurs
Pré-requis: Aucun à propos du serveur OpenLDAP. There is an english version of this series of articles.

Openldap tutorial, étape 1: Configurer correctement l’hôte Debian / Ubuntu.

La procédure d’installation du serveur met en place systématiquement une base de données. Le DIT (équivalent de l’instance pour les bases de données relationnelles) est sélectionné en fonction du nom de domaine de la machine hôte.
hostname -f
Cette commande retourne le nom complet (full) de la machine. Exemple: desktop.meddeb.net. Dans ce cas la base de données aura pour DIT: dc=meddeb,dc=net (la partie droite du nom à partir du 1er point rencontré). Si la configuration ne vous convient pas, il faudrait la modifier (fichier /etc/hostname et /etc/hosts)

Openldap tutorial, étape 2: installer le serveur Openldap sur Debian / Ubuntu.

sudo apt-get purge slapd
sudo apt-get install slapd
La procédure d’installation se lance et demande le mot de passe de l’administrateur du serveur. openldap tutorial, openldap ubuntu, openldap debianEn plus des fichiers binaires exécutables, il est installé dans les dossiers:
  • /usr/lib/ldap/ : librairies des modules (overlay), fichiers binaires natifs
  • /etc/ldap/schema/ : Schémas disponibles par défaut, fichiers texte.
  • /etc/ldap/slap.d/ : Configuration dynamique, fichiers texte.
  • /var/lib/ldap/ : Données, fichiers de la base de données installée.
  • /var/run/slapd/ : Paramètres d’exécution, fichiers texte.

Openldap tutorial, étape 3: installer les utilitaires client de Openldap.

sudo apt-get install ldap-utils
Ceci installe les utilitaires clients Openldap, notamment l’utilitaire d’interrogation ldapsearch. Le fichier de configuration de ces utilitaires /etc/ldap/ldap.conf peut être très utile dans le mesure où il permet de fixer des paramètres par défaut. Cela simplifie l’interaction avec le serveur. Un contenu typique de ce fichier est:
BASE   dc=meddeb,dc=net
URI    ldap://localhost
SIZELIMIT      12
TIMELIMIT      15
DEREF          never
# TLS certificates (needed for GnuTLS)
TLS_CACERT      /etc/ssl/certs/ca-certificates.crt

Openldap tutorial, étape 4: Vérifier l’installation.

slapd -V ↵

@(#) $OpenLDAP: slapd  (Ubuntu) (May 11 2016 16:12:05) $
        buildd@lgw01-10:/build/openldap-mF7Kfq/openldap-2.4.42+dfsg/debian/build/servers/slap
La version du serveur installée est 2.4.42
ldapsearch -Y external  -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" -LLL ↵
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcLogLevel: none
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
Ceci donne la partie globale de la configuration mise en place par défaut. On retrouve l’indication des deux fichiers des paramètres d’exécution dans le dossier /var/run/slapd/. On remarquera le paramètre olcLogLevel à none, à modifier impérativement.
sudo ldapsearch -Y external  -H ldapi:/// -b dc=meddeb,dc=net -LLL ↵

ASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: dc=meddeb,dc=net
objectClass: top
objectClass: dcObject
objectClass: organization
o: meddeb.net
dc: meddeb

dn: cn=admin,dc=meddeb,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
Ceci donne les deux seules entrées créées dans l’annuaire par défaut:
  • dc=meddeb,dc=net, qui représente le DIT de l’annuaire.
  • cn=admin,dc=meddeb,dc=net, qui est l’administrateur de l’annuaire dont le mot de passe a été saisie au cours de l’installation.
]]>