PowerShell y las GPO

Con Active Directory desplegado en nuestra entorno deberíamos ser capaces de controlar la seguridad, administración y el acceso a los recursos desde una ubicación centralizada. Y además administrar y controlar los escritorios!

Cómo hemos ido viendo en multitud de ocasiones, AD tiene una herramienta… Group Policy (Directiva de grupo), para centralizar los escritorios. Con ella podemos administrar virtualmente todo en los sistemas de nuestro entorno, desde el fondo del escritorio hasta qué aplicaciones pueden ejecutarse. Incluyendo no sólo los escritorios cliente sino también los servidores.

Directiva de grupo nos permite obligar el cumplimiento de nuestras políticas, implementar cualquier configuración de seguridad que queramos e, implementar un entorno estándar a través de todo el Directorio Activo.

Con un entorno estándar proporcionamos una base consistente y además aligerar las llamadas de soporte al departamento. Antes de ver como podemos trabajar con Poweshell y GP, repasemos algunas cuestiones básicas:

Conocer sobre:

DESCRIPCIÓN

GPMC
Consola administración Directivas
Interfaz principal, aquí creamos los GPOs. Definimos a qué se aplicarán los enlaces creados. Disponemos de tres ámbitos o alcances: Sites, Dominios y OUs.
GPO
Objeto de Directiva de Grupo
Objeto que contiene la configuración que queremos aplicar a usuarios y/o equipos. Se enlazan a OUs.
Enlace de Directiva de Grupo Enlaza un GPO a la parte del entorno AD al qué queremos que se le aplique. Conocido como ámbito o alcance: Sites, Dominios y OUs.
Archivo ADMX Archivo de plantilla administrativa, define la ubicación de la configuración y valores en el sistema local, y crea el interfaz que usamos para modificar dicha configuración/valores desde el Editor de Directivas de grupo, que no es más que un GUI de administración de las mismas.
Preferencias de Directiva de Grupo Proporciona alternativas para trabajar con imágenes en toda la organización y así administrar configuraciones que no son fáciles desde la Directiva de Grupo. Esta configuración, inicialmente establecida por el administrador, refleja un estado del sistema predeterminado y que no es obligatorio.
RSoP Conjunto de configuraciones de directiva aplicadas después del completo proceso de las mismas. Puede ser una combinación de muchos niveles de Directivas.

En cuanto a los ámbitos o alcance hemos de tener en cuenta qué:

El ámbito más grande es el SITE y aquí se ven afectados todos los dominios y objetos que contenga.

En el DOMINIO se verán afectados todos los objetos contenidos en él.

En las OU, todos los objetos que contengan, así como los sucesivos anidamientos de OUs y sus objetos.

El uso de unos u otros se determina por las necesidades, si bien hay algunas recomendaciones al efecto:

Configuración de seguridad de red o IPSec, a nivel de SITE.

Contraseñas y resto de valores de seguridad, DOMINIO.

Aplicación de Directivas de Grupo en las OU, es lo que más recomiendan, proporcionan facilidad de administración y localización de nuestras Directivas.

Administrar las Directivas de Grupo

Como otras herramientas, powershell ha dedicado un módulo para almacenar los cmdlets que podemos usar en la administración de Directivas de Grupo. Éste módulo no está disponible en todos los sistemas en los que Powershell está instalado. Sólo se encuentra en DCs, servidores miembros con GPMC instalada o Windows 7 con RSAT instaladas.

Para importar el módulo usamos el comando:

Import-Module grouppolicy

Aunque si lo intentamos en un equipo que no cumpla los requisitos recibiremos un mensajito…

importmodulegrouppolicyNO

Pero sigamos en uno que sí,

importmodulegrouppolicySI

Una vez importado podemos listar los cmdlets disponibles, Get-Command –module grouppolicy 

importmodulegrouppolicylist

El comando Get-GPO –All nos permite ver las GPO del dominio.

Establece un valor de Preferencia. Igual que el anterior, hay que conocer la ubicación en el Registro.

Cmdlet

Qué hace:

Get-GPO Lista las GPO en el Dominio, podemos listar una específicamente o todas.
New-GPO Crea una nueva GPO en el dominio.
New-GPLink Crea un nuevo vínculo de GPO hacia una GPO existente en el dominio.
Set-GPRegistryValue Establece un valor de directiva. Para que este cmdlet sea efectivo en la GPO, hay que conocer la ubicación de la misma en el Registro.
Set-GPPrefRegistryValue Establece un valor de Preferencia. Hay que conocer la ubicación en el Registro.

