Cómo prohibir las contraseñas estándar y hacer que todos te odien

El ser humano, como se sabe, es una criatura perezosa.
Y aún más cuando se trata de la cuestión de elegir una contraseña segura.

Creo que cada administrador se ha enfrentado alguna vez al problema de usar contraseñas sencillas y estándar. Este fenómeno es frecuente entre los altos directivos de la empresa. Sí, entre aquellos que tienen acceso a información confidencial o comercial y sería extremadamente indeseable gestionar las consecuencias de una filtración/hackeo de contraseña y los posteriores incidentes.

En mi experiencia, hubo un caso en el dominio de Active Directory con una política de contraseñas habilitada en el que los contables llegaron a la conclusión de que una contraseña tipo «Pas$w0rd1234» cumplía perfectamente con los requisitos de la política. Como consecuencia, esta contraseña se utilizaba en todas partes. A veces solo variaba en la combinación de números.

Tenía muchas ganas de poder no solo habilitar la política de contraseñas y definir un conjunto de caracteres, sino también filtrar según un diccionario. Para excluir la posibilidad de usar este tipo de contraseñas.

La empresa Microsoft amablemente nos informa a través de un enlace que cualquiera que sepa manejar correctamente un compilador, IDE y pronunciar correctamente C++, puede compilar y utilizar por su cuenta la biblioteca necesaria. Su servidor al servicio de ustedes no es capaz de hacer eso, así que tuvo que buscar una solución lista.

Después de una larga hora de búsqueda, se presentaron dos opciones para resolver el problema. Por supuesto, hablo de una solución de código abierto. Porque las opciones de pago son infinitas.

Opción №1. OpenPasswordFilter

No ha habido commits durante unos 2 años. El instalador original funciona de vez en cuando, hay que corregirlo a mano. Crea su propio servicio separado. Al actualizar el archivo de contraseñas, la DLL no capta automáticamente el contenido modificado, es necesario detener el servicio, esperar el tiempo de espera, editar el archivo y volver a iniciar el servicio.

¡No está bien!

Opción №2. PassFiltEx

El proyecto está activo, vivo y ni siquiera hay que empujar su cuerpo frío.
La instalación del filtro consiste en copiar dos archivos y crear varias entradas en el registro. El archivo de contraseñas no está en modo de solo lectura, es decir, es accesible para su edición y, según la intención del autor del proyecto, se lee simplemente una vez por minuto. Además, mediante entradas adicionales en el registro se puede realizar una configuración adicional tanto del propio filtro como de los matices de la política de contraseñas.

Entonces.
Dominio de Active Directory test.local
estación de trabajo Windows 8.1 (para la condición del problema — no es relevante)
filtro de contraseñas PassFiltEx

  • Descargamos la última versión en el enlace PassFiltEx
  • Copiamos PassFiltEx.dll en C:WindowsSystem32 (o %SystemRoot%System32).
    Copiamos PassFiltExBlacklist.txt en C:WindowsSystem32 (o %SystemRoot%System32). Si es necesario, lo complementamos con nuestras propias plantillas
    Cómo prohibir las contraseñas estándar y hacer que todos te odien
  • Editamos la rama del registro: HKLMSYSTEMCurrentControlSetControlLsa => Paquetes de Notificación
    Añadimos PassFiltEx al final de la lista. (No es necesario especificar la extensión.) La lista completa de paquetes utilizados para la verificación se verá así «rassfm scecli PassFiltEx«.
    Cómo prohibir las contraseñas estándar y hacer que todos te odien
  • Reiniciamos el controlador de dominio.
  • Repetimos el procedimiento descrito anteriormente para todos los controladores de dominio.

También se pueden agregar las siguientes entradas en el registro, lo que proporciona una mayor flexibilidad en el uso de este filtro:

Sección: HKLMSOFTWAREPassFiltEx — se crea automáticamente.

  • HKLMSOFTWAREPassFiltExBlacklistFileName, REG_SZ, Predeterminado: PassFiltExBlacklist.txt

    BlacklistFileName — permite especificar una ruta personalizada al archivo con las plantillas de contraseñas. Si esta entrada del registro tiene un valor vacío o no existe, se utiliza la ruta predeterminada, a saber — %SystemRoot%System32. Se puede indicar incluso una ruta de red, PERO hay que recordar que el archivo de plantillas debe tener permisos claros para lectura, escritura, eliminación y modificación.

  • HKLMSOFTWAREPassFiltExTokenPercentageOfPassword, REG_DWORD, Predeterminado: 60

    TokenPercentageOfPassword — permite especificar el porcentaje de coincidencia de la máscara en la nueva contraseña. Por defecto, el valor es del 60%. Por ejemplo, si se indica un porcentaje de coincidencia del 60 y en el archivo de plantillas hay una línea starwars, entonces la contraseña Starwars1! será rechazada, mientras que la contraseña starwars1!DarthVader88 será aceptada, ya que el porcentaje de coincidencia de la cadena en la contraseña es inferior al 60%

  • HKLMSOFTWAREPassFiltExRequireCharClasses, REG_DWORD, Predeterminado: 0

    RequireCharClasses — permite ampliar los requisitos de contraseñas en comparación con los requisitos de complejidad estándar de ActiveDirectory. Los requisitos de complejidad integrados exigen 3 de 5 tipos diferentes de caracteres: mayúsculas, minúsculas, números, caracteres especiales y Unicode. Mediante esta entrada de registro, se pueden establecer sus propios requisitos de complejidad de contraseñas. El valor que se puede especificar es un conjunto de bits, cada uno correspondiente a una potencia de dos.
    Es decir, 1 = minúsculas, 2 = mayúsculas, 4 = número, 8 = símbolo especial y 16 = símbolo Unicode.
    Así, con un valor de 7, los requisitos serán “Mayúsculas Y minúsculas Y número”, y con un valor de 31 — “Mayúsculas Y minúsculas Y número Y símbolo especial Y símbolo Unicode”.
    Incluso se puede combinar: 19 = “Mayúsculas Y minúsculas Y símbolo Unicode”.

  • Cómo prohibir las contraseñas estándar y hacer que todos te odien

