Cambiar contraseña de administrador local de forma centralizada - AdmPwd

lunes, 26 de enero de 2015


Actualización 25/08/2015 - La herramienta está disponible desde el 01/05/2015 de forma oficial a través del centro de descargas de Microsoft bajo el nombre Local Administrator Password Solution (LAPS). Más información: https://technet.microsoft.com/en-us/library/security/3062591.aspx

Uno de los temas que más dolores de cabeza causa a los administradores de entornos de dominio Windows, es el manejo de la contraseña de la cuenta de administrador local integrada (built-in) de todos los equipos de la red, lo he visto en la gran mayoría de clientes, sin embargo algunos tratan de controlarlo bien sea mediante scripts de inicio de sesión o algunos haciendo uso de preferencias mediante la directiva de grupo, cosa que ya no es posible hacer debido a que se ha deshabilitado la posibilidad de establecer la contraseña del usuario administrador integrado a causa de la vulnerabilidad conocida en mayo de 2014 que permitía conocer la contraseña almacenada (http://support.microsoft.com/kb/2962486).
Desde hace un tiempo he venido trabajando con la herramienta AdmPwd, la cual me parece excelente para controlar el tema de la administración centralizada de la contraseña del usuario administrador local de todos los equipos dela red, debido a que se basa en Active Directory. En este tutorial explicaré cómo configurar la herramienta y por fin dejar de preocuparnos por la la famosa clave del administrador local de las máquinas, que por lo general era la misma para todos los equipos, no se cambiaba con frecuencia, y en ocasiones era conocida por varias personas.
El proyecto, que se distribuye de manera gratuita está disponible aquí: https://code.msdn.microsoft.com/windowsapps/Solution-for-management-of-ae44e789
Allí encontrará dos enlaces de descarga, uno con los instaladores y otro con la documentación.












La solución se instala tanto en un equipo que utilizaremos para la administración y en los servidores o estaciones donde deseemos administrar la contraseña de administrador local.

Instalación de AdmPwd - Local Admin Password Management Solution.

Descomprimimos el archivo Installers.zip allí encontraremos el instalador para 32 y 64 bits AdmPwd.Setup.x64.msi y AdmPwd.Setup.x86.msi
En este caso ejecutaremos el instalador de 64 bits.
Hacemos clic en Next para iniciar la instalación.

Como nos encontramos instalando la solución en la máquina donde la administraremos, debemos instalar todos los componentes.


Hacemos clic en Install


Y por último, clic en Finish para completar la instalación.


Preparación de Active Directory

La herramienta realiza una modificación en el esquema de Active Directory, agregando dos nuevos atributos a los objetos de máquina, los atributos son los siguientes:
ms-MCS-AdmPwd: Este atributo almacena la contraseña en texto plano 
ms-MCS-AdmPwdExpirationTime: Almacena la fecha en que se restablece la contraseña.
Para modificar el esquema, debemos hacer uso de PowerShell, abrimos una consola de PS elevada e importamos el módulo de la siguiente forma:
Import-module AdmPwd.ps


Ahora, ejecutamos el siguiente cmdlet para hacer la modificación al esquema de Active Directory:
Update-AdmPwdADSchema 


Eliminar derechos extendidos

El atributo ms-MCS-AdmPwd en el cual se almacena la contraseña de los equipos, puede ser leído por cualquier usuario que tenga el permiso "All extended Rights", los usuarios o grupos que tengan este permiso tienen la habilidad de leer atributos confidenciales y el atributo ms-MCS-AdmPwd lo es, el cmdlet Find-AdmPwdExtendedRights permite conocer quienes tienen este permiso en determinada OU, por ejemplo; vamos a revisar cuáles grupos o usuarios tienen habilitada la propiedad All Extended Rights, en la OU Desktops, para ello escribimos los siguiente en PowerShell
Find-AdmPwdExtendedRights -Identity Desktops | Format-Table ExtendedRightHolders


Como se puede observar, sobre la OU Desktops el único grupo que puede leer atributos confidenciales es el grupo Domain Admins, por el momento, porque la idea es delegar también esta posibilidad a el grupo que administrará las contraseñas de los equipos de la red.
Si deseamos que determinados usuarios o grupos no puedan leer atributos confidenciales, debemos realizar las siguientes acciones:
Lo que veremos a continuación debe realizarse por cada OU que deseemos restringir.
1. Abrimos ADSIEdit y nos conectamos al contexto de nombres por defecto.


2. Hacemos clic derecho y luego Properties sobre la OU en la cual restringiremos el permiso All Extended Rights


3. Hacemos clic en la pestaña Security y luego Advanced, allí hacemos clic en Add y en Select a Principal escribimos el nombre del grupo que deseamos revisar, en este caso elegiré el grupo Soporte.


Como se puede apreciar el grupo CONTOSO\Soporte no tiene marcado este permiso, de llegar a tenerlo simplemente desmarcamos la casilla y listo.

Asignar permisos a las máquinas 

Debemos otorgar permisos de escritura a la cuenta integrada SELF, ésto debido a que cada objeto de máquina debe ser capaz de escribir la contraseña y la fecha de cambio de la misma en los atributos ms-MCS-AdmPwd y ms-MCS-AdmPwdExpirationTime, para esto debemos hacer uso del cmdlet Set-AdmPwdComputerSelfPermission
En este caso lo haremos para la OU Desktops, debe hacerse por cada OU padre, no sobre las OU hijas, debido a que éstas heredan de manera predeterminada los permisos de la OU padre.
Set-AdmPwdComputerSelfPermission -OrgUnit Desktops


Asignar permisos a los usuarios 

Ahora, debemos otorgar permisos a los usuarios o grupos que deseamos puedan leer la contraseña guardada en Active Directory de las cuentas de administrador local de los equipos que se encuentran en el alcance de la solución, para ello hacemos uso del cmdlet Set-AdmPwdReadPasswordPermission
Set-AdmPwdReadPasswordPermission -OrgUnit Desktops -AllowedPrincipals AdmPwd
En el parámetro AllowedPrincipals debemos poner el nombre del grupo o usuario que podrá consultar la contraseña, se pueden poner varias cuentas separadas por coma, en este caso solamente usaré un grupo al cual llamé AdmPwd


Con esta delegación que acabamos de realizar, los miembros del grupo AdmPwd podrán leer la contraseña de la cuenta administrador local de los equipos, ahora vamos a delegar permisos para cambiar la clave, lo bueno de esta delegación es que podemos otorgar permisos a grupos de usuarios diferentes para cada función, por ejemplo: podemos delegar el permisos de leer la contraseña a un grupo específico y a otro le podemos otorgar permisos para restablecer la contraseña, con esto dividimos la responsabilidad a dos grupos de personas diferentes, lo cual puede ser útil en entornos más complejos de TI.
Ahora, utilizaremos el cmdlet Set-AdmPwdResetPasswordPermission para especificar quiénes tendrán el derecho de restablecer las contraseñas, en este caso otorgaré los permisos al mismo grupo AdmPwd
Set-AdmPwdResetPasswordPermission -OrgUnit Desktops -AllowedPrincipals AdmPwd


Configurar la directiva de grupo

Debemos crear una GPO o usar una existente para controlar la configuración que se aplicará a la contraseña del usuario administrador local.
Para este caso cree una nueva GPO llamada Password_Administrador_Local la cual debemos registrar haciendo uso del cmdlet Register-AdmPwdWithGPO
Register-AdmPwdWithGPO -GpoIdentity: Password_Administrador_Local 


Si por alguna razón no se desea seguir usando la misma GPO o simplemente vamos a cambiarla por otra podemos eliminar el registro hecho previamente mediante el cmdlet UnRegister-AdmPwdWithGPO  y la misma sintaxis mostrada en la imagen anterior.
Ahora, veamos como hacer la configuración directamente desde la plantilla administrativa en la directiva de grupo, para ello editemos la GPO previamente creada.
Podemos observar que tenemos un contenedor llamado AdmPwd en la siguiente ruta: Computer Configuration\Administrative Templates\AdmPwd


En Password Settings podemos controlar la configuración que deseamos tenga la contraseña del administrador local, allí podemos encontrar la complejidad de la contraseña, la longitud y la vigencia. Los valores por defecto podemos observarlos en la siguiente imagen.


Configuración de equipos cliente

Una vez configuremos la GPO, ya estamos listos para distribuirla a los equipos cliente, sin embargo, esto no es todo lo que debemos hacer, debido a que se necesita que el cliente tenga la CSE (Client Side Extension) para que pueda "efectuar" los cambios que indicamos en la GPO, existen varias maneras de desplegar la solución, puede ser mediante scripts de inicio de sesión, utilizando System Center Configuration Manager (SCCM), la directiva de instalación de software de Active Directory, o si se desea manualmente.
Para esta demostración realizaré el despliegue de la solución utilizando la directiva de instalación de software de Active Directory (GPSI).
Para esta demostración realizaré el despliegue de la solución utilizando la directiva de instalación de software de Active Directory (GPSI).
1. Creamos una GPO para hacer la instalación de la solución
2. Creamos una carpeta compartida y ubicamos allí el paquete de instalación AdmPwd.Setup.x64.msi
3. Agregamos el paquete de instalación MSI en la GPO creada


4. Hacemos gpupdate /force en alguno de los equipos que se encuentran dentro del alcance de la solución.
Ahora abrimos Programas y Características en el panel de control y podemos ver que la solución ya se encuentra instalada.


Utilizar la herramienta GUI AdmPwd

La herramienta GUI es la que instalamos en el computador de administración al principio de este artículo, podemos encontrar el icono de acceso en los programas instalados.


Lo único que debemos hacer es escribir el nombre de la máquina en el campo computername y hacer clic en el botón Search


En la imagen anterior vemos que después de hacer clic en el botón Search vemos que no aparece la contraseña, ésto debido a que realicé la consulta con usuario que no se encuentra dentro del grupo al cual le delegamos la tarea, ahora vemos el resultado con un usuario autorizado.


Ahora si podemos consultar la contraseña, si queremos que expire de forma inmediata, simplemente hacemos clic en el botón Set dejando el campo New Expiration Time vacío, de lo contrario podemos escribir la fecha en la cual deseamos que expire y hacemos clic en el botón Set.
Veamos un ejemplo, la clave en la imagen anterior expira el 2 de Diciembre de 2014 a las 10:33 AM, vamos a dejarla para que expire el 30 de Noviembre de 2014 a la misma hora, hacemos lo siguiente


De esta forma tendremos control de todas las contraseñas de administrador local, cada equipo tendrá una contraseña diferente y con esto disminuimos considerablemente los riesgos asociados a la compleja administración de la contraseña de la cuenta administrador local integrada.
No olvides hacer cualquier comentario, con gusto lo responderé, más adelante escribiré otras entradas donde tratemos otros detalles de esta solución, como lo es otro tipo de despliegues diferentes a GPSI, log de auditoria, entre otras cosas.
Los invito a que implementen ya mismo esta solución que seguro les gustará y facilitará la administración. 


 

Lo más visto

Comunidad

Comunidad
Comunidad Técnica

Visitas