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

El hombre, como sabes, es una criatura perezosa. Y aún más cuando se trata de elegir una contraseña segura.

Creo que cada uno de los administradores ha encontrado el problema de usar contraseñas ligeras y estándar. Este fenómeno a menudo se encuentra entre los niveles superiores de la gestión de la empresa. Sí, sí, se encuentra entre quienes tienen acceso a información clasificada o comercial y sería extremadamente indeseable eliminar las consecuencias de la fuga / piratería de contraseñas y otros incidentes.

En mi práctica, hubo un caso en que, en un dominio de Active Directory con una política de contraseña habilitada, los contadores de personas de manera independiente llegaron a la idea de que una contraseña del formulario "Pas $ w0rd1234" funciona perfectamente para los requisitos de la política. La consecuencia fue el uso generalizado de esta contraseña en todas partes. A veces difería solo en un conjunto de números.

Realmente quería poder no solo incluir una política de contraseña y definir un conjunto de caracteres, sino también filtrar por diccionario. Para excluir la posibilidad de utilizar este tipo de contraseña.

Microsoft amablemente nos informa a través del enlace que cualquiera que sepa cómo mantener el compilador correctamente, IDE y sepa cómo pronunciar C ++, puede compilar y usar la biblioteca que necesita como mejor le parezca. Su humilde servidor no es capaz de esto, así que tuve que buscar una solución preparada.

Después de una larga hora de búsqueda, se revelaron a la vista dos opciones para resolver el problema. Por supuesto, estoy hablando de la solución OpenSource. Después de todo, opciones pagas, desde y hacia.

Opción número 1. OpenPasswordFilter

No hay confirmaciones ya en el año 2. El instalador nativo funciona en cualquier otro momento; Crea su propio servicio por separado. Al actualizar el archivo de contraseña, la DLL no recoge automáticamente el contenido modificado, debe detener el servicio, esperar un tiempo de espera, editar el archivo e iniciar el servicio.

¡No hielo!

Opción número 2. PassFiltEx

El proyecto está activo, vivo y ni siquiera necesita patear un cuerpo frío.

Instalar un filtro implica copiar dos archivos y crear múltiples entradas de registro. El archivo de contraseña no está bloqueado, es decir, es editable y, según la idea del autor del proyecto, simplemente se lee una vez por minuto. Además, con la ayuda de entradas de registro adicionales, también puede configurar tanto el filtro como los matices de la política de contraseña.

Entonces
Dado: dominio Active Directory test.local
Estación de trabajo de prueba de Windows 8.1 (insignificante para las condiciones de la tarea)
Filtro de contraseña PassFiltEx

  • Descargue la última versión de PassFiltEx desde el enlace
  • Copie PassFiltEx.dll a C: \ Windows \ System32 (o % SystemRoot% \ System32 ).
    Copie PassFiltExBlacklist.txt en C: \ Windows \ System32 (o % SystemRoot% \ System32 ). Si es necesario, complételo con nuestras plantillas.


  • Edición de la rama del registro: HKLM \ SYSTEM \ CurrentControlSet \ Control \ Lsa => Paquetes de notificaciones
    Agregue PassFiltEx al final de la lista. (No se requiere extensión). La lista completa de paquetes utilizados para la verificación se verá así " rassfm scecli PassFiltEx ".


  • Reiniciamos el controlador de dominio.
  • Repetimos el procedimiento anterior para todos los controladores de dominio.

También puede agregar las siguientes entradas de registro, lo que le brinda más flexibilidad al usar este filtro:

Sección: HKLM \ SOFTWARE \ PassFiltEx - se crea automáticamente.

  • HKLM \ SOFTWARE \ PassFiltEx \ BlacklistFileName , REG_SZ, Predeterminado: PassFiltExBlacklist.txt

    BlacklistFileName : le permite especificar una ruta personalizada al archivo con plantillas de contraseña. Si esta entrada del registro está vacía o no existe, se utiliza la ruta predeterminada, es decir, % SystemRoot% \ System32 . Incluso puede especificar la ruta de red, PERO debe recordar que el archivo de plantilla debe tener permisos claros para leer, escribir, eliminar y cambiar.
  • HKLM \ SOFTWARE \ PassFiltEx \ TokenPercentageOfPassword , REG_DWORD, Predeterminado: 60

    TokenPercentageOfPassword : le permite especificar el porcentaje de ocurrencia de la máscara en la nueva contraseña. El valor predeterminado es 60%. Por ejemplo, si se especifica un porcentaje de ocurrencia de 60 y la línea de starwars está en el archivo de plantilla, ¡la contraseña es Starwars1! será rechazado, mientras que la contraseña starwars1! DarthVader88 será aceptada, ya que el porcentaje de apariciones de la línea en la contraseña es inferior al 60%
  • HKLM \ SOFTWARE \ PassFiltEx \ RequireCharClasses , REG_DWORD, Predeterminado: 0

    RequireCharClasses : mejora los requisitos de contraseña en comparación con los requisitos de complejidad de contraseña estándar de ActiveDirectory. Los requisitos de complejidad incorporados requieren 3 de 5 posibles diferentes tipos de caracteres: mayúsculas, minúsculas, dígitos, especiales y Unicode. Con esta entrada de registro, puede establecer los requisitos de complejidad de su contraseña. El valor que se puede especificar es un conjunto de bits, cada uno de los cuales es una potencia correspondiente de dos.

    Es decir: 1 = minúscula, 2 = mayúscula, 4 = dígito, 8 = carácter especial y 16 = carácter Unicode.

    Por lo tanto, con un valor de 7, los requisitos serán "Mayúsculas Y minúsculas Y dígitos", y con un valor de 31, "Mayúsculas Y minúsculas Y dígitos Y caracteres especiales Y caracteres especiales Unicode".

    Incluso puede combinar - 19 = "Mayúsculas Y minúsculas Y caracteres Unicode".


