Windows Server

¿Cómo configurar una Política de Contraseñas de Granularidad Fina en Windows Server?

I. Introducción

En este tutorial, veremos cómo configurar una política de contraseñas (PSO) ajustada en Windows Server 2022, con el objetivo de tener múltiples políticas de contraseñas aplicables a los grupos de seguridad de Active Directory.

De forma predeterminada, el objeto de directiva de grupo (GPO) " Directiva de dominio predeterminada " contiene parámetros para definir una directiva de complejidad de contraseñas y bloqueo de cuentas para el dominio de Active Directory.

Un mal ejemplo típico: la política de contraseñas por defecto desactivada.

Sin embargo, desde Windows Server 2008, luego Windows Server 2008 R2 y ahora Windows Server 2022, ha sido posible crear lo que se conoce como una "Política de Contraseñas de Granularidad Fina" (FGPP). La ventaja de este sistema es que puedes crear varias políticas de complejidad de contraseñas y bloqueo de cuentas, y luego aplicarlas solo a determinados objetos.

Estas políticas de contraseñas refinadas permiten una mayor flexibilidad en la gestión de contraseñas y bloqueos de cuentas, ya que pueden aplicarse en todos los grupos de seguridad. Por ejemplo, se puede exigir a los contables de una empresa que utilicen una contraseña de al menos 16 caracteres, y a las secretarias una contraseña de al menos 10 caracteres. También es una forma de proteger las cuentas pertenecientes al grupo "Administradores de dominio" con una política de contraseñas muy estricta, dentro de los límites de las posibilidades que ofrecen las estrategias de contraseñas refinadas.

En este ejemplo, vamos a crear una política de contraseñas refinada que se aplicará a los miembros del grupo "Contabilidad", ¡pero el proceso se aplica a lo que quieras! Este tutorial es compatible con otras versiones de Windows Server, incluyendo Windows Server 2025.

II. La noción refinada de estrategia de contraseñas

Las estrategias de contraseñas refinadas corresponden a "Objetos de configuración de contraseñas" y también se denominan"PSO".

- PSO (Password Settings Object):
- PSC (Password Settings Container): Contenedor de configuración de contraseñas

Una OSP puede aplicarse directamente a un usuario, pero también a un grupo, lo que es más interesante en términos de flexibilidad administrativa.

Un usuario/grupo puede estar vinculado a varios SOP, pero en caso de conflicto entre ellos, se utiliza un atributo de prioridad denominado "valor de precedencia" para definir una prioridad de aplicación de la estrategia.

En ausencia de una política PSO, se aplica la política de contraseñas del dominio.

Para utilizar esta característica, el nivel funcional de su dominio y bosque debe ser al menos "Windows Server 2008". La buena noticia es que desde Windows Server 2012, Microsoft ha simplificado la gestión de políticas de contraseñas refinadas.

III. Creación de una política de contraseñas perfeccionada

En su controlador de dominio, abra el " Centro de Administración de Active Directory ", al que puede acceder desde Herramientas Administrativas o a través de " dsac.exe ".

Seleccione la vista en árbol de la izquierda, desplácese hasta su nombre de dominio, luego " Sistema " y " Contenedor de configuración de contraseña ".

Acceso a políticas de contraseñas refinadas
Acceso a políticas de contraseñas refinadas

En el panel derecho, haga clic en " Nuevo " y, a continuación, en " Configuración de la contraseña " como se indica a continuación:

Crear una nueva política de contraseñas refinada
Crear una nueva política de contraseñas refinada

En la pantalla aparece un formulario completo: ahora tendrás que rellenarlo. Como yo hago las cosas bien, aquí tienes algunas indicaciones que te ayudarán:

- Nombre: Nombre de la política, en mi caso "PSO_Comptabilite".

- Prioridad: Valor mayor que 0, utilizado para arbitrar en caso de conflicto entre dos SOPs aplicados al mismo objeto. Recuerda espaciar los valores de tus diferentes PSOs para poder jugar con las prioridades fácilmente.

Hay que seguir dos reglas:

  • El valor más bajo tendrá prioridad sobre el más alto.
  • En caso de prioridades idénticas, se aplicará la política con el GUID más bajo.
  • Una PSO aplicada a nivel de usuario tiene prioridad a nivel de grupo.

Sigamos adelante.

- Aplicar longitud mínima de contraseña: número entero para definir la longitud mínima de contraseña. Utilicemos 16 caracteres para este ejemplo.

- Aplicar historial de contraseñas: establece el número de contraseñas antiguas que un usuario no puede reutilizar, obligándole a "inventarse" una nueva contraseña un determinado número de veces. Por defecto, el valor es 24, lo que me parece bastante correcto.

- La contraseña debe cumplir requisitos de complejidad: indique si la contraseña debe cumplir o no estos requisitos (recomendado por motivos de seguridad).

- Almacenar la contraseña mediante cifrado reversible: es mejor no activar esta opción, de nuevo por motivos de seguridad. Activar esta opción significa que la contraseña almacenada en el EA puede recuperarse en texto claro, lo que no es deseable.

