Búsqueda de sitios web

Cómo hacer una copia de seguridad y restaurar objetos de política de grupo (GPO)


Los objetos de política de grupo son fundamentales para administrar la infraestructura de Windows Server. Para evitar problemas graves de servicio, los administradores deben configurar los GPO cuidadosamente y estar preparados para revertir cualquier cambio rápidamente haciendo una copia de seguridad antes de modificarlos.

Actualización de políticas de grupo

Antes de profundizar en la copia de seguridad y recuperación de objetos de directiva de grupo, revisemos algunos detalles importantes sobre cómo se crean y utilizan los GPO.

Componentes de GPO

Cuando se crea un nuevo objeto de política de grupo, se le asigna un identificador único llamado GUID. Cada GPO tiene dos partes:

  • Plantilla de política de grupo (GPT): la GPT comprende un conjunto de carpetas en el recurso compartido de archivos SYSVOL (“C:\WindowsSYSVOLdomainPolicies{GUID}”). Estas carpetas se utilizan para almacenar la mayor parte del contenido de un objeto de política de grupo, incluidas las plantillas, configuraciones, scripts y detalles sobre los paquetes MSI. El GPT se replica en cada controlador de dominio del dominio mediante los Servicios de replicación de archivos (FRS) o la Replicación del sistema de archivos distribuido (DFSR), según la versión de Windows. De hecho, los GPO son efectivamente específicos de un dominio porque SYSVOL se replica solo dentro de un dominio.

  • Contenedor de políticas de grupo (GPC): el GPC es un objeto groupPolicyContainer ubicado en el contexto de nombres de dominio en CN=System,CN=Policies. Los atributos de este objeto AD se utilizan para almacenar información referencial relacionada con el GPO. Es importante destacar que esto incluye el atributo gPCFileSysPath, que contiene la ruta al GPT del GPO en SYSVOL. A diferencia del GPT, los Servicios de dominio de Active Directory replican el GPC de acuerdo con el costo, la programación y el intervalo de replicación configurados.

Asociaciones GPO

Una vez que se ha creado un GPO, se puede asociar con uno o más objetos de Active Directory: unidades organizativas (OU), dominios y sitios. Esta asociación no la mantiene el GPO sino cada uno de los objetos AD asociados, en su atributo gPLink. El valor del atributo gPLink de un objeto es una lista de las rutas de GPC de cada GPO al que se ha asociado el objeto. Cuando se crea o elimina la asociación de un GPO a un objeto, solo se modifica el valor del atributo gPLink del objeto afectado.

Una observación importante es que si bien la replicación de SYSVOL efectivamente hace que los GPO sean específicos de un dominio, el hecho de que los GPO puedan vincularse a un objeto de sitio significa que la información relacionada con los GPO no está necesariamente limitada a un dominio. Los objetos del sitio se almacenan en la partición de configuración de Active Directory, que se replica en todos los controladores de dominio del bosque. Esto da como resultado que la ruta al GPC de un objeto de política de grupo contenido en el atributo gPLink se escape del dominio durante la replicación de Active Directory.

Orden de procesamiento de políticas de grupo

Active Directory aplica los GPO en el siguiente orden:

  1. GPO locales
  2. GPO vinculados al sitio
  3. GPO vinculados a dominios
  4. GPO vinculados a OU (procesados comenzando desde la raíz, por lo que un GPO vinculado a una OU anidada tendrá prioridad sobre un GPO vinculado a su OU principal)

La política que se aplica en último lugar "gana" (a menos que se utilice la opción "Aplicar", que evita que una política sea anulada por una política aplicada posteriormente).

Configuraciones de usuario y computadora.

Una última cosa a tener en cuenta es que los GPO contienen tanto una configuración de computadora como una configuración de usuario. Estos subgrupos contienen conjuntos casi idénticos de configuraciones de políticas, pero difieren en el momento en que se aplican las configuraciones de GPO.

Los ajustes de configuración de la computadora se aplican a las computadoras durante el inicio y los ajustes de configuración del usuario se aplican durante el inicio de sesión. Esto significa que las opciones en la Configuración de la computadora siempre se aplican en las computadoras asociadas, mientras que las opciones en la Configuración del usuario se aplican solo cuando una cuenta de usuario asociada inicia sesión en una computadora.