Ejemplos: Get-GPO –All

gpoAll

Podemos ver la configuración de una en particular, por ejemplo listamos las que hay en SySVol…

dirGPOSysVOL

Y con su GUID…

GPO-ID

Y con su nombre…

GPO-DisplayName

 

Automatizando tareas administrativas: Copia de seguridad de las GPO del dominio

Tener una copia de seguridad de las Directivas de Grupo nos vendrá bien en algunos casos. Para realizar dicha copia podemos acceder simplemente a la Consola de administración de Directivas y hacer unos pocos pasos:

  1. Clic derecho en los objetos de Directiva de Grupo y clic en hacer copia de seguridad de todos
    backupdomainGPOs
  2. Indicamos la ruta y la descripción, y se realiza la copia de seguridad.
    backupdomainGPOs02backupdomainGPOs03backupdomainGPOs04backupdomainGPOs05

Aunque también podemos hacerlo con Powershell, por ejemplo desde El script-center tenemos un script para copiar las Directivas de Grupo modificadas en el mes.

http://blogs.technet.com/b/grouppolicy/archive/2009/03/26/powershell-script-backup-all-gpos-that-have-been-modified-this-month.aspx

El código es prácticamente el mismo, pero he traducido las cadenas y añadido import-ActiveDirectory para que pueda usar los cmdlets de AD, y cambiado la sentencia que recoge las GPO para que hiciera el backup de todas en lugar de las modificadas.

1 # El siguiente script busca todas las Directivas de Grupo en el dominio que hayan sido modificadas este mes. Entonces genera una copia de seguridad y un informe de configuración por cada una. Finalmente lista todas las que se han copiado. 2 ## depende de si se accede por el acceso a la consola powershell de AD o se ha navegado hacia allí primero 3 4 # necesario para usar los cmdlets de directiva de grupo y Active Directory 5 import-module ActiveDirectory 6 import-module grouppolicy 7 8 #Sacar todas las directivas de grupo enlazadas en el dominio del equipo local 9 #el primer paso es obtener el objeto dominio 10 # intro "get-ADDomain -?" para la ayuda 11 12 $mydomain = get-ADDomain -current LocalComputer 13 14 # el siguiente paso es obtener todas las directivas de grupo actualmente en el dominio que hayan sido modificadas este mes 15 16 $currentDate = get-Date 17 18 # $ModGPOs = get-gpo -domain $mydomain.DNSRoot -all | where {$_.ModificationTime.Year.equals($currentDate.Year) -And $_.ModificationTime.Month.equals($CurrentDate.Month)} 19 20 $ModGPOs = get-gpo -domain $mydomain.DNSRoot -all 21 22 # bucle de las directivas de grupo 23 24 $RootPath = "C:\GPOBackup\Reports\" 25 26 Foreach ($GPO in $ModGPOs) { 27 # Copia de seguridad de la directiva en la ruta especificada 28 $GPOBackup = backup-GPO $GPO.DisplayName -path "C:\GPOBackup" 29 30 # Primero crea la ruta del informe, luego lo genera con la configuración guardada. 31 $ReportPath = $RootPath + $GPO.ModificationTime.Month + "-"+ $GPO.ModificationTime.Day + "-" + $GPO.ModificationTime.Year + "_" + $GPO.Displayname + "_" + $GPOBackup.Id + ".html" 32 get-GPOReport -Name $GPO.DisplayName -path $ReportPath -ReportType HTML 33 } 34 35 # Salida de cuales directivas de grupo se han guardado correctamente. 36 37 "Las siguientes " + $ModGPOs.count + " Directivas de Grupo se han guardado correctamente:" | out-host 38 39 Foreach ($GPO in $ModGPOs) { 40 " " + $GPO.DisplayName | out-host 41 } 42 43 "Ir a " + $RootPath + " para ver los informes de configuración de las Directivas de Grupo guardadas." | out-host 44

scriptbackup01

scriptbackup02

scriptbackup03

scriptbackup04

PowerSE Professional, editor scripts powershell free.

  powerSE01

Conocida herramienta de edición de scripts de PowerShell de Devfarm Software, Al parecer PowerSE está disponible gratuitamente ahora. PowerSE está diseñada para administradores, con el ánimo de ayudarles en las tareas diarias. PowerSE dispone de todas las características de los editores de gama alta, como remarcar con colores la sintáxis, Intellisense, y tabulación completa, pero lo que lo hace especial es la conjunción perfecta de editor y consola de comandos de PowerShell.

powerSE02