
LDAP Watchdog: Una herramienta de monitoreo LDAP en tiempo real compatible con Linux para detectar cambios en el directorio, proporcionando visibilidad sobre adiciones, modificaciones y eliminaciones para administradores e investigadores de seguridad.
LDAP Watchdog es una herramienta diseñada para monitorear cambios en los registros de un directorio LDAP en tiempo real. Proporciona un mecanismo para rastrear y visualizar modificaciones, adiciones y eliminaciones de entradas de usuarios y grupos, lo que permite a los usuarios correlacionar los cambios esperados con los reales e identificar posibles incidentes de seguridad. Fue creado pensando en OpenLDAP y Linux, sin embargo puede funcionar en otras implementaciones de LDAP. Está escrito en Python y solo requiere la librería ldap3.
Este software fue escrito por Joshua Rogers.
Si te interesa alguno de los siguientes puntos, entonces LDAP Watchdog es para ti:
Además de monitorear modificaciones, adiciones y eliminaciones en un directorio LDAP, se puede configurar para ignorar atributos específicos, o incluso ajustarse para ignorar atributos detallados según sus valores antiguos/nuevos.
Los cambios monitoreados pueden reenviarse a un webhook de Slack o mostrarse en la terminal (o ambos). También se admite la salida con color opcional.
Anteriormente llamado LDAP-Stalker (porque monitorear cambios en un directorio LDAP es una excelente manera de espiar los cambios en una empresa: conocer promociones antes de que se anuncien, nuevas contrataciones, bajas, etc.), una publicación de blog sobre los detalles y la historia de este proyecto se puede encontrar aquí.
Nota: en los ejemplos siguientes, entryCSN y modifyTimestamp pueden ignorarse por completo estableciendo LDAP_WATCHDOG_IGNORED_ATTRIBUTES=entryCSN,modifyTimestamp.


Monitoreo en tiempo real: LDAP Watchdog monitorea continuamente un directorio LDAP para detectar cambios en las entradas de usuarios y grupos.
Comparación de cambios: La herramienta compara cambios entre búsquedas LDAP consecutivas, destacando adiciones, modificaciones y eliminaciones.
Verificación de usuario de control: LDAP Watchdog admite un mecanismo de usuario de control, generando un error si no se encuentran los cambios del usuario de control.
Filtrado LDAP flexible: Los usuarios pueden personalizar el filtrado LDAP usando la variable de entorno LDAP_WATCHDOG_SEARCH_FILTER para centrarse en clases de objetos o atributos específicos.
Integración con Slack: Recibe notificaciones en tiempo real en Slack para entradas LDAP añadidas, modificadas o eliminadas.
Salida personalizable: La salida de la consola proporciona indicaciones claras y con color de adiciones, modificaciones y eliminaciones para una fácil visualización.
Entradas y atributos ignorados: Los usuarios pueden especificar UUID y atributos a ignorar durante el proceso de comparación.
Atributos ignorados condicionalmente: El filtrado condicional permite a los usuarios ignorar atributos específicos según el tipo de cambio (adiciones, modificaciones, eliminaciones).
ldap3. Si se usa un webhook de Slack, también se requiere el paquete requests.pip install LDAP-Monitor
Para incluir soporte para webhook de Slack:
pip install LDAP-Monitor[slack]
docker pull megamansec/ldap-monitor
O desde el Registro de Contenedores de 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
O usando 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
Se proporciona un script de instalación basado en Debian, install.sh. Cuando se ejecuta como root, este script:
/opt/ldap-watchdog./etc/ldap-watchdog.env para la configuración./etc/systemd/system/ldap-watchdog.service) que ejecuta ldap-watchdog en segundo plano./var/log/ldap-watchdog.log y /var/log/ldap-watchdog-error.log./etc/logrotate.d/ldap-watchdog.Opcionalmente, puedes pasar un solo argumento a install.sh para establecer SLACK_WEBHOOK_URL:
sudo ./install.sh "https://hooks.slack.com/services/[...]"
Después de la instalación, edita /etc/ldap-watchdog.env para configurar los ajustes de conexión LDAP y luego reinicia el servicio:
sudo systemctl restart ldap-watchdog
Toda la configuración se realiza mediante variables de entorno. Se admiten las siguientes variables:
| Variable de entorno | Descripción | Valor predeterminado |
|---|---|---|
LDAP_WATCHDOG_SERVER | URL del servidor LDAP (ej. ldaps://ldaps.intra.lan) | "" |
LDAP_WATCHDOG_BASE_DN | Nombre Distinguido base para búsquedas LDAP | "" |
LDAP_WATCHDOG_USERNAME | Nombre de usuario LDAP para autenticación. Déjalo vacío para enlace anónimo. | "" |
LDAP_WATCHDOG_PASSWORD | Contraseña LDAP para autenticación. Déjala vacía para enlace anónimo. | "" |
LDAP_WATCHDOG_USE_SSL | Establécelo en true para usar SSL, false en caso contrario | true |
LDAP_WATCHDOG_SEARCH_FILTER | Filtro LDAP para entradas de usuarios y grupos | (&(|(objectClass=inetOrgPerson)(objectClass=groupOfNames))) |
LDAP_WATCHDOG_SEARCH_ATTRIBUTE | Lista separada por comas de atributos a recuperar. Por defecto se usa *,+ para incluir atributos operacionales. | *,+ |
LDAP_WATCHDOG_REFRESH_RATE | Intervalo de tiempo en segundos entre búsquedas LDAP consecutivas | 60 |
LDAP_WATCHDOG_DISABLE_COLOR_OUTPUT | Establécelo en true para deshabilitar la salida de terminal en color | false |