Si un usuario inicia sesión en una computadora y hay un conflicto entre una configuración de la computadora y una configuración del usuario, la configuración de la computadora siempre tendrá prioridad.

Proceso de copia de seguridad y restauración de GPO mediante PowerShell

Una vez que comprendamos completamente esos conceptos clave, podemos pasar a la copia de seguridad y restauración de GPO.

Comenzaremos con los dos cmdlets de PowerShell de política de grupo relevantes disponibles como parte de las herramientas de administración remota del servidor de Windows de Microsoft:

  • Backup-GPO : este cmdlet hace que sea muy fácil tomar una instantánea de todos los objetos de política de grupo de un dominio o de un solo GPO especificado.
  • Restore-GPO : este cmdlet puede restaurar un objeto de política de grupo a su estado tal como se captura en una copia de seguridad realizada por el cmdlet Backup-GPO.

Crear una copia de seguridad de todos los GPO

El siguiente script de PowerShell utiliza el parámetro -All del cmdlet Backup-GPO para crear copias de seguridad de todos los GPO en el dominio especificado utilizando un DC específico:

$BackupPath = '\HOSTNAMEGPOBackup'
$Domain = 'domain.local'
$DomainController = 'DC.domain.local'

$BackupFolder = New-Item -Path $BackupPath -Name (Get-Date -format yyyyMMddTHHmmss) -ItemType Directory
Backup-GPO -All -Domain $Domain -Server $DomainController -Path $BackupFolder

El resultado del cmdlet Backup-GPO consta de una subcarpeta independiente para la información de copia de seguridad de cada GPO y un archivo manifest.xml que contiene la información necesaria para asociar cada una de las subcarpetas a su respectivo GPO:

Mirando dentro de una de las subcarpetas, encontramos que cada copia de seguridad consta de una carpeta y tres archivos XML:

La carpeta contiene una copia del GPT del objeto de Política de grupo y los archivos XML contienen los datos del GPC de la Política de grupo, información específica para la ejecución de la copia de seguridad y un informe que describe el contenido del GPO.

Control de versión de copia de seguridad

Se admite la copia de seguridad repetida de los objetos de la Política de grupo en una única ubicación, pero cada ejecución de este script crea una subcarpeta única para su salida. Las subcarpetas se nombran utilizando GUID específicos de la copia de seguridad generados durante la ejecución del cmdlet, lo que prácticamente elimina la posibilidad de colisiones de nombres con copias de seguridad repetidas en una sola ubicación.

No es estrictamente necesario segregar el resultado de cada ejecución en carpetas únicas, pero el comportamiento del cmdlet Restore-GPO crea una ventaja al hacerlo. El cmdlet Restore-GPO le permitirá restaurar todos los GPO a la vez, pero utilizará la copia de seguridad más reciente de cada objeto de política de grupo identificado en manifest.xml. Al separar cada conjunto de copias de seguridad en su propia carpeta, se asegura de que cada conjunto de copias de seguridad obtenga su propio manifest.xml. Esto permite la restauración de todos los GPO en cualquiera de estos conjuntos de respaldo en una sola operación.

Una desventaja de utilizar el parámetro -All del cmdlet Backup-GPO es que realiza una copia de seguridad de todos los objetos de la política de grupo en el dominio cada vez que se ejecuta, en lugar de solo los que han cambiado. Una forma de solucionar ese problema es mediante el uso de un script como el siguiente. Obliga al cmdlet Backup-GPO a utilizar un archivo que el script crea en la carpeta de actualización para mantener la marca de tiempo de la última ejecución del script. Si el archivo existe, el script realiza una copia de seguridad de cualquiera de los GPO del dominio que se hayan modificado desde la marca de tiempo del archivo. Si el archivo no existe, el script crea el archivo, establece la marca de tiempo y realiza una copia de seguridad de todos los GPO del dominio.

$BackupPath = '\DCGPOBackup'
$Domain = 'domain.local'
$DomainController = 'DC.domain.local'

$BackupPathTracker = "$BackupPathLastBackup.txt"

