
LDAP Watchdog: Uno strumento di monitoraggio LDAP in tempo reale compatibile con Linux per rilevare le modifiche alla directory, fornendo visibilità su aggiunte, modifiche ed eliminazioni per amministratori e ricercatori di sicurezza.
LDAP Watchdog è uno strumento progettato per monitorare le modifiche ai record in un directory LDAP in tempo reale. Fornisce un meccanismo per tracciare e visualizzare modifiche, aggiunte e rimozioni di voci utente e di gruppo, consentendo agli utenti di correlare le modifiche previste con quelle effettive e identificare potenziali incidenti di sicurezza. È stato creato pensando a OpenLDAP e Linux, tuttavia potrebbe funzionare con altre implementazioni di LDAP. È scritto in Python e richiede solo la libreria ldap3.
Questo software è stato scritto da Joshua Rogers.
Se sei interessato a uno dei seguenti, allora LDAP Watchdog è ciò che fa per te:
Oltre a monitorare modifiche, aggiunte e rimozioni in un directory LDAP, può essere configurato per ignorare attributi specifici, o anche ottimizzato per ignorare attributi granulari a seconda dei loro vecchi/nuovi valori.
Le modifiche monitorate possono essere inoltrate a un webhook di Slack o visualizzate sul terminale (o entrambi). È supportato anche un output opzionale a colori.
Precedentemente chiamato LDAP-Stalker (perché monitorare le modifiche di un directory LDAP è un ottimo modo per spiare i cambiamenti in un'azienda: scoprire promozioni prima che siano annunciate, nuove assunzioni, uscite, ecc.), un post sul blog con i dettagli e la storia di questo progetto può essere trovato qui.
Nota: negli esempi seguenti, entryCSN e modifyTimestamp possono essere completamente ignorati impostando LDAP_WATCHDOG_IGNORED_ATTRIBUTES=entryCSN,modifyTimestamp.


Monitoraggio in tempo reale: LDAP Watchdog monitora continuamente un directory LDAP per rilevare modifiche nelle voci utente e di gruppo.
Confronto delle modifiche: Lo strumento confronta le modifiche tra ricerche LDAP consecutive, evidenziando aggiunte, modifiche e cancellazioni.
Verifica dell'utente di controllo: LDAP Watchdog supporta un meccanismo di utente di controllo, generando un errore se le modifiche dell'utente di controllo non vengono trovate.
Filtraggio LDAP flessibile: Gli utenti possono personalizzare il filtraggio LDAP utilizzando la variabile d'ambiente LDAP_WATCHDOG_SEARCH_FILTER per concentrarsi su classi di oggetti o attributi specifici.
Integrazione Slack: Ricevi notifiche in tempo reale su Slack per voci LDAP aggiunte, modificate o eliminate.
Output personalizzabile: L'output della console fornisce indicazioni chiare e colorate di aggiunte, modifiche e cancellazioni per una facile visibilità.
Voci e attributi ignorati: Gli utenti possono specificare UUID e attributi da ignorare durante il processo di confronto.
Attributi ignorati condizionalmente: Il filtraggio condizionale consente agli utenti di ignorare attributi specifici in base al tipo di modifica (aggiunte, modifiche, cancellazioni).
ldap3. Se si utilizza un webhook di Slack, è necessario anche il pacchetto requests.pip install LDAP-Monitor
Per includere il supporto per webhook Slack:
pip install LDAP-Monitor[slack]
docker pull megamansec/ldap-monitor
Oppure da 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
Oppure 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
Viene fornito uno script di installazione basato su Debian, install.sh. Quando eseguito come root, questo script:
/opt/ldap-watchdog./etc/ldap-watchdog.env per la configurazione./etc/systemd/system/ldap-watchdog.service) che esegue ldap-watchdog in background./var/log/ldap-watchdog.log e /var/log/ldap-watchdog-error.log./etc/logrotate.d/ldap-watchdog.Puoi opzionalmente passare un singolo argomento a install.sh per impostare SLACK_WEBHOOK_URL:
sudo ./install.sh "https://hooks.slack.com/services/[...]"
Dopo l'installazione, modifica /etc/ldap-watchdog.env per configurare le impostazioni di connessione LDAP, quindi riavvia il servizio:
sudo systemctl restart ldap-watchdog
Tutta la configurazione avviene tramite variabili d'ambiente. Le seguenti variabili sono supportate:
| Variabile d'ambiente | Descrizione | Predefinito |
|---|---|---|
| Variabile d'ambiente | Descrizione | Predefinito |
|---|---|---|
La variabile LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES accetta una stringa JSON dove le chiavi sono nomi di attributi e i valori sono elenchi di valori da ignorare:
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
Questo progetto è concesso in licenza sotto GPL3.0.
| Variabile d'ambiente | Descrizione | Predefinito |
|---|
LDAP_WATCHDOG_SERVER | URL del server LDAP (es. ldaps://ldaps.intra.lan) | "" |
LDAP_WATCHDOG_BASE_DN | Nome distinto di base per le ricerche LDAP | "" |
LDAP_WATCHDOG_USERNAME | Nome utente LDAP per l'autenticazione. Lascia vuoto per bind anonimo. | "" |
LDAP_WATCHDOG_PASSWORD | Password LDAP per l'autenticazione. Lascia vuoto per bind anonimo. | "" |
LDAP_WATCHDOG_USE_SSL | Imposta a true per usare SSL, false altrimenti | true |
LDAP_WATCHDOG_SEARCH_FILTER | Filtro LDAP per le voci utente e di gruppo | (&(|(objectClass=inetOrgPerson)(objectClass=groupOfNames))) |
LDAP_WATCHDOG_SEARCH_ATTRIBUTE | Elenco separato da virgole degli attributi da recuperare. Per impostazione predefinita viene usato *,+ per includere attributi operativi. | *,+ |
LDAP_WATCHDOG_REFRESH_RATE | Intervallo di tempo in secondi tra ricerche LDAP consecutive | 60 |
LDAP_WATCHDOG_DISABLE_COLOR_OUTPUT | Imposta a true per disabilitare l'output colorato del terminale | false |
LDAP_WATCHDOG_CONTROL_UUID| UUID di un utente di controllo le cui modifiche attivano un errore se non trovate. Se impostato, questo utente dovrebbe avere sempre qualche tipo di modifica quando il directory LDAP viene recuperato. |
"" |
LDAP_WATCHDOG_CONTROL_USER_ATTRIBUTE | Attributo specifico da controllare per le modifiche nell'utente di controllo. Se impostato, questo attributo deve essere cambiato per l'utente UUID di controllo. | "" |
SLACK_WEBHOOK_URLURL del webhook Slack per le notifiche. Richiede l'extra slack (pip install LDAP-Monitor[slack]). |
None |
LDAP_WATCHDOG_SLACK_BULLETPOINT | Carattere punto elenco usato nell'output di Slack e della console | \u2022 |
| Variabile d'ambiente | Descrizione | Predefinito |
|---|
LDAP_WATCHDOG_IGNORED_UUIDS | Elenco separato da virgole di UUID da ignorare durante il confronto | "" |
LDAP_WATCHDOG_IGNORED_ATTRIBUTES | Elenco separato da virgole di attributi da ignorare durante il confronto | "" |
LDAP_WATCHDOG_CONDITIONAL_IGNORED_ATTRIBUTES | Stringa JSON di attributi da ignorare condizionalmente (vedi sotto) | {} |