Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
LDAP-Monitoring-Watchdog — LDAP Watchdog:一个实时兼容Linux的LDAP监控工具,用于检测目录变更,为管理员和安全研究人员提供添加、修改和删除操作的可见性。 | Kitploit
工具/GitHubGitHub/megamansec/ldap-monitoring-watchdog
威胁情报事件响应日志分析Archived
GitHubmegamansec/ldap-monitoring-watchdog

LDAP-Monitoring-Watchdog

LDAP Watchdog:一个实时兼容Linux的LDAP监控工具,用于检测目录变更,为管理员和安全研究人员提供添加、修改和删除操作的可见性。

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
1941675个月前Kitploit 审核通过

LDAP Watchdog

概述

LDAP Watchdog 是一款实时监控 LDAP 目录中记录变更的工具。它提供了一种跟踪和可视化用户及组条目修改、添加和删除的机制,使用户能够将预期变更与实际变更关联起来,并识别潜在的安全事件。该工具专为 OpenLDAP 和 Linux 设计,但也可能适用于其他 LDAP 实现。它使用 Python 编写,仅需 ldap3 库。

本软件由 Joshua Rogers 编写。

如果您对以下任意一点感兴趣,那么 LDAP Watchdog 非常适合您:

  • 通过 Slack Webhook 集成,按需了解 LDAP 目录中的动态。
  • 查看 LDAP 中出现的新员工、离职员工和晋升信息。
  • 监控人力资源部门在 LDAP 中的操作 时间 和内容。
  • 检测 LDAP 中的未授权更改。
  • 监控意外泄露的数据。
  • 检测用户登录和登出 LDAP 的时间。

除了监控 LDAP 目录中的修改、添加和删除外,还可以配置忽略特定属性,甚至可以根据属性的旧值/新值来精细化忽略某些属性。

监控到的变更可以转发到 Slack Webhook,或输出到终端(也可同时进行)。支持可选的颜色输出。

该项目曾命名为 LDAP-Stalker(因为监控 LDAP 目录的变更是跟踪公司内部变更的绝佳方式:在公告发布前了解晋升信息、新员工、离职员工等),关于该项目的详细信息和历史博客文章可在此处找到。

示例(无过滤)

注意:在以下示例中,可以通过设置 LDAP_WATCHDOG_IGNORED_ATTRIBUTES=entryCSN,modifyTimestamp 完全忽略 entryCSN 和 modifyTimestamp。

终端(带颜色)输出:

LDAP Watchdog 的输出示例

Slack 输出:

LDAP Watchdog 在 Slack 中的输出示例

功能

  1. 实时监控: LDAP Watchdog 持续监控 LDAP 目录中用户和组条目的变更。

  2. 变更比较: 该工具比较连续两次 LDAP 搜索之间的差异,突出显示添加、修改和删除操作。

  3. 控制用户验证: LDAP Watchdog 支持控制用户机制,如果未发现控制用户的变更,则会触发错误。

  4. 灵活的 LDAP 过滤: 用户可以通过 LDAP_WATCHDOG_SEARCH_FILTER 环境变量自定义 LDAP 过滤,从而专注于特定的对象类或属性。

  5. Slack 集成: 在 Slack 上接收 LDAP 条目添加、修改或删除的实时通知。

  6. 可定制的输出: 控制台输出提供清晰且带颜色的提示,便于查看添加、修改和删除操作。

  7. 忽略的条目和属性: 用户可以指定在比较过程中忽略的 UUID 和属性。

  8. 条件忽略属性: 条件过滤允许用户根据变更类型(添加、修改、删除)忽略特定属性。

要求

  • Python 3.7 或更高版本。
  • ldap3 包。如果使用 Slack Webhook,还需要 requests 包。

安装

PyPI

root@kitploit:~
pip install LDAP-Monitor

如需包含 Slack Webhook 支持:

root@kitploit:~
pip install LDAP-Monitor[slack]

Docker

root@kitploit:~
docker pull megamansec/ldap-monitor

或者从 GitHub Container Registry 拉取:

root@kitploit:~
docker pull ghcr.io/megamansec/ldap-monitoring-watchdog

从源码安装