Una serie de reglas al compilar un archivo de plantilla:

  • Los patrones no distinguen entre mayúsculas y minúsculas. Por lo tanto, la entrada en el archivo starwars y StarWarS se determinará como el mismo valor.
  • El archivo de la lista negra se vuelve a leer cada 60 segundos, por lo que puede editarlo fácilmente, después de un minuto, el filtro ya utilizará los nuevos datos.
  • Actualmente no hay soporte Unicode para la validación de patrones. Es decir, puede 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 Unicode.
  • Es aconsejable no permitir líneas en blanco en el archivo de plantilla. En la depuración, un error es visible cuando se cargan los datos del archivo. El filtro funciona, pero ¿por qué los adicionales?

Para la depuración, hay archivos por lotes en el archivo que le permiten crear un registro y luego analizarlo utilizando, por ejemplo, Microsoft Message Analyzer.

Este filtro de contraseña utiliza el seguimiento de eventos para Windows.

El proveedor de ETW para este filtro de contraseña es 07d83223-7594-4852-babc-784803fdf6c5 . Entonces, por ejemplo, puede configurar el seguimiento de eventos después del próximo reinicio:

logman create trace autosession\PassFiltEx -o %SystemRoot%\Debug\PassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets 

El seguimiento comenzará después del próximo reinicio del sistema. Para parar:
logman stop PassFiltEx -ets && logman delete autosession\PassFiltEx -ets
Todos estos comandos se especifican en los scripts StartTracingAtBoot.cmd y StopTracingAtBoot.cmd .

Para una verificación única del filtro, puede usar StartTracing.cmd y StopTracing.cmd .

Para leer convenientemente el escape de depuración de este filtro en Microsoft Message Analyzer, se recomienda utilizar la siguiente configuración:





Cuando detiene el registro y analiza en Microsoft Message Analyzer , todo se ve así:



Aquí puede ver que hubo un intento de establecer una contraseña para el usuario; la palabra mágica SET en la depuración nos informa sobre esto. Y la contraseña fue rechazada debido a su presencia en el archivo de plantilla y más del 30% de coincidencia en el texto ingresado.

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



Hay algunos inconvenientes para el usuario final. Cuando intenta cambiar la contraseña que cae en la lista de archivos de plantilla, el mensaje en la pantalla no difiere en inteligencia y perspicacia del mensaje estándar cuando no se pasa la política de contraseña.



Por lo tanto, esté preparado para llamadas y gritos: "Ingresé la contraseña como debería, pero no funciona".

Resumen


Esta biblioteca le permite prohibir el uso de contraseñas simples o estándar en el dominio de Active Directory. Di no! contraseñas de la forma: "P @ ssw0rd", "Qwerty123", "ADm1n098".
Sí, por supuesto, los usuarios lo amarán aún más por su preocupación por su seguridad y la necesidad de encontrar contraseñas furiosas. Y, tal vez, la cantidad de llamadas y solicitudes de ayuda con la contraseña que agregará. Pero la seguridad tiene un precio.

Enlaces a recursos utilizados:

Artículo de Microsoft sobre la biblioteca de filtros de contraseña personalizada: Filtros de contraseña
PassFiltEx: PassFiltEx
Enlace de lanzamiento: último lanzamiento
Listas de contraseñas:
Listas de DanielMiessler: Enlace.
Lista de palabras de weakpass.com: Enlace.
Lista de palabras del repositorio berzerk0: Enlace.
Analizador de mensajes de Microsoft: Analizador de mensajes de Microsoft.

Source: https://habr.com/ru/post/446336/


All Articles