if((Test-Path "$BackupPathTracker")) {
    $LastBackup = Get-Date (Get-Content -Path "$BackupPathTracker")
    Set-Content -Path "$BackupPathTracker" -Value (Get-Date)
    $GPOs = Get-GPO -All -Domain $Domain -Server $DomainController
    $GPOs | Where-Object { $_.ModificationTime -gt $LastBackup } | ForEach-Object {
        Backup-GPO -Guid $_.Id -Domain $Domain -Server $DomainController -Path $BackupPath
    }
} else {
    Set-Content -Path "$BackupPathTracker" -Value (Get-Date)
    Backup-GPO -All -Domain $Domain -Server $DomainController -Path $BackupPath
}

Si bien este enfoque ahorrará espacio al limitar las copias de seguridad innecesarias, todas las copias de seguridad que realiza terminan en la misma carpeta, lo que dificulta la restauración de los objetos de la Política de grupo en un momento específico.

Combinar los enfoques adoptados en cada uno de los dos guiones resolvería todos nuestros problemas, ¿verdad?

BackupPath = '\HOSTNAMEGPOBackup'
$Domain = 'domain.local'
$DomainController = 'DC.domain.local'

$BackupPathTracker = "$BackupPathLastBackup.txt"
$BackupFolder = New-Item -Path $BackupPath -Name (Get-Date -format yyyyMMddTHHmmss) -ItemType Directory

if((Test-Path "$BackupPathTracker")) {
    $LastBackup = Get-Content -Path "$BackupPathTracker"
    Set-Content -Path "$BackupPathTracker" -Value (Get-Date)
    $GPOs = Get-GPO -All -Domain $Domain -Server $DomainController
    $GPOs | Where-Object { $_.ModificationTime -gt $LastBackup } | ForEach-Object {
        Backup-GPO -Guid $_.Id -Domain $Domain -Server $DomainController -Path $BackupFolder
    }
}
else {
    Set-Content -Path "$BackupPathTracker" -Value (Get-Date)
    Backup-GPO -All -Domain $Domain -Server $DomainController -Path $BackupFolder
}

Resulta que aislar cada uno de los resultados de la copia de seguridad diferencial en sus propias carpetas en realidad empeora todo. Este enfoque también aísla cada uno de los archivos manifest.xml en sus propias carpetas, lo que elimina efectivamente la capacidad de restaurar todos los GPO a la vez y al mismo tiempo hace que sea increíblemente difícil encontrar las copias de seguridad asociadas con cualquier objeto de Política de grupo específico.

Restaurar GPO desde la copia de seguridad

En la práctica, estos enfoques se topan con una limitación del cmdlet Restore-GPO: Restore-GPO puede restaurar un objeto de política de grupo específico desde la copia de seguridad más reciente a la que se hace referencia en un archivo manifest.xml o una copia de seguridad específica, pero restaurando todo un Los GPO del dominio a la vez se limitan a utilizar las copias de seguridad más recientes en un archivo manifest.xml específico.

# Restore a single GPO from its most recent backup
Restore-GPO -Name 'GpoName' -Path '\HOSTNAMEGPOBackup' -Domain 'domain.local' -Server 'DC.domain.local'

# Restore a single GPO from a specific backup
Restore-GPO -BackupId 12345678-09ab-cdef-1234-567890abcdef -Path '\HOSTNAMEGPOBackup' -Domain 'domain.local' -Server 'DC.domain.local'

# Restore all of a domain’s GPOs from their most recent backup
Restore-GPO -All -Path '\HOSTNAMEGPOBackup' -Domain 'domain.local' -Server 'DC.domain.local'

Cuando se restaura un objeto de política de grupo desde una copia de seguridad, la versión del GPO se incrementa como parte del proceso de restauración para forzar la replicación para favorecer la copia restaurada del GPO.

Cómo los números de versión pueden desincronizarse

El resultado del cmdlet Restore-GPO incluye dos conjuntos de números de versión, uno para la configuración del equipo y otro para la configuración del usuario.

El GPT y el GPC son cada uno responsable de mantener su propio número de versión, y los valores separados UserVersion y ComputerVersion se calculan a partir de los números de versión de configuración de usuario y de versión de configuración de computadora, respectivamente. Esto es posible debido a la forma en que se incrementa el número de versión. Se incrementa en 1 cuando se modifica la Configuración del equipo de un GPO y en 65536 cada vez que se modifica la Configuración del usuario.

