Domain Admins se borra por GPO Restricted Groups: causa, solución y auditoría

¿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.

Índice

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:

CampoQué hace realmenteImplicaciones
MembersFija 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 OfGarantiza 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

  1. 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.
  2. Desde GPMC (gpmc.msc), identifica el GPO que contiene Restricted Groups sobre Domain Admins y elimina la sección Members para ese grupo.

Aplica un diseño correcto

  1. Crea un GPO dedicado para “Seguridad / Grupos locales” (separa por propósito y ámbito).
  2. 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.
  3. 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.
  4. Fuerza la actualización: gpupdate /force
  5. Valida con RSOP o gpresult que ya no se aplica la sección problemática.
  6. 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 PreferencesComputer Configuration ▸ Preferences ▸ Control Panel Settings ▸ Local Users and GroupsLocal 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 AssignmentAllow 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 PolicyAudit account management: Success y Failure.

Opción avanzada (recomendada):

  • Computer Configuration ▸ Windows Settings ▸ Security Settings ▸ Advanced Audit Policy Configuration ▸ Account ManagementAudit 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)

  1. En Active Directory Users and Computers, activa View ▸ Advanced Features.
  2. Abre propiedades de Domain Admins → pestaña SecurityAdvancedAuditingAdd.
  3. 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

  1. Ejecuta en los DCs y en equipos afectados: gpupdate /force
  2. Confirma que el GPO corregido aparece en Applied GPOs sin la entrada de Members sobre Domain Admins: gpresult /r
  3. Comprueba que los miembros reaparecen y se mantienen tras varios ciclos: Get-ADGroupMember "Domain Admins" | Sort-Object SamAccountName | Format-Table Name,SamAccountName
  4. 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 repoblar Domain 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

ObjetivoRuta de GPOAcción recomendada
Control de membresía de grupos localesComputer Configuration ▸ Preferences ▸ Control Panel Settings ▸ Local Users and GroupsAcción Update; añade miembros sin sustituir toda la lista.
Garantizar pertenencia de un grupo a otroComputer Configuration ▸ Policies ▸ Windows Settings ▸ Security Settings ▸ Restricted GroupsUsa Member Of; evita Members sobre grupos de dominio críticos.
Permitir inicio de sesión RDPComputer Configuration ▸ Windows Settings ▸ Security Settings ▸ Local Policies ▸ User Rights AssignmentConfigura Allow log on through Remote Desktop Services.
Auditoría de cambios en gruposComputer Configuration ▸ Windows Settings ▸ Security Settings ▸ Advanced Audit Policy Configuration ▸ Account ManagementActiva 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.

Índice