
LDAP Watchdog: Ein Echtzeit-Linux-kompatibles LDAP-Überwachungstool zum Erkennen von Verzeichnisänderungen, das Administratoren und Sicherheitsforschern Einblick in Hinzufügungen, Änderungen und Löschungen bietet.
LDAP Watchdog ist ein Werkzeug, das entwickelt wurde, um Änderungen von Einträgen in einem LDAP-Verzeichnis in Echtzeit zu überwachen. Es bietet einen Mechanismus, um Modifikationen, Hinzufügungen und Löschungen von Benutzer- und Gruppeneinträgen zu verfolgen und zu visualisieren, sodass Benutzer erwartete Änderungen mit tatsächlichen Änderungen korrelieren und mögliche Sicherheitsvorfälle identifizieren können. Es wurde mit OpenLDAP und Linux entwickelt, sollte aber auch mit anderen LDAP-Implementierungen funktionieren. Es ist in Python geschrieben und benötigt nur die ldap3-Bibliothek.
Diese Software wurde von Joshua Rogers geschrieben.
Wenn Sie an einem der folgenden Punkte interessiert sind, dann ist LDAP Watchdog das Richtige für Sie:
Zusätzlich zur Überwachung von Modifikationen, Hinzufügungen und Löschungen in einem LDAP-Verzeichnis kann es so konfiguriert werden, dass bestimmte Attribute ignoriert werden, oder sogar fein abgestimmt werden, um granulare Attribute in Abhängigkeit von ihren alten/neuen Werten zu ignorieren.
Die überwachten Änderungen können entweder an einen Slack-Webhook weitergeleitet oder auf dem Terminal ausgegeben werden (oder beides). Optionale farbige Ausgabe wird ebenfalls unterstützt.
Ehemals benannt als LDAP-Stalker (weil die Überwachung von Änderungen in einem LDAP-Verzeichnis eine ausgezeichnete Möglichkeit ist, Veränderungen in einem Unternehmen zu verfolgen: Erfahren Sie von Beförderungen, bevor sie angekündigt werden, Neueinstellungen, Abgänge usw.), ein Blogbeitrag über die Details und die Geschichte dieses Projekts kann hier gefunden werden.
Hinweis: In den folgenden Beispielen können entryCSN und modifyTimestamp vollständig ignoriert werden, indem LDAP_WATCHDOG_IGNORED_ATTRIBUTES=entryCSN,modifyTimestamp gesetzt wird.