Todo esto es necesario porque, como se analizó anteriormente, el GPT y el GPC de un objeto de política de grupo se replican por separado mediante diferentes servicios, lo que puede provocar que los números de versión del GPT y el GPC de un GPO en cualquier controlador de dominio específico no estén sincronizados, lo que impedir que sea procesado.

Restaurar un GPO eliminado

Una limitación documentada del cmdlet Restore-GPO es que no se puede utilizar para recuperar un objeto de política de grupo que se haya eliminado, porque no podrá encontrar la parte GPC del GPO en Active Directory. Intentar recuperar un GPO eliminado generará un error similar a este:

Sin embargo, si puede recuperar el GPC primero, puede utilizar Restore-GPO para recuperar el GPO eliminado. Para hacerlo, podemos usar el cmdlet Restore-ADObject para recuperar completamente la parte de Active Directory del GPO de la Papelera de reciclaje de Active Directory y luego el cmdlet Restore-GPO puede restaurar el GPO:

Si bien este proceso puede recuperar un GPO eliminado, no puede restaurar los valores de gPLink que existían antes de la eliminación del GPO. Esto se debe a que esos valores sólo existían en los objetos vinculados. La única forma segura de evitar esta limitación es aprovechar las copias de seguridad externas de Active Directory que contengan los valores de gPLink.

Uso de GPMC y AGPM para copia de seguridad y restauración de GPO

Los cmdlets de PowerShell de directiva de grupo no son su única opción para la copia de seguridad y restauración de GPO. Microsoft también proporciona la Consola de administración de políticas de grupo (GPMC), un complemento MMC que se puede utilizar para realizar copias de seguridad y restaurar objetos de políticas de grupo. Al igual que el cmdlet Backup-GPO, puede realizar una copia de seguridad de un solo GPO especificado o de todos los GPO de un dominio. A diferencia del cmdlet Restore-GPO, se limita a restaurar un único GPO a la vez.

GPMC proporciona un método para restaurar los GPO eliminados desde la copia de seguridad, pero en realidad no recupera los GPO eliminados; en realidad, simplemente crea un nuevo GPO y lo completa utilizando la información de la copia de seguridad.

Otro beneficio de GPMC es la visibilidad mejorada del contenido de las copias de seguridad del GPO, aunque sigue siendo difícil comparar la configuración de una copia de seguridad con la configuración actual del GPO activo.

La herramienta de administración avanzada de políticas de grupo (AGPM) de Microsoft, que está disponible como parte del paquete de optimización de escritorio de Microsoft, amplía GPMC con una funcionalidad de control de versiones que le ayuda a ver y comprender el contenido de sus copias de seguridad. Sin embargo, los beneficios de AGPM tienden a verse superados por dos factores: no parece estar muy bien mantenido y tiene reputación de no funcionar bien con otros (por ejemplo, modificar un GPO administrado por AGPM fuera de AGPM puede resultar en corrupción de la base de datos AGPM). Dicho esto, no es necesariamente una mala herramienta; Solo le sugiero que juegue un poco con él en un entorno de laboratorio antes de intentar implementarlo en producción.

¿Cómo puede ayudar Netwrix?

Netwrix Recovery para Active Directory proporciona una interfaz web unificada que le permite realizar copias de seguridad de objetos de Active Directory y de directiva de grupo en una sola instantánea, buscar y administrar copias de seguridad, revertir cambios de atributos en objetos activos e incluso recuperar GPO y eliminados. > sus gPLinks asociados.

Preguntas más frecuentes

¿Qué comando puedo usar para restaurar un GPO desde una copia de seguridad?

El cmdlet Restore-GPO de Windows PowerShell restaura un solo GPO o todos los GPO al dominio original.

¿Cómo puedo importar un GPO desde un archivo?

Si tiene los permisos necesarios como administrador en Administración avanzada de políticas de grupo (AGPM) y ha exportado un GPO a un archivo CAB, puede importar la configuración del GPO a un GPO nuevo o a un GPO existente siguiendo los pasos que se proporcionan aquí.

Artículos relacionados