- Proteger contra el borrado accidental: protege contra el borrado accidental de este objeto PSO.

- Aplicar una antigüedad mínima de contraseña: la duración mínima de una contraseña, evitando que un usuario cambie su contraseña varias veces seguidas. Esto podría permitirle superar el límite del historial de contraseñas y redefinir su contraseña inicial....

Este valor debe corresponder a un número de días.

- Aplicar la antigüedad máxima de la contraseña: mismo principio que el parámetro anterior, pero para la duración máxima. Si nos remitimos a las recomendaciones de ANSSI, no deberíamos imponer una fecha de caducidad a las contraseñas de cuentas no sensibles (sin privilegios elevados), si la política general es lo suficientemente robusta. Desmarco esta opción.

- Número autorizado de intentos fallidos: una vez superado el número autorizado de intentos, la cuenta se bloqueará automáticamente. Así se evitan los ataques de fuerza bruta, en los que se realizan numerosos intentos...

- Restablecer el número de intentos de conexión fallidos después de (min): una vez transcurrido este tiempo, el número de intentos fallidos se restablece a cero.

Pongamos un ejemplo: usted establece el parámetro"Número de intentos fallidos permitidos" en "3" y el parámetro "Restablecer el número de intentos fallidos de inicio de sesión después de (min)" en 60 minutos . Una vez que el usuario haya introducido la contraseña incorrecta una vez, se iniciará una cuenta atrás de 60 minutos, y si en este periodo de 60 minutos el usuario realiza otros 2 intentos fallidos (elevando el total a 3), la cuenta se bloqueará. Por el contrario, si transcurridos 60 minutos no ha habido más intentos fallidos (o sólo uno, es decir, 2), el contador se pone a cero. Este parámetro es esencial, ya que sin él, el número de intentos fallidos nunca se pondría a cero, y la cuenta de usuario se bloquearía si el contador siguiera aumentando.

- La cuenta se bloqueará:

Cuando una cuenta está bloqueada, puede ser :

  • Por un periodo de (mins): establece un valor de bloqueo para la cuenta, que se desbloqueará automáticamente una vez transcurrido el tiempo de espera.
  • Hasta que un administrador desbloquee manualmente la cuenta: se requiere la acción manual de un administrador para desbloquear la cuenta.

En cuanto a la sección "Se aplica directamente a", debe añadir los usuarios y/o grupos a los que desea aplicar esta estrategia PSO. Para ello, haz clic en el botón "Añadir" de la esquina inferior derecha. Por mi parte, voy a añadir el grupo denominado "Contabilidad", y te recomiendo que utilices la gestión de grupos en lugar de la gestión de usuarios.

Al final, obtengo la siguiente configuración:

Ejemplo de política de contraseñas perfeccionada
Ejemplo de política de contraseñas perfeccionada

Para su información, cada objeto PSO contiene atributos específicos pertenecientes a la clase msDS-PasswordSettings y que contienen los valores definidos cuando se creó la política. Por ejemplo: msDS-LockoutDuration, msDS-LockoutThreshold y msDS-MaximumPasswordAge.

Haz clic en " Aceptar" cuando hayas terminado.

Ahora puede establecer una estrategia de contraseñas refinada en su infraestructura Microsoft. Puede crear varias y aplicarlas a distintos grupos.

IV. ¿Qué política de contraseñas refinadas se aplica a mi usuario?

Si desea ver qué política se aplica a un usuario, siempre en el "Centro de Administración de Active Directory" seleccione " Usuarios " en la estructura de árbol. A continuación, busque su usuario en la lista, selecciónelo y haga clic en " Ver configuración de contraseñas " a la derecha.

Se abrirá una ventana y tendrás la respuesta a tu pregunta.

Otra forma es utilizar la consola "Usuarios y equipos de Active Directory". A continuación, active la vista avanzada para acceder al editor de atributos (Ver > Funciones avanzadas).

Busque su usuario, haga clic con el botón derecho en propiedades y haga clic en la pestaña "Editor de atributos". A continuación, haga clic en el botón "Filtro" y haga clic en "Construido" para mostrar el atributo msDS-ResultantPSO.

Si busca este atributo y mira su valor, puede ver el nombre de la política que se aplica. Por ejemplo, obtengo :

CN=PSO_Comptabilite,CN=Password Settings Container,CN=System,DC=it-connect,DC=local

Pero al final, PowerShell y el cmdlet "Get-ADUserResultantPasswordPolicy" simplifican aún más las cosas, ya que todo lo que hay que hacer es especificar el ID del usuario:

  Get-ADUserResultantPasswordPolicy -Identity guy.mauve

La propiedad "Name" nos da directamente el nombre de la política.

Mantengamos el impulso y aprendamos a crear una política de contraseñas refinada con PowerShell.

V. Creación de una política de contraseñas refinada con PowerShell

PowerShell proporciona un conjunto de cmdlets para gestionar PSO desde la línea de comandos. Esto puede ser útil si tiene que crear un gran número de políticas, o si desea disponer de un script listo para desplegar a sus clientes.