root@kitploit:~
git clone https://github.com/MegaManSec/LDAP-Monitoring-Watchdog.git
cd LDAP-Monitoring-Watchdog
pip install ".[slack]"

使用方法

通过 pip 安装后运行

root@kitploit:~
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:

root@kitploit:~
python -m ldap_watchdog

通过 Docker 运行

root@kitploit:~
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

Systemd 安装(基于 Debian 的系统)

提供了一个基于 Debian 的安装脚本 install.sh。以 root 身份运行时,该脚本将:

  1. 创建(如果需要)一个 Python 虚拟环境于 /opt/ldap-watchdog。
  2. 从 PyPI 将 LDAP Watchdog 安装到该虚拟环境中。
  3. 创建环境配置文件 /etc/ldap-watchdog.env。
  4. 安装并启用一个 systemd 服务(/etc/systemd/system/ldap-watchdog.service),在后台运行 ldap-watchdog。
  5. 配置日志记录到 /var/log/ldap-watchdog.log 和 /var/log/ldap-watchdog-error.log。
  6. 在 /etc/logrotate.d/ldap-watchdog 中设置日志轮转。

您可以向 install.sh 传递一个可选参数来设置 SLACK_WEBHOOK_URL:

root@kitploit:~
sudo ./install.sh "https://hooks.slack.com/services/[...]"

安装后,编辑 /etc/ldap-watchdog.env 以配置 LDAP 连接设置,然后重启服务:

root@kitploit:~
sudo systemctl restart ldap-watchdog

配置

所有配置均通过环境变量完成。支持以下变量:

通用设置

控制用户

环境变量描述默认值
LDAP_WATCHDOG_CONTROL_UUID控制用户的 UUID,如果未找到该用户的变更则触发错误。如果设置,该用户在每次检索 LDAP 目录时都应有一些类型的变更。""
LDAP_WATCHDOG_CONTROL_USER_ATTRIBUTE要检查控制用户变更的特定属性。如果设置,该属性 在控制 UUID 用户上发生过变更。

Slack 集成

环境变量描述默认值
SLACK_WEBHOOK_URL用于通知的 Slack Webhook URL。需要安装 slack 扩展()。

忽略的条目和属性

条件忽略属性

LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES 变量接受一个 JSON 字符串,其中键是属性名称,值是要忽略的值列表:

root@kitploit:~
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"]
}'

示例配置

root@kitploit:~
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

局限性

  1. LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES 配置可能会意外隐藏并非意图隐藏的重要变更。当某个属性只有一个值且该值发生变化时,可能会发生这种情况。这是因为条件忽略属性会同时隐藏属性值 变为 忽略值 以及 从 忽略值变化而来的情况;例如,如果某个用户的 memberOf 属性值从 cn=mailing-list-user,ou=Accessgroups,dc=mouse,dc=com 变更 为 cn=super-administrator,ou=Accessgroups,dc=mouse,dc=com,该变更将被遗漏。
  2. 类似于第一点,在某些情况下,无法真正确定一个变更是真正的变更,还是在同一时间内的删除和添加。理论上,这并不重要,但需要注意这一点。

许可

本项目采用 GPL3.0 许可协议。

下载工具
环境变量描述默认值
LDAP_WATCHDOG_SERVERLDAP 服务器 URL(例如 ldaps://ldaps.intra.lan)""
LDAP_WATCHDOG_BASE_DNLDAP 搜索的基础分辨名(Base DN)""
LDAP_WATCHDOG_USERNAMELDAP 认证用户名。留空则为匿名绑定。""
LDAP_WATCHDOG_PASSWORDLDAP 认证密码。留空则为匿名绑定。""
LDAP_WATCHDOG_USE_SSL设置为 true 使用 SSL,否则为 falsetrue
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
必须
""
pip install LDAP-Monitor[slack]
None
LDAP_WATCHDOG_SLACK_BULLETPOINT在 Slack 和控制台输出中使用的项目符号字符\u2022
环境变量描述默认值
LDAP_WATCHDOG_IGNORED_UUIDS比较过程中要忽略的 UUID 列表,逗号分隔""
LDAP_WATCHDOG_IGNORED_ATTRIBUTES比较过程中要忽略的属性列表,逗号分隔""
LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES要条件忽略的属性的 JSON 字符串(见下方){}