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.
Tabla de contenido
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 LithnetPasswordProtectionPara 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.