Conjunto de reglas para crear archivos de plantillas:

  • Las plantillas no son sensibles a mayúsculas y minúsculas. Por lo tanto, la entrada en el archivo starwars y StarWarS se considerará como el mismo valor.
  • El archivo de la lista negra se vuelve a leer cada 60 segundos, de modo que se puede editar sin problemas, y después de un minuto, los nuevos datos ya se utilizarán en el filtro.
  • Actualmente no hay soporte para Unicode en la verificación de patrones. Es decir, se pueden usar caracteres Unicode en las contraseñas, pero el filtro no funcionará. Esto no es crítico, porque no he visto usuarios que usen contraseñas en Unicode.
  • Se recomienda no permitir líneas vacías en el archivo de plantillas. En el depurador se verá el error cuando se carguen datos del archivo. El filtro funciona, pero ¿para qué tener excepciones innecesarias?

Para depurar, se incluyen scripts que permiten crear un registro y luego analizarlo con, por ejemplo, Microsoft Message Analyzer.
Este filtro de contraseñas utiliza Event Tracing for Windows.

El proveedor de ETW para este filtro de contraseñas es 07d83223-7594-4852-babc-784803fdf6c5. Así, por ejemplo, se puede configurar el seguimiento de eventos después de reiniciar el siguiente:
logman create trace autosessionPassFiltEx -o %SystemRootbugPassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets

El seguimiento se iniciará después del siguiente reinicio del sistema. Para detener:
logman stop PassFiltEx -ets && logman delete autosessionPassFiltEx -ets
Todos estos comandos están indicados en los scripts StartTracingAtBoot.cmd y StopTracingAtBoot.cmd.

Para una verificación única del funcionamiento del filtro, se puede utilizar StartTracing.cmd y StopTracing.cmd.
Para leer cómodamente la salida de depuración de este filtro en Microsoft Message Analyzer se recomienda utilizar las siguientes configuraciones:

Cómo prohibir las contraseñas estándar y hacer que todos te odien

Cómo prohibir las contraseñas estándar y hacer que todos te odien

Al detener el registro y el análisis en Microsoft Message Analyzer todo se ve aproximadamente de esta manera:

Cómo prohibir las contraseñas estándar y hacer que todos te odien

Aquí se observa que hubo un intento de establecer una contraseña para el usuario, lo que nos indica la palabra mágica SET en la depuración. Y la contraseña fue rechazada debido a que estaba en el archivo de plantillas y tenía más del 30% de coincidencia en el texto ingresado.

En un intento exitoso de cambiar la contraseña, vemos lo siguiente:

Cómo prohibir las contraseñas estándar y hacer que todos te odien

Hay cierta incomodidad para el usuario final. Al intentar cambiar una contraseña que figura en la lista del archivo de plantillas, el mensaje en pantalla no es más inteligente ni ingenioso que el mensaje estándar que se muestra al no cumplir con la política de contraseñas.

Cómo prohibir las contraseñas estándar y hacer que todos te odien

Por lo tanto, prepárese para las llamadas y gritos: «He introducido la contraseña correctamente, pero no funciona.»

Resultado.

Esta biblioteca permite prohibir el uso de contraseñas simples o estándar en el dominio de Active Directory. Digamos «No!» a contraseñas como: «P@ssw0rd», «Qwerty123», «ADm1n098».
Sí, sin duda, los usuarios te querrán aún más por esta preocupación por su seguridad y la necesidad de pensar en contraseñas complejas. Y, posiblemente, el número de llamadas y solicitudes de ayuda con contraseñas aumentará. Pero la seguridad tiene un precio.

Enlaces a los recursos utilizados:
Artículo de Microsoft sobre la biblioteca personalizada del filtro de contraseñas: Filtros de Contraseña
PassFiltEx: PassFiltEx
Enlace a la versión: Última Versión
Listas de contraseñas:
Listas de DanielMiessler: Enlace.
Lista de palabras de weakpass.com: Enlace.
Lista de palabras del repositorio de berzerk0: Enlace.
Microsoft Message Analyzer: Microsoft Message Analyzer.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster