
LDAP Watchdog: أداة مراقبة LDAP متوافقة مع لينكس وفي الوقت الفعلي لاكتشاف التغييرات في الدليل، مما يوفر رؤية للإضافات والتعديلات والحذف للمسؤولين والباحثين في مجال الأمن.
LDAP Watchdog هي أداة مصممة لمراقبة تغييرات السجلات في دليل LDAP في الوقت الفعلي. توفر آلية لتتبع وتصور التعديلات والإضافات والإزالات لإدخالات المستخدمين والمجموعات، مما يسمح للمستخدمين بربط التغييرات المتوقعة بالتغييرات الفعلية وتحديد الحوادث الأمنية المحتملة. تم إنشاؤها مع وضع OpenLDAP و Linux في الاعتبار، ومع ذلك قد تعمل في تطبيقات أخرى من LDAP. مكتوبة بلغة Python وتتطلب فقط مكتبة ldap3.
هذا البرنامج من كتابة Joshua Rogers.
إذا كنت مهتمًا بأي مما يلي، فإن LDAP Watchdog هو ما تبحث عنه:
بالإضافة إلى مراقبة التعديلات والإضافات والإزالات في دليل LDAP، يمكن تكوينه لتجاهل سمات محددة، أو حتى ضبطه بدقة لتجاهل السمات الدقيقة اعتمادًا على قيمها القديمة/الجديدة.
يمكن إعادة توجيه التغييرات التي تتم مراقبتها إما إلى webhook من Slack أو إخراجها إلى الطرفية (أو كليهما). يتم دعم الإخراج الملون الاختياري أيضًا.
كان يُسمى سابقًا 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.
إخراج قابل للتخصيص: يوفر إخراج وحدة التحكم مؤشرات واضحة وملونة للإضافات والتعديلات والحذف لسهولة الرؤية.
الإدخالات والسمات المتجاهلة: يمكن للمستخدمين تحديد UUIDs وسمات يتم تجاهلها أثناء عملية المقارنة.
السمات المتجاهلة المشروطة: تسمح التصفية المشروطة للمستخدمين بتجاهل سمات محددة بناءً على نوع التغيير (إضافات، تعديلات، حذف).
ldap3. إذا كنت تستخدم webhook من Slack، فإن حزمة requests مطلوبة أيضًا.pip install LDAP-Monitor
لتضمين دعم webhook من Slack:
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، install.sh. عند تشغيله كجذر، يقوم هذا السكريبت بـ:
/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_CONTROL_UUID | UUID للمستخدم الضابط الذي تؤدي تغييراته إلى حدوث خطأ إذا لم يتم العثور عليها. إذا تم تعيينه، يجب أن يكون لهذا المستخدم دائمًا نوع من التغيير عند استرداد دليل LDAP. |
| متغير البيئة | الوصف | الافتراضي |
|---|---|---|
SLACK_WEBHOOK_URL |
يقبل متغير البيئة LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES سلسلة JSON حيث تكون المفاتيح هي أسماء السمات والقيم هي قوائم من القيم التي سيتم تجاهلها:
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
هذا المشروع مرخص بموجب GPL3.0.
| متغير البيئة | الوصف | الافتراضي |
|---|
LDAP_WATCHDOG_SERVER | عنوان URL لخادم LDAP (مثل ldaps://ldaps.intra.lan) | "" |
LDAP_WATCHDOG_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 |
"" |
LDAP_WATCHDOG_CONTROL_USER_ATTRIBUTE | سمة محددة للتحقق من التغييرات في المستخدم الضابط. إذا تم تعيينها، يجب أن تكون هذه السمة قد تغيرت لمستخدم UUID الضابط. | "" |
عنوان URL لـ Slack Webhook للإشعارات. يتطلب حزمة slack الإضافية (pip install LDAP-Monitor[slack]). |
None |
LDAP_WATCHDOG_SLACK_BULLETPOINT | حرف النقطة المستخدم في مخرجات Slack ووحدة التحكم | \u2022 |
| متغير البيئة | الوصف | الافتراضي |
|---|
LDAP_WATCHDOG_IGNORED_UUIDS | قائمة مفصولة بفواصل من UUIDs لتجاهلها أثناء المقارنة | "" |
LDAP_WATCHDOG_IGNORED_ATTRIBUTES | قائمة مفصولة بفواصل من السمات لتجاهلها أثناء المقارنة | "" |
LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES | سلسلة JSON من السمات التي سيتم تجاهلها بشكل مشروط (انظر أدناه) | {} |