Backup y restore clientless network-only de directory services en Linux: Microsoft Active Directory (Server 2012 R2 → 2025, Samba AD DC), OpenLDAP (slapd 2.4/2.5/2.6), 389 Directory Server / Red Hat DS / FreeIPA. Estado: v0.1.0 DRAFT / pre-release.
Documento técnico complementario a la página del plugin PodHeitor AD/LDAP.
1. El problema: backup de AD/LDAP fuerza agente Windows o hacks LDIF
Backup de Active Directory tradicional fuerza uno de los siguientes paths:
- Agente en Domain Controller Windows (Bacula Enterprise, Veeam, Commvault) — exige instalación privilegiada en un DC de producción, superficie de vulnerabilidad amplia.
- Script
ntdsutil ifmagendado, snapshot dentds.dit, y backup de filesystem — operacionalmente frágil, no captura SYSVOL/GPO de forma sincronizada, sin PITR. - Para OpenLDAP / 389 DS, scripts
slapcat/db2ldifen cron — generan LDIF gigante diariamente, sin incrementales reales, sin replicación.
PodHeitor AD/LDAP es clientless network-only: el cdylib corre en el host Linux del FD, conecta al directory vía LDAP/LDAPS, y captura tanto schema como data vía DirSync (AD) o syncrepl RFC 4533 (OpenLDAP/389 DS) — sin instalar nada en el DC.
2. Modelo arquitectónico
Metaplugin cdylib pure-Rust cargado directamente por bacula-fd, hablando con su engine in-process de backup/restore vía PTCOMM Path-A. Sin C/C++ shim, sin proceso sidecar. Esta es una excepción arquitectónica al patrón PodHeitor de cdylib + backend — el LDAP es ligero suficiente para correr entero in-process, y la reducción de complejidad lo vale.
Artefacto: target/release/libpodheitor_adldap_fd.so, instalado en /opt/bacula/plugins/podheitor-adldap-fd.so.
3. Modos de backup (v0.1.0)
| Modo | Mecanismo |
|---|---|
ldap |
OpenLDAP / 389 DS / FreeIPA vía syncrepl RFC 4533 |
ad |
Microsoft AD vía DirSync (LDAP control 1.2.840.113556.1.4.841) |
replicate |
Replicación live directory-to-directory (cross-vendor) |
cdp |
Continuous Data Protection con RPO bounded |
hybrid_sysvol |
SYSVOL/GPO incluido vía libsmbclient-rs — captura sincronizada de directory + GPO |
4. Modos de restore
| Modo | Granularidad |
|---|---|
object |
Objeto único (user, computer, group) |
subtree |
Subtree LDAP completa |
attribute |
Atributo único de objeto único |
authoritative |
Restore autoritativo (force replication out) |
dry_run |
Preview sin aplicar |
diff |
Diff entre estado backup y estado live |
5. Diferenciadores técnicos
- Incremental verdadero vía syncrepl RFC 4533 (LDAP) + DirSync (AD) — no brute-force diff-of-dump.
- SYSVOL/GPO incluido en modo
hybrid_sysvolvía libsmbclient-rs — directory state + GPO state capturados en un solo job. - Replicación cross-vendor live directory-to-directory — útil para migración AD → OpenLDAP o DR de FreeIPA a 389 DS.
- CDP con RPO bounded — ventana de pérdida configurable.
- Encryption at-rest — AES-256-GCM o ChaCha20-Poly1305 elegible per job.
- Brazilian Unicode hardened — gate NFC/NFD pt-BR Smoke Gate en CI; nombres con acentos no se corrompen en la chain backup → restore.
- JSON-Lines logging + métricas Prometheus textfile — observabilidad out-of-the-box.
6. Plataformas soportadas
- Microsoft Active Directory: Server 2012 R2 → 2025, Samba AD DC
- OpenLDAP: slapd 2.4 / 2.5 / 2.6
- 389 Directory Server / Red Hat DS / FreeIPA
- (Stretch) ApacheDS, OpenDJ — best-effort vía modo genérico
ldap
7. Postura de licencia
Propietaria — Copyright (c) 2026 Heitor Faria, all rights reserved. No vincula estáticamente ningún source AGPLv3 de Bacula. El cdylib es puro Rust con binding vía crate bacula-fd-abi in-house y extern "C" independiente.
¿Listo para acompañar la alpha?
Trial gratuito de 30 días para deployments AD/LDAP calificados tras release v0.1.0. Garantizamos al menos 50% de descuento vs Bacula Enterprise, Veeam o Commvault, con más funcionalidades — incluyendo replicación cross-vendor y hybrid_sysvol que ningún competidor entrega out-of-the-box.
Heitor Faria — Fundador, PodHeitor International
✉ [email protected]
☎ +1 (789) 726-1749 · +55 (61) 98268-4220 (WhatsApp)
🔗 Página del plugin PodHeitor AD/LDAP
Disponível em:
Português (Portugués, Brasil)
English (Inglés)
Español