
LDAP Watchdog : un outil de surveillance LDAP en temps réel compatible Linux pour détecter les modifications d'annuaire, offrant une visibilité sur les ajouts, les modifications et les suppressions pour les administrateurs et les chercheurs en sécurité.
LDAP Watchdog est un outil conçu pour surveiller en temps réel les modifications des enregistrements dans un annuaire LDAP. Il fournit un mécanisme pour suivre et visualiser les modifications, ajouts et suppressions d'entrées utilisateur et de groupe, permettant aux utilisateurs de corréler les changements attendus avec les changements réels et d'identifier d'éventuels incidents de sécurité. Il a été créé avec OpenLDAP et Linux à l'esprit, mais peut fonctionner avec d'autres implémentations de LDAP. Il est écrit en Python et ne nécessite que la bibliothèque ldap3.
Ce logiciel a été écrit par Joshua Rogers.
Si vous êtes intéressé par l'un des points suivants, LDAP Watchdog est fait pour vous :
En plus de surveiller les modifications, ajouts et suppressions dans un annuaire LDAP, il peut être configuré pour ignorer des attributs spécifiques, ou même affiné pour ignorer des attributs granulaires en fonction de leurs anciennes/nouvelles valeurs.
Les changements surveillés peuvent être transmis à un webhook Slack ou affichés dans le terminal (ou les deux). La sortie colorée optionnelle est également prise en charge.
Anciennement nommé LDAP-Stalker (car surveiller les modifications d'un annuaire LDAP est un excellent moyen d'espionner les changements dans une entreprise : découvrir les promotions avant qu'elles ne soient annoncées, les nouvelles embauches, les départs, etc.), un article de blog sur les détails et l'historique de ce projet est disponible ici.
Remarque : dans les exemples ci-dessous, entryCSN et modifyTimestamp peuvent être complètement ignorés en définissant LDAP_WATCHDOG_IGNORED_ATTRIBUTES=entryCSN,modifyTimestamp.


Surveillance en temps réel : LDAP Watchdog surveille en continu un annuaire LDAP pour détecter les modifications dans les entrées utilisateur et de groupe.
Comparaison des modifications : L'outil compare les changements entre des recherches LDAP consécutives, en mettant en évidence les ajouts, modifications et suppressions.
Vérification de l'utilisateur de contrôle : LDAP Watchdog prend en charge un mécanisme d'utilisateur de contrôle, déclenchant une erreur si les modifications de l'utilisateur de contrôle ne sont pas trouvées.
Filtrage LDAP flexible : Les utilisateurs peuvent personnaliser le filtrage LDAP en utilisant la variable d'environnement LDAP_WATCHDOG_SEARCH_FILTER pour se concentrer sur des classes d'objets ou des attributs spécifiques.
Intégration Slack : Recevez des notifications en temps réel sur Slack pour les entrées LDAP ajoutées, modifiées ou supprimées.
Sortie personnalisable : La sortie console fournit des indications claires et colorées des ajouts, modifications et suppressions pour une visibilité facile.
Entrées et attributs ignorés : Les utilisateurs peuvent spécifier des UUID et des attributs à ignorer lors du processus de comparaison.
Attributs ignorés conditionnels : Le filtrage conditionnel permet aux utilisateurs d'ignorer des attributs spécifiques en fonction du type de modification (ajouts, modifications, suppressions).
ldap3. Si vous utilisez un webhook Slack, le paquet requests est également requis.pip install LDAP-Monitor
Pour inclure le support du webhook Slack :
pip install LDAP-Monitor[slack]
docker pull megamansec/ldap-monitor
Ou depuis le Registre de conteneurs GitHub :
docker pull ghcr.io/megamansec/ldap-monitoring-watchdog
git clone https://github.com/MegaManSec/LDAP-Monitoring-Watchdog.git
cd LDAP-Monitoring-Watchdog
pip install ".[slack]"
export LDAP_WATCHDOG_SERVER='ldaps://ldaps.intra.lan'
export LDAP_WATCHDOG_BASE_DN='dc=mouse,dc=com'
export LDAP_WATCHDOG_USERNAME='Emily'
export LDAP_WATCHDOG_PASSWORD='qwerty123'
ldap-watchdog
Ou en utilisant python -m :
python -m ldap_watchdog
docker run -d \
-e LDAP_WATCHDOG_SERVER='ldaps://ldaps.intra.lan' \
-e LDAP_WATCHDOG_BASE_DN='dc=mouse,dc=com' \
-e LDAP_WATCHDOG_USERNAME='Emily' \
-e LDAP_WATCHDOG_PASSWORD='qwerty123' \
-e SLACK_WEBHOOK_URL='https://hooks.slack.com/services/[...]' \
-e LDAP_WATCHDOG_IGNORED_ATTRIBUTES='modifyTimestamp,phoneNumber,officeLocation,gecos' \
megamansec/ldap-monitor
Un script d'installation basé sur Debian, install.sh, est fourni. Lorsqu'il est exécuté en tant que root, ce script :
/opt/ldap-watchdog./etc/ldap-watchdog.env pour la configuration./etc/systemd/system/ldap-watchdog.service) qui exécute ldap-watchdog en arrière-plan./var/log/ldap-watchdog.log et /var/log/ldap-watchdog-error.log./etc/logrotate.d/ldap-watchdog.Vous pouvez éventuellement passer un seul argument à install.sh pour définir le SLACK_WEBHOOK_URL :
sudo ./install.sh "https://hooks.slack.com/services/[...]"
Après l'installation, modifiez /etc/ldap-watchdog.env pour configurer les paramètres de connexion LDAP, puis redémarrez le service :
sudo systemctl restart ldap-watchdog
Toute la configuration se fait via des variables d'environnement. Les variables suivantes sont prises en charge :
| Variable d'environnement | Description | Défaut |
|---|
| Variable d'environnement | Description | Défaut |
|---|---|---|
La variable LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES accepte une chaîne JSON où les clés sont des noms d'attributs et les valeurs sont des listes de valeurs à ignorer :
export LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES='{
"objectClass": ["posixAccount"],
"memberOf": ["cn=mailing-list-user,ou=Accessgroups,dc=mouse,dc=com", "cn=interns,ou=Accessgroups,dc=mouse,dc=com"],
"organizationalStatus": ["researcher"]
}'
export LDAP_WATCHDOG_CONTROL_UUID='a71c6e4c-8881-4a03-95bf-4fc25d5e6359'
export LDAP_WATCHDOG_SERVER='ldaps://ldaps.intra.lan'
export LDAP_WATCHDOG_BASE_DN='dc=mouse,dc=com'
export LDAP_WATCHDOG_USERNAME='Emily'
export LDAP_WATCHDOG_PASSWORD='qwerty123'
export LDAP_WATCHDOG_USE_SSL='true'
export LDAP_WATCHDOG_REFRESH_RATE='60'
export LDAP_WATCHDOG_DISABLE_COLOR_OUTPUT='false'
export LDAP_WATCHDOG_IGNORED_UUIDS='e191c564-6e6d-42c1-ae51-bda0509fe846,8655e0d9-ecdc-46ce-ba42-1fa3dfbf5faa'
export LDAP_WATCHDOG_IGNORED_ATTRIBUTES='modifyTimestamp,phoneNumber,officeLocation,gecos'
export LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES='{"objectClass":["posixAccount"],"memberOf":["cn=mailing-list-user,ou=Accessgroups,dc=mouse,dc=com","cn=interns,ou=Accessgroups,dc=mouse,dc=com"],"organizationalStatus":["researcher"]}'
export SLACK_WEBHOOK_URL='https://hooks.slack.com/services/[...]'
ldap-watchdog
Ce projet est sous licence GPL3.0.
| Variable d'environnement | Description | Défaut |
|---|
LDAP_WATCHDOG_SERVER | URL du serveur LDAP (ex. ldaps://ldaps.intra.lan) | "" |
LDAP_WATCHDOG_BASE_DN | Nom distinctif de base pour les recherches LDAP | "" |
LDAP_WATCHDOG_USERNAME | Nom d'utilisateur LDAP pour l'authentification. Laissez vide pour une liaison anonyme. | "" |
LDAP_WATCHDOG_PASSWORD | Mot de passe LDAP pour l'authentification. Laissez vide pour une liaison anonyme. | "" |
LDAP_WATCHDOG_USE_SSL | Définir sur true pour utiliser SSL, false sinon | true |
LDAP_WATCHDOG_SEARCH_FILTER | Filtre LDAP pour les entrées utilisateur et de groupe | (&(|(objectClass=inetOrgPerson)(objectClass=groupOfNames))) |
LDAP_WATCHDOG_SEARCH_ATTRIBUTE | Liste d'attributs séparés par des virgules à récupérer. *,+ est utilisé par défaut pour inclure les attributs opérationnels. | *,+ |
LDAP_WATCHDOG_REFRESH_RATE | Intervalle de temps en secondes entre les recherches LDAP consécutives | 60 |
LDAP_WATCHDOG_DISABLE_COLOR_OUTPUT | Définir sur true pour désactiver la sortie colorée du terminal | false |
LDAP_WATCHDOG_CONTROL_UUID | UUID d'un utilisateur de contrôle dont les modifications déclenchent une erreur si elles ne sont pas trouvées. S'il est défini, cet utilisateur doit toujours avoir un certain type de changement lors de la récupération de l'annuaire LDAP. | "" |
LDAP_WATCHDOG_CONTROL_USER_ATTRIBUTE | Attribut spécifique à vérifier pour les modifications chez l'utilisateur de contrôle. S'il est défini, cet attribut doit avoir changé pour l'utilisateur UUID de contrôle. | "" |
SLACK_WEBHOOK_URLURL du webhook Slack pour les notifications. Nécessite l'extension slack (pip install LDAP-Monitor[slack]). |
None |
LDAP_WATCHDOG_SLACK_BULLETPOINT | Caractère de puce utilisé dans les sorties Slack et console | \u2022 |
| Variable d'environnement | Description | Défaut |
|---|
LDAP_WATCHDOG_IGNORED_UUIDS | Liste d'UUID séparés par des virgules à ignorer lors de la comparaison | "" |
LDAP_WATCHDOG_IGNORED_ATTRIBUTES | Liste d'attributs séparés par des virgules à ignorer lors de la comparaison | "" |
LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES | Chaîne JSON d'attributs à ignorer conditionnellement (voir ci-dessous) | {} |