Zabbix : configurer l’authentification avec Active Directory (LDAP et LDAPS)

Supervision

Zabbix : configurer l’authentification avec Active Directory (LDAP et LDAPS)

Dans ce tutoriel, nous verrons ensemble comment paramétrer le serveur Zabbix pour pouvoir se connecter via une authentification LDAP, puis LDAPS avec des comptes utilisateurs d’un annuaire Active Directory.

Il est également possible d’utiliser un autre annuaire qu’Active Directory, comme OpenLDAP, que je vous ai présenté dans mes précédents articles. En effet, Zabbix propose nativement ce mode d’authentification, et les comptes présents dans votre annuaire vont être créés automatiquement grâce à un processus de synchronisation.

Ce tutoriel s’appuie sur un serveur Zabbix en version 7.4 et un annuaire Active Directory déjà en place. J’utiliserai également un serveur ADCS jouant le rôle de PKI et déjà configuré pour les connexions LDAPS, voici des articles qui pourraient vous servir à mettre en place cette configuration initiale :

En complément de ce tutoriel, voici le lien vers la documentation officielle :

Voici un schéma d’illustration du lab mis en place. Le plan d’adressage IP est fourni à titre indicatif.

Préparation de l’annuaire

Comme pour la majorité des solutions proposant une intégration LDAP, Zabbix repose sur un compte de service également appelé « connecteur » pour pouvoir se connecter à l’annuaire LDAP.

Le compte de service que j’utilise est un compte utilisateur, qui se nomme « Sync_Zabbix » dont le mot de passe n’expire jamais (les rotations seront effectuées manuellement) et qui se trouve dans l’unité d’organisation « Connecteurs ». Je tiens à préciser que c’est un utilisateur standard. Il n’a pas besoin d’avoir de permissions administrateur.

Les utilisateurs qui pourront se connecter à l’aide de leur compte Active Directory seront stockés dans l’unité d’organisation « IT » qui sera la « base DN ». Seuls eux pourront se connecter au serveur Zabbix. En effet, il n’est pas utile de mettre la racine du domaine comme base DN, le but étant de limiter la découverte de l’annuaire.

Enfin, les utilisateurs se connecteront avec l’attribut (login@domaine), ils peuvent également se connecter via le (domainelogin) selon vos préférences. Pour rappel :

Nous pouvons maintenant passer à la configuration au niveau du serveur Zabbix.

Configurer l’intégration LDAP dans Zabbix

Avant de configurer Zabbix, si SELinux est actif sur votre serveur, tapez la commande suivante afin d’autoriser votre serveur web à se connecter à LDAP. Si vous ne le faites pas, vous risquerez d’être bloqué lors de tests de connexion.


Sur votre serveur Zabbix, rendez-vous dans « Utilisateurs », puis « Authentification » et « Paramètres LDAP » :

Cochez « Activer l’authentification LDAP » et « Activer le provisionnement JIT ». JIT signifie « Just-In-Time », et dans le cas présent, il correspond au processus utilisé pour créer les comptes utilisateurs lorsqu’ils se connectent pour la première fois sur le système (Zabbix, ici). En bref, c’est grâce à cette option que vos comptes seront créés dans la base de données Zabbix à la première connexion.

