Active Directory: Proteja sus contraseñas con Lithnet Password Protection para Active Directory.

Windows Server 2012R2Windows Server 2016Windows Server 2019

En este tutorial, os explicaré cómo reforzar la seguridad de las contraseñas con Lithnet Password Protection for Active Directory.

Lithnet Password Protection for esActive Directory una utilidad gratuita que se instala en los controladores de dominio y que nos permitirá aumentar la seguridad de las contraseñas mediante:

  • La creación de un diccionario de contraseñas prohibidas, que también tiene en cuenta la sustitución de caracteres; por ejemplo, si se prohíbe «password», la contraseña «P@ssw0rd!» también quedará prohibida.
  • Impedir el uso de contraseñas comprometidas basándose en la base de datos del sitio web haveibeenpwned.com.
  • Impedir el uso del nombre y los apellidos en la contraseña, utilizando también la sustitución de caracteres.
  • Gestión avanzada de la complejidad de las contraseñas
  • Uso de expresiones regulares (Regex) para las contraseñas

Ahora que ya te has hecho una idea, vamos a ver su instalación, configuración y uso.

Instalación de Lithnet Password Protection for Active Directory

Empieza por descargar la última versión disponible: Releases · lithnet/ad-password-protection y colócala en un controlador de dominio.

Ejecuta el archivo ejecutable haciendo doble clic.

Al iniciarse el asistente de instalación, haz clic en «Next» 1.

Acepta la licencia 1 y haz clic en «Next» 2.

Deja los componentes predeterminados y haz clic en «Next» 1.

Si es necesario, cambia la ubicación de los archivos y haz clic en «Next» 1.

Confirma la instalación haciendo clic en el botón «Install» 1.

Espera mientras se realiza la instalación…

Cierra el asistente haciendo clic en «Finish» 1.

La instalación ha finalizado.

Aunque no se solicitara, he reiniciado el servidor para que se apliquen los cambios de la instalación

Configuración «básica» de Lithnet Password Protection for Active Directory

Para configurar Lithnet Password Protection forActive Directory, lo haré en dos pasos: primero realizaré una configuración «sencilla» para presentaros la herramienta y, a continuación, veremos cómo conseguir una configuración más completa.

La configuración se realiza en PowerShell, por lo que hay que importar el módulo mediante el cmdlet siguiente:

Import-Module LithnetPasswordProtection

Para ilustrar el tutorial, vamos a añadir la contraseña «password» a la lista de palabras prohibidas. Para ello, introduce el siguiente comando:

Add-BannedWord -Value "password"

Antes de continuar, vamos a utilizar el cmdlet Test-IsBannedWord para comprobar si la contraseña «P@ssw0rd» está prohibida.

Introduce el comando:

Test-IsBannedWord -value P@ssw0rd

Se puede observar que el comando devuelve «True», lo que indica que la contraseña está prohibida

En la carpeta: C:\Program Files\Lithnet\Active DirectoryPassword Protection\Store\v3\w se encuentran las «bases de datos» que contienen las contraseñas.

Configuración de la política de grupo para utilizar Lithnet Password Protection for Active Directory

Para que funcione, es necesario configurar una política de grupo para que Active Directoryse apliquen los parámetros de Lithnet Password Protection for.

Abrir la consola de Administración de políticas de grupo.

Haga clic con el botón derecho del ratón en el contenedor «Objetos de política de grupo» 1 y haga clic en «Nuevo» 2.

Asigne un nombre a la política 1 y, a continuación, haga clic en Aceptar 2.

Haz clic con el botón derecho del ratón en la política de grupo 1 y selecciona «Modificar» 2.

Ve a la siguiente ubicación para acceder a los parámetros: Configuración del equipo / Políticas / Plantillas administrativas / Lithnet / Password Protection for Active Directory/ Política predeterminada.

Por el momento, solo vamos a activar tres parámetros que prohibirán el uso del nombre de usuario, el nombre y los apellidos del usuario, así como las contraseñas prohibidas.

Abre los parámetros «Rechazar contraseñas que contengan el nombre de la cuenta del usuario» y «Rechazar contraseñas que contengan el nombre para mostrar del usuario». Para cada uno de ellos, activa el parámetro 1 y, a continuación, haz clic en «Aplicar» 2 y «Aceptar» 3.

Abre la opción «Rechazar contraseñas normalizadas que se encuentren en el almacén de palabras prohibidas» 1.

Active la configuración 1 y, a continuación, marque las casillas «Habilitar para operaciones de configuración de contraseña» 2 y «Habilitar para operaciones de cambio de contraseña» 3 si aún no lo ha hecho. A continuación, haga clic en «Aplicar» 4 y «Aceptar» 5.

Las dos casillas de selección permiten activar la opción al crear una cuenta y al cambiar la contraseña.

La política de grupo ya está configurada.

Vincule la política de grupo a la unidad organizativa «Controladores de dominio» 1, haga clic con el botón derecho del ratón sobre ella y seleccione «Vincular un objeto de política de grupo existente» 2.

Selecciona la política de grupo 1 y haz clic en «Aceptar» 2.

La política está vinculada a la unidad organizativa.

En el controlador de dominio, fuerce la actualización de las políticas de grupo con el comando gpupdate /force.

Probar Lithnet Password Protection for Active Directory

Para probar Lithnet Password Protection forActive Directory, lo haremos de la siguiente manera:

  • Desde el controlador de dominio
  • Desde un ordenador cliente

