¿Te preocupa que cualquier administrador (o atacante con privilegios) pueda unir equipos a tu dominio sin que nadie lo note? Aprende a generar alertas automáticas cada vez que se produzca un Domain Join y mantén el control total de tu infraestructura de Active Directory, sin importar cuántos bosques, sedes o husos horarios gestiones.
Contexto de seguridad
Cada estación o servidor unido al dominio hereda inmediatamente directivas, certificados y canales de autenticación Kerberos/NTLM. Un alta no autorizada abre la puerta a lateral movement, elevación de privilegios y robo de credenciales, por lo que auditar el ciclo de vida de las cuentas de equipo resulta crítico para:
- Detectar ordenadores «fantasma» que nadie gestiona.
- Verificar que las uniones las realizan usuarios legitimados y desde ubicaciones conocidas.
- Cumplir requisitos de normas como ISO 27001, NIST 800‑53 o Esquema Nacional de Seguridad.
Flujo de trabajo recomendado
Activar auditoría avanzada
En un GPO de dominio (o a nivel de cada DC) habilita:
- Audit Directory Service Changes
- Audit Computer Account Management
Tras la política, el registro Security
captura los eventos 4741, 4742 y 4743, con detalles como SamAccountName
, Source Network Address
y Workstation Name
. Asegúrate de no filtrar por Success/Failure; necesitas ambos.
Centralizar los registros
Si posees más de un DC, habilita Windows Event Forwarding (WEF) o envía la WEL a un SIEM. Ventajas:
- Persistencia ≥ 180 días sin saturar el disco del DC.
- Correlaciones cruzadas entre sedes.
- Análisis near‑real‑time y notificaciones multicanal (email, Teams, Slack, webhook).
Crear la alerta de correo
Tienes dos enfoques:
- Script ligero + Task Scheduler – Ideal para PYMES sin SIEM.
# Filtro de eventos $filter = @" *[System[(EventID=4741 or EventID=4742 or EventID=4743)]] "@ XML a objetos \$events = Get-WinEvent -FilterXml \$filter -MaxEvents 50 foreach (\$evt in \$events) { \$body = \$evt | Select-Object TimeCreated, Id, @{n='Equipo';e={\$.Properties\[0].Value}}, @{n='Usuario';e={\$.Properties\[5].Value}} | Out-String Send-MailMessage -From '[ADAlertas@contoso.com](mailto:ADAlertas@contoso.com)' -To '[SecOps@contoso.com](mailto:SecOps@contoso.com)' ` -Subject \"Domain Join detectado - $($evt.Properties[0].Value)\"` -Body \$body -SmtpServer 'smtp.contoso.com' }
- Regla SIEM – Splunk, Sentinel, Elastic…
// Sentinel – Kusto Query Language SecurityEvent | where EventID in (4741,4742,4743) | extend Equipo=TargetAccount, Admin=SubjectUserName | project TimeGenerated, Equipo, Admin, IpAddress=SourceIpAddress, EventID | alert
Incluir la ubicación
Source Network Address
muestra la IP del cliente que ejecuta netdom join o el asistente de unión. Usa GeoIP en tu SIEM para etiquetar país, ciudad e ISP. Si detectas un 10.1.5.20 (Madrid) creado por un admin de Brasil fuera de horario laboral, genera una alerta de alta prioridad.
Comprobar Netlogon
Activa el log Microsoft‑Windows‑Netlogon/Operational (canal analítico). Eventos como 5719 o 5805 ayudan a depurar fallos de confianza (trust relationship) o intentos repetidos desde scripts mal configurados.
Resumen paso a paso
Paso | Qué hacer | Detalles principales |
---|---|---|
Activar auditoría | “Audit Directory Service Changes” y “Audit Computer Account Management” vía GPMC. | Genera 4741 (alta), 4742 (cambio), 4743 (baja). |
Centralizar registros | WEF o SIEM multinodo. | Unifica DCs y evita SPOF. |
Crear alerta | Task Scheduler + PowerShell o regla SIEM. | Email, Teams, Slack, Syslog… con campos SamAccountName , ClientAddress , Workstation . |
GeoIP y contexto | Enriquece la IP de origen. | Filtra por país o franja horaria. |
Netlogon extra | Activa canal Netlogon/Operational. | Detecta rechazos o bucles de reintento. |
Buenas prácticas de delegación y control
- Principio de mínimo privilegio: elimina el derecho «Add workstations to domain» del grupo Domain Admins. Delega en cuentas de servicio gestionadas (gMSA) o administra vía Privileged Access Workstations (PAW).
- Revisión trimestral: inventaría cuentas de equipo con
LastLogonTimestamp
> 90 días y deshabilita las obsoletas. - Retención de registros: mantén
Security.evtx
e índices SIEM al menos 6 meses; habilita sobreescritura circular solo tras exportar. - Separación de entornos: usa bosques de recursos o shadow forest para proveedores ajenos, así limitas visibilidad de objetos.
Casos especiales
Azure AD Join e híbrido
Las uniones de dispositivos Windows 10/11 a Azure AD se reflejan como DeviceRegistration en los Audit Logs de Azure. Con Azure Monitor → Activity Log Alerts puedes disparar la misma notificación y correlacionarla con eventos on‑prem.
Sistemas no Windows
Equipos Linux que se unen mediante realm join
crean igualmente objetos computer. Aparecerán bajo el mismo evento 4741, así que tu alerta los cubrirá sin cambios.
Entornos desatendidos (autopilot/MDT)
Para evitar falsos positivos en instalaciones masivas, etiqueta las IP del segmento de staging (por ejemplo, 192.168.100.0/24) como «trusted» y agrega una condición NOT in trusted_subnets en la regla SIEM.
Indicadores de compromiso a vigilar
- Rachas de eventos 4741 desde la misma IP con distintos nombres de equipo; posible script de fuerza bruta.
- Eventos 4741 inmediatamente seguidos de 4720 (creación de usuario); instalación de jump host malicioso.
- Total de altas fuera de horario laborable > media histórica + 3σ.
Automatización de respuesta
Más allá del correo, puedes:
- Crear un SOAR que deshabilite la cuenta de equipo y abra un ticket en tu ITSM.
- Lanzar un playbook que ejecute
Get-ADComputer $Name –Properties * | Export‑Csv
y adjunte la ficha completa al incidente. - Enviar la IP al firewall perimetral para bloqueo inmediato.
Conclusión
Implementar alertas de Domain Join es rápido, barato y refuerza de manera drástica la higiene de tu Directorio. Con una auditoría bien configurada, registros centralizados y reglas de notificación inteligentes, sabrás en segundos quién, cuándo y desde dónde se da de alta cada equipo—y podrás reaccionar antes de que se convierta en una brecha de seguridad.