Dans le champ « Serveurs », cliquez sur « Ajouter ». Une page s’ouvre pour vous demander de rentrer les informations pour votre serveur :

  • Nom : c’est le nom que vous souhaitez donner au serveur dans Zabbix. Ce n’est pas obligatoirement le nom du serveur ou du domaine Active Directory.
  • Hôte : ce champ correspond à l’identifiant de votre serveur LDAP. Il peut s’agir du nom d’hôte (FQDN), de l’adresse IP ou de l’URI du serveur LDAP (sous la forme. Il est recommandé d’utiliser l’URI, car il s’agit du format standard du protocole LDAP. De plus, cela facilite le passage à LDAPS : il suffira de remplacer ” par “.
  • Port : 389, qui est le port par défaut du protocole LDAP.
  • DN de base : il s’agit de l’emplacement auquel Zabbix va se positionner pour rechercher les utilisateurs. Pour ma part, c’est le de mon OU « IT ».
  • Attribut recherché : il s’agit de l’attribut que Zabbix va chercher pour authentifier l’utilisateur : l’attribut “” ou “” pour Active Directory.
  • DN de lien : c’est le qui correspond au compte de service “Sync_Zabbix” créé pour connecter Zabbix avec votre annuaire LDAP.
  • Mot de passe de lien : tout simplement le mot de passe lié au compte de service.
  • Ajoutez une description si vous le souhaitez.

Pour trouver les différents DN (de vos OU, de vos utilisateurs…) , utilisez la console “Utilisateurs et ordinateurs Active Directory“. Cliquez sur “Affichage” et cochez “Fonctionnalités avancées“. Faites ensuite un clic droit sur “Propriétés“, “Éditeur d’attributs” et cherchez l’attribut “distinguishedName“.

Cochez ensuite “Configurer le provisionnement JIT“. De nouvelles options apparaîtront.

Le paramètre « Configuration du groupe » correspond à la méthode utilisée pour retrouver les groupes d’un utilisateur. Il en existe deux :

  • est un attribut lié au compte de l’utilisateur qui contient tous les groupes auxquels il appartient.
  • , quant à lui, interroge les objets « groupes » pour parcourir à travers l’attribut «  » la liste des utilisateurs membres de ce groupe.

La méthode est à privilégier et c’est celle que nous allons implémenter, car la recherche des groupes est bien plus rapide que . Cependant, pour des annuaires comme OpenLDAP qui n’implémentent pas par défaut l’attribut , l’utilisation de peut s’avérer pertinente.

Voici la configuration pour la méthode “” :

  • Attribut du nom de groupe : Il faut renseigner l’attribut qui contient le nom de votre groupe, renseignez l’attribut «  » qui correspond au « Common Name » de votre groupe.
  • Attribut d’appartenance au groupe d’utilisateurs : il s’agit de l’attribut «  » mentionné plus haut.
  • Attribut du nom d’utilisateur : vous pouvez renseigner l’attribut «  » ou «  » qui correspond au login Windows de votre utilisateur.
  • Attribut du nom de famille de l’utilisateur : vous pouvez renseigner l’attribut «  » qui correspond au nom de famille d’un utilisateur.
  • Correspondance des groupes utilisateurs : il est possible de créer des groupes dans l’annuaire LDAP pour les faire correspondre à des groupes et des rôles dans Zabbix. Par exemple, faire correspondre le groupe « Zabbix_Administrators » de l’annuaire AD au groupe « Zabbix Administrators » et au rôle « Super admin ».
  • Correspondance des types de médias : cette option permet d’associer les attributs LDAP d’un utilisateur (adresse e-mail, numéro de téléphone, etc.) aux champs de contact du compte utilisateur Zabbix. Ces informations sont ensuite utilisées par les types de médias configurés dans Zabbix (email, SMS, Teams, GLPI…) pour l’envoi des alertes.

Dans « Configuration avancée », vous pouvez configurer les options suivantes :

  • StartTLS : si jamais vous utilisez LDAP avec TLS (à ne pas confondre avec LDAPS), cochez cette option.
  • Filtre de recherche : permet d’affiner la manière dont Zabbix recherche un utilisateur dans l’annuaire LDAP lors de l’authentification.

Cliquez sur le bouton “Test” pour tester le bon fonctionnement de l’authentification via votre annuaire. Renseignez un compte inclus dans votre base DN et en utilisant l’attribut de connexion choisi… Pour ma part, la base DN configurée est la suivante “” et l’attribut de connexion est le “”.

Le message “Connexion LDAP réussie” devrait apparaître. Si ce n’est pas le cas, vérifiez les informations renseignées (DN, attribut…) et les mots de passe.

Vous remarquerez la présence du rôle utilisateur « Super admin rôle » et du groupe utilisateur « Zabbix administrators ». Cela est dû au fait que le compte « [email protected] » fait partie du groupe « Zabbix_Administrators » dans Active Directory que j’ai fait correspondre avec un groupe et un rôle Zabbix.

Cliquez ensuite sur le bouton « Actualiser ».

Vous reviendrez sur la page précédente. Vous pourrez y ajouter d’autres serveurs si besoin, et définir lequel est le serveur par défaut utilisé par Zabbix.

Cliquez de nouveau sur « Actualiser », puis allez dans l’onglet « Authentification » et changez l’authentification de « Interne » à « LDAP ».

Il faut également ajouter le groupe « Disabled » pour le paramètre « Groupe d’utilisateurs déprovisionnés ». Le groupe d’utilisateurs déprovisionnés permet à Zabbix de désactiver automatiquement les comptes LDAP qui ne doivent plus avoir accès, tout en conservant leur compte pour l’historique. Par exemple, un utilisateur appartenant initialement au groupe LDAP “Zabbix-Admins“, s’il est retiré de ce groupe dans l’annuaire, Zabbix le supprime de ses groupes Zabbix actifs et l’ajoute automatiquement au groupe Déprovisionnés, ce qui bloque immédiatement son accès.

Vous pouvez également définir une stratégie sur la complexité du mot de passe.

Cliquez ensuite sur « Actualiser ».

Vous pouvez maintenant tester la connexion avec un utilisateur de votre annuaire. Cliquez sur « Déconnexion » en bas à gauche, puis connectez-vous avec un compte de votre annuaire :

Si tout se passe bien, vous serez authentifié et votre compte sera créé avec la mention LDAP :

Configuration d’une connexion LDAPS sur Zabbix

Nous allons maintenant voir comment configurer Zabbix pour fonctionner avec LDAPS, la version chiffrée du protocole LDAP. Sachez tout d’abord que votre serveur doit déjà être configuré pour supporter LDAPS, pour cela je vous renvoie vers plusieurs tutoriels si ce n’est pas le cas :

La première étape va consister à exporter votre certificat (LDAPS ou celui de votre CA) depuis le serveur ADCS. Pour ma part, je vais exporter le certificat de ma CA. Le mode opératoire est le suivant : ouvrez une console MMC, ajoutez le composant enfichable “Certificat” pour l’ordinateur local puis dans “Personnel” > “Certificats” effectuez un clic droit pour exporter votre certificat.

Suivez l’assistant, en faisant attention de ne pas exporter la clé privée !

Nous allons maintenant importer notre certificat sur le serveur Zabbix et le déposer dans le magasin des certificats. J’ai personnellement utilisé l’utilitaire “WinSCP” pour transférer mon certificat de mon ADCS vers mon serveur Zabbix via le protocole . En ligne de commande, vous pouvez aussi utiliser le client SSH natif de Windows et plus précisément la commande pour pousser le fichier.

Avant de l’importer dans le magasin des certificats, nous allons convertir notre certificat en un certificat à l’aide d’OpenSSL. Positionnez le terminal dans le répertoire où se situe le fichier . Ensuite, exécutez cette commande :


Le fichier CRT obtenu doit être déplacé dans le répertoire pour Debian et ses dérivés ou anchors/ pour Red Hat et ses dérivés (ce qui est mon cas). Adaptez la commande suivante à votre distribution :


Puis mettez à jour le magasin des certificats pour qu’il soit pris en compte :



Pour tester que le certificat a bien été pris en compte et est fonctionnel, vous pouvez utiliser la commande suivante :


Le résultat de la commande doit montrer le contenu de votre certificat, ainsi que la mention “Vérification OK” :

Retournez dans Zabbix et procédez aux modifications suivantes :

  • Hôte : modifier l’URI en ajoutant un “s” pour forcer l’utilisation du LDAPS.
  • Port : remplacez 389 par 636, qui est le port par défaut utilisé par LDAPS.
  • Renseignez de nouveau le mot de passe de votre compte faisant office de connecteur.

Testez la connexion avec votre compte, le message “Connexion LDAP réussie” doit apparaître.

Cliquez sur “Actualiser” et les connexions LDAPS sont maintenant opérationnelles.

Analyse Wireshark

Une image vaut davantage que mille mots, je vous propose de voir ensemble ce que l’implémentation du LDAPS change concrètement en termes de sécurité. Gardez à l’esprit que les comptes qui se connectent à l’interface de Zabbix sont en général des comptes appartenant à des personnes du service informatique disposant de plus ou moins de privilèges au sein du SI.

Avec une connexion LDAP classique non chiffrée, l’ensemble du trafic passe en clair sur le réseau, notamment le mot de passe. Un attaquant capturant le trafic pourrait donc connaître sans aucune difficulté l’identifiant et le mot de passe d’un compte utilisateur de l’annuaire (ainsi que le mot de passe du compte connecteur…).

Après le passage en LDAPS, l’ensemble du trafic est chiffré. Il est devenu bien plus compliqué de trouver le couple compte / mot de passe de l’utilisateur.

Conclusion

Grâce à ce tutoriel, vous êtes dorénavant capable de vous connecter à votre interface Zabbix à l’aide d’un compte présent dans votre annuaire Active Directory. Si vous avez suivi la mise en place du LDAPS, les informations de connexion sont chiffrées et vous n’avez pas à craindre qu’un pirate récupère vos identifiants à l’aide d’une simple capture Wireshark !

Je vous remercie pour la lecture de mon article et n’hésitez pas à me faire vos retours en commentaire.

SOURCE