
LDAP Watchdog: Инструмент мониторинга LDAP в реальном времени, совместимый с Linux, для обнаружения изменений в каталоге, предоставляющий видимость добавлений, изменений и удалений для администраторов и исследователей безопасности.
LDAP Watchdog — это инструмент, предназначенный для мониторинга изменений записей в каталоге LDAP в реальном времени. Он предоставляет механизм отслеживания и визуализации модификаций, добавлений и удалений записей пользователей и групп, позволяя пользователям сопоставлять ожидаемые изменения с реальными и выявлять потенциальные инциденты безопасности. Инструмент создавался с учётом OpenLDAP и Linux, однако может работать и в других реализациях LDAP. Он написан на Python и требует только библиотеки ldap3.
Это программное обеспечение написано Джошуа Роджерсом.
Если вас интересует что-либо из перечисленного ниже, то LDAP Watchdog для вас:
Помимо мониторинга модификаций, добавлений и удалений в каталоге LDAP, можно настроить игнорирование определённых атрибутов или даже точно настроить игнорирование атрибутов в зависимости от их старых/новых значений.
Отслеживаемые изменения могут пересылаться в Slack Webhook или выводиться в терминал (или и то, и другое). Поддерживается необязательная цветная раскраска вывода.
Ранее инструмент назывался LDAP-Stalker (поскольку мониторинг изменений каталога LDAP — отличный способ следить за изменениями в компании: узнавать о повышениях до их официального объявления, о новых сотрудниках, уволенных и т.д.). Подробности и история проекта описаны в статье в блоге.
Примечание: в приведённых ниже примерах entryCSN и modifyTimestamp можно полностью игнорировать, установив LDAP_WATCHDOG_IGNORED_ATTRIBUTES=entryCSN,modifyTimestamp.


Мониторинг в реальном времени: LDAP Watchdog непрерывно отслеживает изменения в каталоге LDAP в записях пользователей и групп.
Сравнение изменений: Инструмент сравнивает изменения между последовательными поисками в LDAP, выделяя добавления, модификации и удаления.
Проверка контрольного пользователя: LDAP Watchdog поддерживает механизм контрольного пользователя, генерируя ошибку, если изменения контрольного пользователя не найдены.
Гибкая фильтрация LDAP: Пользователи могут настраивать фильтр LDAP с помощью переменной окружения LDAP_WATCHDOG_SEARCH_FILTER, чтобы сосредоточиться на определённых классах объектов или атрибутах.
Интеграция со Slack: Получайте уведомления в реальном времени в Slack о добавленных, изменённых или удалённых записях LDAP.
Настраиваемый вывод: Консольный вывод обеспечивает чёткие и цветные индикаторы добавлений, модификаций и удалений для удобства восприятия.
Игнорируемые записи и атрибуты: Пользователи могут указать UUID и атрибуты, которые следует игнорировать в процессе сравнения.
Условно игнорируемые атрибуты: Условная фильтрация позволяет игнорировать определённые атрибуты в зависимости от типа изменения (добавления, модификации, удаления).
ldap3. Если используется Slack Webhook, также требуется пакет requests.pip install LDAP-Monitor
Для добавления поддержки Slack Webhook:
pip install LDAP-Monitor[slack]
docker pull megamansec/ldap-monitor
Или из 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
Или с помощью 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
Предоставляется скрипт установки для Debian-based систем — install.sh. При запуске с правами root этот скрипт:
/opt/ldap-watchdog./etc/ldap-watchdog.env для конфигурации./etc/systemd/system/ldap-watchdog.service), который запускает ldap-watchdog в фоне./var/log/ldap-watchdog.log и /var/log/ldap-watchdog-error.log./etc/logrotate.d/ldap-watchdog.Вы можете передать один аргумент в install.sh, чтобы задать SLACK_WEBHOOK_URL:
sudo ./install.sh "https://hooks.slack.com/services/[...]"
После установки отредактируйте /etc/ldap-watchdog.env, чтобы настроить параметры подключения к LDAP, затем перезапустите сервис:
sudo systemctl restart ldap-watchdog
Вся настройка выполняется через переменные окружения. Поддерживаются следующие переменные:
| Переменная окружения | Описание | По умолчанию |
|---|---|---|
LDAP_WATCHDOG_SERVER | URL сервера LDAP (например, ldaps://ldaps.intra.lan) | "" |
LDAP_WATCHDOG_BASE_DN | Базовое отличительное имя (Base DN) для поиска в LDAP | "" |
LDAP_WATCHDOG_USERNAME | Имя пользователя LDAP для аутентификации. Оставьте пустым для анонимного подключения. | "" |
LDAP_WATCHDOG_PASSWORD | Пароль LDAP для аутентификации. Оставьте пустым для анонимного подключения. | "" |
LDAP_WATCHDOG_USE_SSL | Установите true для использования SSL, иначе false | true |
LDAP_WATCHDOG_SEARCH_FILTER | LDAP-фильтр для записей пользователей и групп | (&(|(objectClass=inetOrgPerson)(objectClass=groupOfNames))) |
LDAP_WATCHDOG_SEARCH_ATTRIBUTE | Список атрибутов для получения через запятую. По умолчанию используется *,+ для включения операционных атрибутов. | *,+ |
LDAP_WATCHDOG_REFRESH_RATE | Интервал времени в секундах между последовательными поисками в LDAP | 60 |
LDAP_WATCHDOG_DISABLE_COLOR_OUTPUT | Установите true для отключения цветного вывода в терминале | false |