¿El grupo Domain Admins “se vacía” tras cada gpupdate
o a diario? La causa suele ser una configuración errónea de Restricted Groups en un GPO (a menudo en el Default Domain Policy). Aquí verás el porqué, cómo corregirlo sin riesgos y cómo auditar quién añade o quita miembros.
Resumen del problema
En algunos entornos, la pertenencia del grupo Domain Admins se restaura de forma periódica y los usuarios añadidos manualmente “desaparecen”. Al revisar la directiva se encuentra una entrada en Restricted Groups similar a:
- Group:
Contoso\Domain Admins
- Members:
Contoso\Domain Admins
- Member Of:
BUILTIN\Remote Desktop Users
El resultado práctico: cada actualización de directiva (en DCs cada pocos minutos; en equipos miembro ~90 minutos aleatorizados) “corrige” la pertenencia del grupo conforme a esa configuración, dejando fuera a cualquier usuario o grupo que no esté listado en Members.
Causa raíz explicada con precisión
Restricted Groups tiene dos comportamientos distintos que conviene separar:
Campo | Qué hace realmente | Implicaciones |
---|---|---|
Members | Fija la lista de miembros exacta del grupo objetivo. Todo lo que no esté listado se elimina. | Usarlo sobre un grupo de dominio como Domain Admins procesado en un controlador de dominio alterará la pertenencia del grupo en Active Directory. |
Member Of | Garantiza que el grupo objetivo sea miembro de los grupos listados (no toca otros). En equipos, suele usarse para agregar grupos de dominio a grupos locales. | No sustituye la lista completa: es aditivo. |
En el caso descrito, alguien añadió Contoso\Domain Admins
como único elemento en la sección Members del propio Contoso\Domain Admins
. Esa “membresía” no es válida (un grupo no puede ser miembro de sí mismo), de modo que el motor de GPO interpreta que solo los elementos listados deben permanecer y elimina al resto de miembros en cada ciclo de aplicación.
Importante: en equipos miembro, Restricted Groups actúa sobre la base de SAM local. En controladores de dominio la “base local” es el propio AD: por eso un GPO con esta configuración vinculado al dominio afecta de forma destructiva a Domain Admins
.
Cómo diagnosticar rápido
Observa los síntomas
- Usuarios añadidos manualmente a
Domain Admins
desaparecen al cabo de minutos u horas. - En los DCs, el visor de eventos de Seguridad registra cambios frecuentes en el grupo.
- En Group Policy Results o
gpresult
ves que un GPO aplica Restricted Groups.
Comandos útiles
gpresult /SCOPE COMPUTER /R
gpresult /H C:\GPResult.html
# Revisión de miembros actuales
Get-ADGroupMember "Domain Admins" | Select-Object Name,SamAccountName,objectClass
Comprueba qué GPOs contienen Restricted Groups sobre 'Domain Admins'
Get-GPO -All | ForEach-Object {
\$xml = Get-GPOReport -Guid \$*.Id -ReportType Xml
if (\$xml -match "RestrictedGroups" -and \$xml -match "Domain Admins") {
"{0} - {1}" -f \$*.DisplayName,$\_.Id
}
}
Búsqueda directa en SYSVOL (opcional)
$domain = $env:USERDNSDOMAIN
$sysvol = "\\$domain\SYSVOL\$domain\Policies"
Get-ChildItem $sysvol -Recurse -Filter "GptTmpl.inf" |
ForEach-Object {
$c = Get-Content $_.FullName -Raw
if ($c -match '\[Group Membership\]' -and $c -match 'Domain Admins') {
$_.FullName
($c | Select-String -Pattern 'Domain Admins' -Context 2,2).ToString()
"`n"
}
}
Solución paso a paso segura
Apaga el fuego primero
- No edites el Default Domain Policy salvo para restaurar configuraciones predeterminadas críticas. Si el GPO en cuestión es el DDP, deshabilita temporalmente su vinculación a los DCs o filtra su aplicación hasta corregirlo.
- Desde GPMC (
gpmc.msc
), identifica el GPO que contiene Restricted Groups sobreDomain Admins
y elimina la sección Members para ese grupo.
Aplica un diseño correcto
- Crea un GPO dedicado para “Seguridad / Grupos locales” (separa por propósito y ámbito).
- Vincúlalo donde corresponda:
- Para DCs: unidad organizativa de Domain Controllers.
- Para equipos: a nivel de dominio o a las OU de equipos, según necesidad.
- En Computer Configuration ▸ Policies ▸ Windows Settings ▸ Security Settings ▸ Restricted Groups:
- No uses Members para
Domain Admins
. - Si solo necesitas que
Domain Admins
tenga pertenencia en otro grupo, usa Member Of.
- No uses Members para
- Fuerza la actualización:
gpupdate /force
- Valida con RSOP o
gpresult
que ya no se aplica la sección problemática. - Vuelve a poblar
Domain Admins
con las cuentas correctas.
Reconstitución de miembros con PowerShell
Si tienes una lista de miembros aprobados, puedes añadirlos de forma controlada (revisa en laboratorio antes de ejecutar en producción):
$approved = @(
'CONTOSO\alice.admin',
'CONTOSO\svc_backup'
)
\$current = (Get-ADGroupMember 'Domain Admins' -Recursive | Where-Object {\$*.objectClass -in 'user','group'}).SamAccountName
\$toAdd = \$approved | Where-Object { \$* -notin \$current }
if (\$toAdd) {
Add-ADGroupMember -Identity 'Domain Admins' -Members \$toAdd -ErrorAction Stop
}
Consejo: mantén al menos una cuenta break‑glass con contraseñas robustas, MFA fuera de banda y procedimientos documentados de custodia. Prueba periódicamente el acceso de emergencia.
Alternativas recomendadas según la necesidad
Agregar permisos RDP sin reemplazar listas locales
Si lo que quieres es que un conjunto de administradores pueda conectarse vía RDP sin tocar la pertenencia completa de los grupos locales:
- GPO Preferences → Computer Configuration ▸ Preferences ▸ Control Panel Settings ▸ Local Users and Groups → Local Group: Remote Desktop Users → acción Update y Add los grupos/cuentas deseados.
Dar el derecho de inicio de sesión remoto
Concede el derecho en la directiva de seguridad local o por GPO:
- Computer Configuration ▸ Windows Settings ▸ Security Settings ▸ Local Policies ▸ User Rights Assignment → Allow log on through Remote Desktop Services.
Recuerda que una entrada en Deny log on through Remote Desktop Services anula cualquier permiso de “Allow”.
¿Hace falta añadir Domain Admins a Remote Desktop Users?
En la mayoría de escenarios, Domain Admins
ya es administrador local en los equipos unidos al dominio, y el grupo Administrators dispone del derecho de inicio de sesión por RDP de forma predeterminada. Por tanto, no suele ser necesario añadir además Domain Admins
al grupo Remote Desktop Users solo para conectarse por RDP. Excepciones: plantillas de endurecimiento que modifiquen los derechos de usuario o entornos con requisitos regulatorios específicos.
Buenas prácticas de diseño de GPO
- Mantén GPOs específicos por propósito (“Restricted Groups / Local Users & Groups” separado de otras áreas).
- Evita tocar el Default Domain Policy y el Default Domain Controllers Policy salvo para restaurar valores base.
- Documenta “quién” y “dónde” gestiona pertenencias a grupos sensibles (Domain Admins, Enterprise Admins, Schema Admins).
- Usa seguridad de vínculo (Security Filtering) y, si procede, WMI Filtering para minimizar superficie de impacto.
- Revisa periódicamente SYSVOL y los informes de GPO en busca de entradas de Restricted Groups sobre grupos críticos.
Auditar quién agrega o quita miembros de Domain Admins
Para registrar e identificar cuándo y quién añade o elimina usuarios del grupo Domain Admins
implanta auditoría en los DCs y, opcionalmente, una SACL específica en el objeto del grupo.
Habilita auditoría en los controladores de dominio
Opción clásica:
- Computer Configuration ▸ Windows Settings ▸ Security Settings ▸ Local Policies ▸ Audit Policy → Audit account management: Success y Failure.
Opción avanzada (recomendada):
- Computer Configuration ▸ Windows Settings ▸ Security Settings ▸ Advanced Audit Policy Configuration ▸ Account Management → Audit Security Group Management: Success y Failure.
Nota: la auditoría avanzada sustituye a la clásica si ambas se configuran.
Configura SACL en el objeto “Domain Admins” (opcional, granular)
- En Active Directory Users and Computers, activa View ▸ Advanced Features.
- Abre propiedades de
Domain Admins
→ pestaña Security → Advanced → Auditing → Add. - Define:
- Principal: Everyone (o un grupo más restringido si lo prefieres).
- Type: Success (y Failure si quieres registrar intentos fallidos).
- Applies to: This object only.
- Permissions: marca “Write Members” y/o “Add/remove self as member”.
Esto generará eventos de acceso al directorio (por ejemplo, 4662) cuando se modifique el atributo member del grupo.
Verifica en el Visor de eventos de los DCs
- Ruta: Windows Logs ▸ Security.
- Eventos clave para
Domain Admins
(grupo global de seguridad):- 4728: agregado un miembro a un grupo de seguridad global.
- 4729: eliminado un miembro de un grupo de seguridad global.
- 4737 (propiedades cambiadas en grupo de seguridad global).
- Para grupos locales de seguridad, los equivalentes son 4732 / 4733 (alta/baja de miembros) y 4735 (cambio de propiedades).
Filtro XML listo para usar
Crea una Custom View con este filtro para ver solo cambios de membresía en Domain Admins
:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4728 or EventID=4729 or EventID=4737)]]
and
*[EventData[Data[@Name='TargetUserName']='Domain Admins']]
</Select>
</Query>
</QueryList>
Extracción con PowerShell
# Últimos 7 días de cambios en 'Domain Admins'
$ids = 4728,4729,4737
Get-WinEvent -FilterHashtable @{ LogName='Security'; Id=$ids; StartTime=(Get-Date).AddDays(-7) } |
Where-Object { $_.Properties -match 'Domain Admins' } |
Select-Object TimeCreated, Id,
@{n='Acción';e={ if ($.Id -eq 4728) {'Agregar'} elseif ($.Id -eq 4729) {'Quitar'} else {'Cambiar propiedades'} }},
@{n='Operador';e={$_.Properties[1].Value}},
@{n='Miembro afectado';e={$_.Properties[-1].Value}} |
Sort-Object TimeCreated
Errores habituales y cómo evitarlos
- Usar “Members” sobre grupos de dominio críticos. Evítalo salvo que busques explícitamente sustituir la lista completa y entiendas el impacto.
- Editar el Default Domain Policy para configurar seguridad de equipos. Emplea GPOs nuevos y dedicados, vinculados a las OU adecuadas.
- Mezclar Restricted Groups y GPO Preferences sobre los mismos grupos locales con configuraciones contradictorias. Define una estrategia y sé consistente.
- Olvidar “Deny log on through RDS”. Un “deny” invalida cualquier “allow” y puede dar falsos positivos de “no funciona el RDP”.
- No auditar grupos protegidos (Protected Groups como Domain Admins). Activa auditoría avanzada y vistas personalizadas.
Validación posterior a la corrección
- Ejecuta en los DCs y en equipos afectados:
gpupdate /force
- Confirma que el GPO corregido aparece en Applied GPOs sin la entrada de Members sobre
Domain Admins
:gpresult /r
- Comprueba que los miembros reaparecen y se mantienen tras varios ciclos:
Get-ADGroupMember "Domain Admins" | Sort-Object SamAccountName | Format-Table Name,SamAccountName
- Revisa el visor de eventos para verificar que no hay cambios automáticos justo después de cada refresco de GPO.
Preguntas frecuentes
¿Por qué el problema se repite incluso después de añadir de nuevo a los usuarios?
Porque el GPO vuelve a aplicar la configuración en cada actualización. Hasta que no elimines la entrada Members en Restricted Groups (o impidas que el GPO alcance a los DCs), la lista se seguirá “corrigiendo”.
¿Puedo usar “Member Of” para que Domain Admins pertenezca a Remote Desktop Users?
Sí. “Member Of” añade pertenencias sin sustituir otras. Aun así, en la mayoría de casos no necesitas agregar Domain Admins
a Remote Desktop Users para permitir RDP.
¿Qué diferencia hay entre auditar con la política y con SACL?
La auditoría avanzada genera eventos de administración de grupos (4728/4729/4737). La SACL genera eventos de acceso al directorio (4662) a nivel de objeto/atributo. Juntas ofrecen visibilidad completa.
¿Qué pasa si ya no tengo ninguna cuenta en Domain Admins?
Usa tu procedimiento de break‑glass, restablece el control con cuentas de recuperación y corrige de inmediato el GPO para evitar que el problema se repita. Documenta el incidente.
Checklist rápido
- [ ] Quitar Members para
Domain Admins
en Restricted Groups. - [ ] Usar Member Of o GPO Preferences para Remote Desktop Users.
- [ ] No tocar Default Domain Policy; crear un GPO dedicado.
- [ ]
gpupdate /force
y repoblarDomain Admins
con las cuentas correctas. - [ ] Activar auditoría (preferentemente la avanzada) y SACL en
Domain Admins
. - [ ] Vigilar eventos 4728/4729 (y 4737 para cambios de propiedades; 4735 cuando aplique a grupos locales).
Plantillas y ejemplos listos para copiar
Ruta de configuración resumida
Objetivo | Ruta de GPO | Acción recomendada |
---|---|---|
Control de membresía de grupos locales | Computer Configuration ▸ Preferences ▸ Control Panel Settings ▸ Local Users and Groups | Acción Update; añade miembros sin sustituir toda la lista. |
Garantizar pertenencia de un grupo a otro | Computer Configuration ▸ Policies ▸ Windows Settings ▸ Security Settings ▸ Restricted Groups | Usa Member Of; evita Members sobre grupos de dominio críticos. |
Permitir inicio de sesión RDP | Computer Configuration ▸ Windows Settings ▸ Security Settings ▸ Local Policies ▸ User Rights Assignment | Configura Allow log on through Remote Desktop Services. |
Auditoría de cambios en grupos | Computer Configuration ▸ Windows Settings ▸ Security Settings ▸ Advanced Audit Policy Configuration ▸ Account Management | Activa Audit Security Group Management (Success y Failure). |
Script para localizar GPOs que tocan “Domain Admins” vía Restricted Groups
Get-GPO -All | ForEach-Object {
$r = Get-GPOReport -Guid $_.Id -ReportType Xml
if ($r -match '<RestrictedGroups' -and $r -match 'Domain Admins') {
[PSCustomObject]@{ GPO=$.DisplayName; Guid=$.Id }
}
} | Format-Table -AutoSize
Comprobación de permanencia de miembros tras la corrección
# Ejecuta dos veces con 15 min de diferencia para confirmar que ya no hay “limpieza” por GPO
Get-ADGroupMember "Domain Admins" |
Sort-Object SamAccountName |
Select-Object SamAccountName
Conclusión
Cuando Domain Admins
pierde miembros tras cada actualización de directiva, casi siempre se debe a una mala aplicación de Restricted Groups utilizando la sección Members sobre el propio grupo. La solución pasa por eliminar esa entrada, aplicar un diseño de GPOs limpio y reforzar la auditoría. Con ello evitarás sobrescrituras silenciosas y tendrás trazabilidad total de quién cambia qué, cuándo y desde dónde.