Mise en place d’un serveur OpenLdap sécurisé avec TLS
Publié le 09 Jun 2016
Cet article en deux mots :
Ne laissez plus vos mots de passe circuler en clair sur le réseau ! Ce guide pratique vous accompagne dans la mise en place du protocole TLS pour sécuriser votre annuaire OpenLDAP. De la génération des certificats avec GnuTLS à la configuration du daemon slapd sur le port 636, découvrez comment implémenter une architecture LDAPS robuste et professionnelle en quelques étapes simples.
Prérequis à cet article, vous devez avoir installé OpenLdap. N’ayez crainte, l’installation prend 5 minutes et l’ensemble des actions à réaliser est disponible dans mon article Installation de OpenLDAP sous Linux en 5 minutes.
Comme vous vous en doutez, lors de l'authentification à un serveur OpenLDAP, il est préférable de le faire en utilisant une sessionInstance de connexion active entre un client et le serveur CAS (Cloud Analytic Services), isolant les ressources, les bibliothèques et les traitements d'un utilisateur au sein de SAS Viya. cryptée, l’objectif étant de ne plus faire « voyager » les mots de passe en clair entre les serveurs mais de chiffrer les échanges. Ce petit miracle peut être accompli en utilisant TLS (Transport Layer Security). Le protocole TLS se charge de mettre en oeuvre la confidentialité des communications sur Internet. Le protocole permet aux applications client / serveur de communiquer de manière à empêcher l'espionnage ou a falsification des messages échangés.
Je vous propose un petit schéma "maison" pour vous expliquer le processus de connexion et les différents étapes. Avec ça, vous n'aurez plus d'excuse pour dire que vous ne comprenez pas :)
Petite "explication de texte" :
Message
Signification
StartTLS Request
Demande de création d'une connexion chiffrée par une couche TLS émanant du client.
StartTLS Response
Réponse de la demande de création d'une connexion par couche TLS
Handshake TLS
L'échange de clés : Le client vérifie la validité du certificat serveur. Si le certificat est valide, génère une clé maître , la chiffre à l’aide de la clé publique du serveur et la lui envoie. Les données échangées par la suite entre le client et le serveur sont chiffrées et authentifiées à l’aide de clés dérivées de la clé maître.
bindRequest
Demande la connexion à un annuaire
bindResponse
Réponse à la demande d'authentification
searchRequest
Demande à effectuer une recherche en fonction d'un filtre donné
searchResDone
Message indiquant la fin des réponses à une recherche
unbindRequest
Demande de déconnexion/fin de sessionInstance de connexion active entre un client et le serveur CAS (Cloud Analytic Services), isolant les ressources, les bibliothèques et les traitements d'un utilisateur au sein de SAS Viya.
Maintenant que les présentations sont faites, nous pouvons attaquer la sécurisation de notre serveur Ldap !
Etape 1 : Création des clés et certificats
Pour les besoins de cet article, nous allons nous transformer en autorité de certification pour crée et signer le certificat serveur qui sera déployer sur notre OpenLdap. Pour ça nous allons utiliser l’outil certtool.
Première étape, installer GnuTLS. Le paquet GnuTLS contient des bibliothèquesPointeurs logiques (Libref) reliant SAS Viya à des sources de données physiques (dossiers, bases de données, CAS) pour lire, écrire et organiser les tables de manière structurée. et des outils pour gérer TLS :
1
apt-get install gnutls-bin ssl-cert
Nous avons les outils, nous pouvons créer une clé privée :
Puis créons le template utilisé pour renseigner de façon automatique les champs nécessaires à la création du CA . Pour cela, créez un fichier ca.info dans /etc/ssl/ (ou à l’endroit de votre choix) et ajoutez les 3 lignes suivantes :
1 2 3
cn=CA Nicolas HOUSSET Trust ca cert_signing_key
Et maintenant nous pouvons créer notre certificate CA en se basant sur notre clé et les informations du fichier /etc/ssl/ca.info. Ce certificat sera utilisé pour signer le certificat serveur. Pour cela nous utilisons l’instruction --generate-self-signed et les paramètres idoines :
Puis, nous pouvons créer le certificat serveur :
Comme pour notre CA nous partons d'un fichier template /etc/ssl/nih.info contenant les informations suivantes :
1 2 3 4 5 6
organization = Nicolas Housset LDAP Server france cn = ldap-france.nicolas-housset.fr tls_www_server encryption_key signing_key expiration_days = 360
Veillez à ce que la propriété cn soit bien le nom de votre serveur
Maintenant, on génère notre certificat serveur via la commande generate-certificate :
Nous devons maintenant activer l'option LDAPS dans la configuration de l'annuaire OpenLDAP afin que e daemon slapd puisse écouter et servir ses requêtes sur le port 636 dédié à LDAP :
Dans le fichier /etc/default/slapd, localisez la ligne suivante
1
SLAPD_SERVICES="ldap:/// ldapi:///"
et remplacez par :
1
SLAPD_SERVICES="ldap:/// ldaps:/// ldapi:///"
Maintenant, créez le fichier certinfo.ldif avec le contenu suivant (Ajustez les valeurs en conséquence) :
Dernier petit détail, vérifiez que le process est en écoute sur le port ldaps :
1
netstat –a
ce qui vous donne en sortie (si tout va bien )
1 2 3 4 5 6 7
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:12320 *:* LISTEN tcp 0 0 *:12321 *:* LISTEN tcp 0 0 *:ldap *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:ldaps *:* LISTEN
Enfin, si vous voulez être "ceinture/bretelles", vous pouvez jetez un coup d’œil aux logsFichiers chronologiques enregistrant les événements système, erreurs et activités d'exécution dans SAS Viya, essentiels pour le monitoring, le débogage et l'audit des services et des jobs. afin de s'assurer qu'il n'y pas a de gros pépin :
1
tail /var/log/sldap.log
Tout va bien :
1 2
Jun 7 15:21:42 ldap slapd[24247]: @(#) $OpenLDAP: slapd (Sep 11 2015 15:18:47) $#012#011buildd@x86-csail-01:/build/openldap-e51fz0/openldap-2.4.31/debian/build/servers/slapd Jun 7 15:21:43 ldap slapd[24248]: slapd starting
Maintenant j'espère que cet article vous aura aidé à comprendre le fonctionnent de OpenLdap dans un contexte sécurisé et comment mettre en oeuvre cette sécurisation. Oui ? N'hésitez pas à publier un petit commentaire et à partager sur les réseaux sociaux.
Nicolas Housset
Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.
Marre des mots de passe qui voyagent à poil sur le réseau ? Découvrez comment chiffrer votre serveur OpenLDAP avec TLS pour une sécurité enfin digne de ce nom. Spoiler : c’est plus simple qu'un bind.