Esta es la política de contraseñas (PSO) aplicada al usuario Batman.

Desde el controlador de dominio con la consola «Usuarios y equipos» Active Directory

Haz clic con el botón derecho del ratón sobre el usuario 1 y selecciona «Restablecer contraseña» 2.

Introduce una contraseña que figure en la lista de contraseñas prohibidas; para «password», puedes probar con «password» y «P@ssw0rd».

Aparecerá un mensaje de error indicando que la contraseña no es válida.

Prueba desde un ordenador

Ahora vamos a probarlo desde un ordenador cliente, como si el usuario cambiara él mismo su contraseña o tuviera que cambiarla al iniciar sesión.

Como se puede ver en la captura de pantalla, introduzco la contraseña «P@ssw0rd».

Como se puede ver, la contraseña no es válida.

Los eventos de Lithnet Password Protection for Active Directory

En el controlador de dominio, abre el Visor de eventos y ve al registro «Aplicación», que se encuentra en «Registros de Windows».

Como se puede ver en la captura de pantalla siguiente, hay varias entradas de la aplicación LithnetPasswordProtection.

En esta misma captura, la línea seleccionada corresponde al intento de cambiar la contraseña en el cliente de Windows 10. En la descripción se puede leer que se ha rechazado, ya que la contraseña figura en la base de datos de contraseñas bloqueadas.

Para obtener más información sobre los distintos eventos: Registro de eventos y generación de informes · Wiki de lithnet/ad-password-protection

Configuración «avanzada» de Lithnet Password Protection for Active Directory

Ahora vamos a ver la configuración «avanzada».

Utilizar la base de datos de contraseñas «Have I Been Pwned»

Importar la base de datos de «Have I Been Pwned»

Para importar la base de datos, es necesario disponer de 40 GB de espacio libre en el servidor.

El objetivo es importar el hash NTLM de las contraseñas comprometidas; en el momento de redactar este tutorial, el archivo ocupa 20 GB descomprimido.

En esta página: Have I Been Pwned: Pwned Passwords, descarga la lista de contraseñas en formato NTML ordenada por hash.

Una vez descargado, descomprime el archivo, abre una ventana de PowerShell e introduce los comandos para importar los archivos:

Import-Module LithnetPasswordProtection
Import-CompromisedPasswordHashes -Filename "C:\tmp\pwned-passwords-ntlm-ordered-by-hash-v7\pwned-passwords-ntlm-ordered-by-hash-v7"

Adapta la ruta a tu configuración

Espera mientras se realiza la importación, que puede tardar entre 20 y 45 minutos, dependiendo del servidor.

Comprobar si una contraseña está comprometida

Es posible comprobar si una contraseña ha sido comprometida utilizando el cmdlet: Test-IsCompromisedPassword.

Test-IsCompromisedPassword -value iloveyou

Se puede observar que la contraseña «iloveyou» está comprometida, ya que el comando devuelve «True».

Comprobar si la contraseña de un usuario está comprometida

También es posible comprobar si el hash de la contraseña de un usuario está comprometido con el cmdlet: Test-IsADUserPasswordCompromised.

Test-IsADUserPasswordCompromised -upn [email protected]

En este caso, se puede ver que el hash de la contraseña «[email protected]» es conocido.

Una pequeña aclaración: el hecho de que el hash de la contraseña figure en la base de datos «Have I Been Pwned» no significa necesariamente que la combinación de nombre de usuario y contraseña esté comprometida; sin embargo, si se recupera el hash de la contraseña durante un inicio de sesión NTML, se podrá deducir cuál es su contraseña.

Existe un script que permite comprobar todos los usuarios de esteActive Directory sitio aquí: Audit existing passwords · lithnet/ad-password-protection Wiki (github.com)

Impedir el uso de contraseñas comprometidas

Es posible impedir el uso de contraseñas comprometidas activando el parámetro: «Reject normalized passwords found in the compromised password store».

Este parámetro funciona de la misma manera que en el caso de las contraseñas prohibidas.

Configurar la complejidad de la contraseña en función de su longitud

Lithnet Password Protection for también Active Directorypermite configurar la complejidad de la contraseña en función de su longitud.

Por ejemplo: si la contraseña tiene menos de 8 caracteres, debe incluir una letra, un número y un símbolo; si la contraseña tiene menos de 15 caracteres, es decir, entre 8 y 15, podrá estar compuesta por una letra y un número (sin símbolos) y, si la contraseña tiene más de 15 caracteres, no se aplicará ninguna complejidad específica.

El parámetro de política de grupo que hay que configurar es «Enable length-based complexity rules».


Lithnet Password Protection for Active Directoryes una solución interesante para reforzar la política de contraseñas, ya que permite crear un diccionario de contraseñas prohibidas.

A través de este artículo, también quiero dar las gracias al autor, Ryan Newington, por poner a disposición de forma gratuita esta herramienta.

Os invito además a visitar su perfil de GitHub, donde comparte otros programas.

Romain Drouche
Romain Drouche
Arquitecto de sistemas | MCSE: Infraestructura básica
Experto en infraestructura de TI con más de 15 años de experiencia en el sector. Actualmente, como Gerente de Proyectos de Sistemas y Redes y experto en Seguridad de Sistemas de Información (ISS), utilizo mi experiencia para garantizar la fiabilidad y seguridad de los entornos tecnológicos.

Deja un comentario