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. 


25 comentarios:

Sergio dijo...

Estimado Cesar,

en primer lugar, agradecerte por tan buen aporte y en segundo lugar comentarte que estuve haciendo las pruebas pero al momento de asociar a la GPO me sale un error el cual no reconoce el CMDLET Register-AdmPwdWithGPO me dice que no se reconoce como nombre de un cmdlet...... como puedo resolver esta situacion?

quedo atento a tu amable colaboración

gracias de antemano

César Herrada dijo...

Hola Sergio, gracias por tu comentario.

Intenta lo siguiente, en lugar de poner el nombre de la GPO, utiliza como parámetro el ID de la misma, el cual encuentras en la pestaña 'Details' de la GPO, es ese valor largo que aparece bajo la etiqueta 'Unique ID'. Prueba y me cuentas los resultados.

Un saludo.

Xavier Farez dijo...

Buen Día, Cesar,

Una consulta esta heramienta me serviria para cambiar la contraseña local de todos los equipos en un dominio de manera certralizada o ne serviria para cambiar equipo por quipo, esa seria mi consulta, o existe algun metodo para realizar este tipo de tareas, gracias

César Herrada dijo...

Hola Xavier, está solución te permite cambiar la contraseña de forma centralizada, y lo mejor la contraseña es diferente en cada equipo. Cualquier cosa me cuentas. Un saludo

César Herrada dijo...
Este comentario ha sido eliminado por el autor.
elal3x dijo...

Hola, tengo que instaurar este método en la empresa, pero tengo una pequeña duda, es posible mantener la misma pass en todos los equipos o será diferente en cada uno de ellos? Si es diferente, no hay manera de que se la misma?
Gracias!

César Herrada dijo...

Hola elaa3x, la contraseña es diferente para cada equipo, y esto es una gran ventaja ya que con cualquier otro método la clave es la misma para todos los equipos, lo cual aumenta el riesgo, por cual razón deseas que sea la misma para todos? si es por temas de gestionar múltiples contraseñas no te preocupes, toda esta administración es hecha por la herramienta. Gracias por comentar y cualquier otra cosa no dudes el volver a escribir. Un saludo.

Eduardo Ponce dijo...

Buen dia

Excelente aportación, ya realice el proceso pero no me aparece la contraseña, y no puedo hacer el reseteo, donde podría estar el problema, si encuentra los equipos y me da las fechas de caducidad de password

Gracias

César Herrada dijo...

Hola Eduardo, si no aparece la contraseña, es decir si el cuadro de texto que contiene la contraseña aparece en blanco, probablemente la GPO no fue aplicada, por lo cual el primer paso es verificar que efectivamente la directiva sea aplicada a los objetos de máquina que deseas controlar, la fecha que probablemente estas viendo sea esta: 1/1/0001 12:00:00 AM, si es así, esto confirma la sospecha de que la GPO no ha sido aplicada. Por favor en primera instancia revisa lo que acabo de comentar y me cuentas los resultados. Un saludo.

Eduardo Ponce dijo...

Estimado Cesar

Gracias por tus comentarios

Cuando busco los datos de un equipo me aparece una fecha actual sobre la expiración del password no es:1/1/0001 12:00:00 AM y si esta aplicada la GPO sobre la OU que contiene los equipos

Saludos

César Herrada dijo...

Hola Eduardo, también es posible que sea por tema de delegación, el usuario que usas para realizar la consulta pertenece al grupo que especificaste mediante el cmdlet Set-AdmPwdReadPasswordPermission? otra cosa que puedes revisar es los atributos del equipo, revisa si el atributo ms-Mcs-AdmPwd este atributo es el que almacena la contraseña, no debería estar vacío. Revisa esto y me cuentas. Un saludo.

Eduardo Ponce dijo...

Estimado Oscar

Asi es el usuario el cual uso para hacer la consulta fue agregado al grupo al que le delegamos el permiso mediante el cmdlet tanto de Read como de Reset, en la segunda parte de tu respuesta ya verifique ese atributo y esta vacio, que dato debería encontrar ahí??

Saludos

César Herrada dijo...

Hola Eduardo, ese campo precisamente guarda la contraseña, allí debe aparecer, verifica que la herramienta se ha instalado correctamente en el equipo. Como la desplegaste, por GPO?

César Herrada dijo...

Hola Eduardo, ese campo precisamente guarda la contraseña, allí debe aparecer, verifica que la herramienta se ha instalado correctamente en el equipo. Como la desplegaste, por GPO?

Eduardo Ponce dijo...

Hola Cesar

No la instale localmente en el equipo cliente, lo que esta ocurriendo ya haciendo las pruebas es que el atributo ms-Mcs-AdmPwd no se puede modificar el de Expiration Time si lo esta modificando

Saludos
EPM

César Herrada dijo...

Revisa nuevamente los permisos de delegación, si es necesario vuelve a ejecutar cuidadosamente los cmdlets. Quedo atento

Eduardo Ponce dijo...

estimado Cesar

El problema estaba en la Política , ya esta funcionando todo bien

Mil gracias y un saludos

César Herrada dijo...

Hola Eduardo, me alegra mucho que ya tengas en funcionamiento la herramenta. Un saludo.

MiguelB dijo...

buen día, que buen aporte, pero tengo un problema estuve haciendo las pruebas pero al momento de asociar a la GPO me sale un error el cual no reconoce el CMDLET Register-AdmPwdWithGPO me dice The term 'Register-AdmPwdWithGPO' is not recognized as the name of a cmdlet, function......

como puedo resolver esta situacion?

quedo atento a tu amable colaboración

César Herrada dijo...

Hola Miguel, gracias por tu comentario. Revisa el primer comentario en este post, es el mismo caso, y prueba con la sugerencia que respondí en su momento.

MiguelB dijo...

Gracias por la pronta respuesta, ya realice el proceso sugerido y me genera el mismo problema. Estoy trabajando con windows server datacenter 2012 R2.

Quedo atento a cualquier colaboración.

César Herrada dijo...

Hola Miguel, estuve revisando la documentación de la versión final y el cmdlet Register-AdmPwdWithGPO ya no existe, por lo cual debes poder continuar con el proceso sin este paso, por favor realiza las pruebas y déjame saber si te dio resultado. Un saludo.

MiguelB dijo...

Cesar, buen día

al seguir con el procedimiento, omiteindo el registro , uando ingresamos Group Policy Management en la GO Password_Admnistrador_local no aparece la carpeta de AdmPwd.

Que puedo hacer?, quedo atento al tema.

Papacho dijo...

Hola Cesar, ¿me serviría esta herramienta para cambiar la contraseña de administrador de dominio?

César Herrada dijo...

Hola Papacho, no, está solución es solamente para las cuentas de administrador local. Saludos!

 

Aprende en Net University

Aprende en Net University
Aprende más de Azure con los cursos de Net University

MVP Award

MVP Award
Microsoft Azure

Lo más visto

Certificaciones

Comunidad

Comunidad
Comunidad Técnica

Sobre mi

Mi foto
Microsoft Azure MVP MCT|MCSE|MCSA

Visitantes


flags.es