Echtzeit-Überwachung: LDAP Watchdog überwacht kontinuierlich ein LDAP-Verzeichnis auf Änderungen in Benutzer- und Gruppeneinträgen.
Änderungsvergleich: Das Werkzeug vergleicht Änderungen zwischen aufeinanderfolgenden LDAP-Suchen und hebt Hinzufügungen, Modifikationen und Löschungen hervor.
Kontrollbenutzer-Verifizierung: LDAP Watchdog unterstützt einen Kontrollbenutzer-Mechanismus, der einen Fehler auslöst, wenn die Änderungen des Kontrollbenutzers nicht gefunden werden.
Flexible LDAP-Filterung: Benutzer können die LDAP-Filterung mit der Umgebungsvariablen LDAP_WATCHDOG_SEARCH_FILTER anpassen, um sich auf bestimmte Objektklassen oder Attribute zu konzentrieren.
Slack-Integration: Erhalten Sie Echtzeit-Benachrichtigungen in Slack für hinzugefügte, geänderte oder gelöschte LDAP-Einträge.
Anpassbare Ausgabe: Die Konsolenausgabe bietet klare und farbige Hinweise auf Hinzufügungen, Modifikationen und Löschungen für eine einfache Sichtbarkeit.
Ignorierte Einträge und Attribute: Benutzer können UUIDs und Attribute angeben, die während des Vergleichs ignoriert werden sollen.
Bedingte ignorierte Attribute: Bedingte Filterung ermöglicht es Benutzern, bestimmte Attribute basierend auf dem Änderungstyp (Hinzufügungen, Modifikationen, Löschungen) zu ignorieren.
ldap3-Paket. Falls ein Slack-Webhook verwendet wird, ist auch das requests-Paket erforderlich.pip install LDAP-Monitor
Um Slack-Webhook-Unterstützung einzuschließen:
pip install LDAP-Monitor[slack]
docker pull megamansec/ldap-monitor
Oder aus dem GitHub Container Registry:
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
Oder mit 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
Ein Debian-basiertes Installationsskript, install.sh, wird bereitgestellt. Wenn es als root ausgeführt wird, führt dieses Skript Folgendes aus:
/opt/ldap-watchdog./etc/ldap-watchdog.env für die Konfiguration./etc/systemd/system/ldap-watchdog.service), der ldap-watchdog im Hintergrund ausführt./var/log/ldap-watchdog.log und /var/log/ldap-watchdog-error.log./etc/logrotate.d/ldap-watchdog ein.Sie können optional ein einzelnes Argument an install.sh übergeben, um die SLACK_WEBHOOK_URL zu setzen:
sudo ./install.sh "https://hooks.slack.com/services/[...]"
Nach der Installation bearbeiten Sie /etc/ldap-watchdog.env, um die LDAP-Verbindungseinstellungen zu konfigurieren, und starten dann den Dienst neu:
sudo systemctl restart ldap-watchdog
Die gesamte Konfiguration erfolgt über Umgebungsvariablen. Die folgenden Variablen werden unterstützt:
| Umgebungsvariable | Beschreibung | Standard |
|---|---|---|
| Umgebungsvariable | Beschreibung | Standard |
|---|---|---|
Die Variable LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES akzeptiert einen JSON-String, bei dem die Schlüssel Attributnamen und die Werte Listen von zu ignorierenden Werten sind:
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
Dieses Projekt ist lizenziert unter GPL3.0.
| Umgebungsvariable | Beschreibung | Standard |
|---|
LDAP_WATCHDOG_SERVER | LDAP-Server-URL (z. B. ldaps://ldaps.intra.lan) | "" |
LDAP_WATCHDOG_BASE_DN | Basis-Distinguished-Name für LDAP-Suchen | "" |
LDAP_WATCHDOG_USERNAME | LDAP-Benutzername für die Authentifizierung. Leer lassen für anonyme Bindung. | "" |
LDAP_WATCHDOG_PASSWORD | LDAP-Passwort für die Authentifizierung. Leer lassen für anonyme Bindung. | "" |
LDAP_WATCHDOG_USE_SSL | Setzen Sie true, um SSL zu verwenden, andernfalls false | true |
LDAP_WATCHDOG_SEARCH_FILTER | LDAP-Filter für Benutzer- und Gruppeneinträge | (&(|(objectClass=inetOrgPerson)(objectClass=groupOfNames))) |
LDAP_WATCHDOG_SEARCH_ATTRIBUTE | Kommagetrennte Liste der abzurufenden Attribute. Standardmäßig wird *,+ verwendet, um operative Attribute einzuschließen. | *,+ |
LDAP_WATCHDOG_REFRESH_RATE | Zeitintervall in Sekunden zwischen aufeinanderfolgenden LDAP-Suchen | 60 |
LDAP_WATCHDOG_DISABLE_COLOR_OUTPUT | Setzen Sie true, um die farbige Terminalausgabe zu deaktivieren | false |
LDAP_WATCHDOG_CONTROL_UUID| UUID eines Kontrollbenutzers, dessen Änderungen einen Fehler auslösen, wenn sie nicht gefunden werden. Wenn gesetzt, sollte dieser Benutzer immer eine Art von Änderung aufweisen, wenn das LDAP-Verzeichnis abgerufen wird. |
"" |
LDAP_WATCHDOG_CONTROL_USER_ATTRIBUTE | Bestimmtes Attribut, das auf Änderungen beim Kontrollbenutzer überprüft wird. Wenn gesetzt, muss sich dieses Attribut für den Kontroll-UUID-Benutzer geändert haben. | "" |
SLACK_WEBHOOK_URLSlack-Webhook-URL für Benachrichtigungen. Erfordert das slack-Extra (pip install LDAP-Monitor[slack]). |
None |
LDAP_WATCHDOG_SLACK_BULLETPOINT | Aufzählungszeichen, das in Slack und der Konsolenausgabe verwendet wird | \u2022 |
| Umgebungsvariable | Beschreibung | Standard |
|---|
LDAP_WATCHDOG_IGNORED_UUIDS | Kommagetrennte Liste von UUIDs, die beim Vergleich ignoriert werden sollen | "" |
LDAP_WATCHDOG_IGNORED_ATTRIBUTES | Kommagetrennte Liste von Attributen, die beim Vergleich ignoriert werden sollen | "" |
LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES | JSON-String von Attributen, die bedingt ignoriert werden sollen (siehe unten) | {} |