Hay varios cmdlets muy interesantes integrados directamente en el módulo Active Directory de PowerShell :

  • New-ADFineGrainedPasswordPolicy: crear una nueva política de contraseñas refinada.
  • Add-ADFineGrainedPasswordPolicySubject: asignar una política a un grupo o usuario
  • Set-ADFineGrainedPasswordPolicy: modificar una política existente
  • Get-ADFineGrainedPasswordPolicy: lista de políticas de contraseñas refinadas para su dominio de Active Directory.

Para crear una nueva política de contraseñas refinada con New-ADFineGrainedPasswordPolicy, vas a tener que utilizar un montón de parámetros. Esto no es sorprendente, ya que hay un montón de campos cuando lo haces a través de la GUI.

Antes de empezar, tenga en cuenta que los valores horarios deben seguir un formato específico: D.H:M:S.F, es decir: Día.Horas:Minutos:Segundos:Fracciones de segundo (opcional).

El siguiente comando crea una política llamada"PSO_ComptabiliteBis" con las siguientes opciones:

  • Una prioridad de 10 (-Precedence)
  • Longitud mínima de contraseña de 7 caracteres (-MinPasswordLength)
  • Historial de las últimas 24 contraseñas (-PasswordHistoryCount)
  • Cifrado reversible desactivado (-ReversibleEncryptionEnabled)
  • Complejidad de contraseña requerida (-ComplexityEnabled)
  • Umbral de bloqueo fijado en 3 fallos (-LockoutThreshold)
  • Restablecer el número de intentos de conexión fallidos después de 60 minutos (-LockoutObservationWindow)
  • Bloquear cuenta durante 60 minutos (-LockoutDuration)
  • La contraseña debe conservarse al menos 1 día (-MinPasswordAge)
  • La contraseña nunca caduca (-MaxPasswordAge)
  • El objeto PSO está protegido contra el borrado accidental (-ProtectedFromAccidentalDeletion)

Esto da el siguiente comando:

New-ADFineGrainedPasswordPolicy -Name "PSO_ComptabiliteBis" -DisplayName "PSO_ComptabiliteBis" `
 -Precedence 10 -MinPasswordLength 7 -PasswordHistoryCount 24 `
 -ReversibleEncryptionEnabled $false -ComplexityEnabled $true `
 -LockoutThreshold 3 -LockoutObservationWindow "0.01:00:00" `
 -LockoutDuration "0.01:00:00" -MinPasswordAge "1.00:00:00" `
 -MaxPasswordAge "0.00:00:00" -ProtectedFromAccidentalDeletion $true

Si quieres activar la opción "La cuenta estará bloqueada hasta que un administrador la desbloquee manualmente" a través de PowerShell, es un poco complicado (por no decir imposible). Para ello, tienes que establecer"-LockoutDuration" en"0.00:00:00", con la salvedad de que el parámetro no puede tener un valor inferior a"-LockoutObservationWindow", ¡así que esto va a causar problemas! El problema es el mismo si se crea la política y luego se intenta modificarla, se obtiene el error"New-ADFineGrainedPasswordPolicy: La modificación no ha sido autorizada por razones de seguridad".

Nota: para modificar una política existente, utilice el comando "Set-ADFineGrainedPasswordPolicy -Identity <name-PSO>" seguido de los parámetros que desea modificar.

Para obtener información detallada sobre cada parámetro del comando New-ADFineGrainedPasswordPolicy, consulte esta página :

A continuación, para asignar la nueva política "PSO_ComptabiliteBis" a nuestro grupo "Contabilidad", ejecutaremos el siguiente comando:

Add-ADFineGrainedPasswordPolicySubject "PSO_ComptabiliteBis" -Subjects "Comptabilité"(Contabilidad)

Por último, puede listar sus OSP en cualquier momento con este comando:

Get-ADFineGrainedPasswordPolicy -Filter *

Por ejemplo:

Ejemplo - Get-ADFineGrainedPasswordPolicy
Ejemplo - Get-ADFineGrainedPasswordPolicy

Con estos pocos comandos, podrás gestionar tus refinadas políticas de contraseñas con PowerShell.

VI. Información adicional

Para ir más allá de lo que Microsoft ofrece de forma nativa con Active Directory, existen herramientas de terceros, en particular de Specops. He tenido la oportunidad de utilizar dos programas de Specops:

Una herramienta gratuita que analiza sus contraseñas de Active Directory (mediante hash) para detectar contraseñas vulnerables y comprobar si sus políticas de contraseñas cumplen las mejores prácticas.

Obtenga más información viendo el vídeo a continuación o leyendo mi tutorial dedicado a este software.

Specops también ofrece una herramienta de pago que permite configurar políticas de contraseñas muy refinadas, yendo mucho más allá de lo que ofrece Microsoft de forma nativa.

Obtenga más información en el siguiente vídeo o en mi tutorial sobre este software.

author avatar
Florian Burnel Co-founder of IT-Connect
Systems and network engineer, co-founder of IT-Connect and Microsoft MVP "Cloud and Datacenter Management". I'd like to share my experience and discoveries through my articles. I'm a generalist with a particular interest in Microsoft solutions and scripting. Enjoy your reading.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.