Crear una política de contraseña en Linux

Hola de nuevo Las clases comenzarán mañana en el nuevo grupo del curso de Administrador de Linux , y en este sentido estamos publicando un artículo útil sobre el tema.



En el último tutorial, hablamos sobre cómo usar pam_cracklib para complicar las contraseñas en los sistemas Red Hat 6 o CentOS. En Red Hat 7, pam_pwquality reemplazó cracklib como el módulo de pam para la verificación de contraseña. El módulo pam_pwquality también pam_pwquality compatible con Ubuntu y CentOS, así como en muchos otros sistemas operativos. Este módulo facilita la creación de políticas de contraseña para garantizar que los usuarios acepten sus estándares de complejidad de contraseña.

Durante mucho tiempo, el enfoque habitual de las contraseñas fue obligar al usuario a utilizar mayúsculas y minúsculas, números u otros caracteres en ellas. Estas reglas básicas de complejidad de contraseña se han promovido activamente en los últimos diez años. Ha habido mucha discusión sobre si esto es una buena práctica o no. El argumento principal en contra de establecer condiciones tan difíciles fue que los usuarios escriben contraseñas en papel y las almacenan de forma insegura.

Otra política recientemente cuestionada obliga a los usuarios a cambiar sus contraseñas cada x días. Se han llevado a cabo varios estudios que han demostrado que esto también es perjudicial para la seguridad.

Se han escrito muchos artículos sobre el tema de estas discusiones que justifican este o aquel punto de vista. Pero esto no es lo que discutiremos en este artículo. Este artículo le dirá cómo configurar correctamente la complejidad de la contraseña y no administrar la política de seguridad.

Configuración de la política de contraseña

A continuación, verá la configuración de la política de contraseñas y una breve descripción de cada una de ellas. Muchos de ellos son similares a los parámetros en el módulo cracklib . Este enfoque facilita la transferencia de sus políticas desde el sistema anterior.

  • difok : el número de caracteres en su nueva contraseña que NO debe estar presente en su contraseña anterior. (El valor predeterminado es 5)
  • minlen : la longitud mínima de la contraseña. (El valor predeterminado es 9)
  • ucredit : el número máximo de créditos por usar caracteres en mayúscula (si parámetro> 0), o el número mínimo requerido de caracteres en mayúscula (si parámetro <0). El valor predeterminado es 1.
  • lcredit : el número máximo de créditos por usar caracteres en minúscula (si parámetro> 0), o el número mínimo requerido de caracteres en minúscula (si parámetro <0). El valor predeterminado es 1.
  • dcredit : el número máximo de créditos por usar dígitos (si parámetro> 0), o el número mínimo requerido de dígitos (si parámetro <0). El valor predeterminado es 1.
  • ocrédito : el número máximo de créditos por usar otros símbolos (si el parámetro> 0), o el número mínimo requerido de otros símbolos (si el parámetro <0). El valor predeterminado es 1.
  • minclass : establece el número de clases requeridas. Las clases incluyen los parámetros anteriores (mayúsculas, minúsculas, números, otros caracteres). El valor predeterminado es 0.
  • maxrepeat : la cantidad máxima de veces que se repite un carácter en una contraseña. El valor predeterminado es 0.
  • maxclassrepeat : el número máximo de caracteres consecutivos en una sola clase. El valor predeterminado es 0.
  • gecoscheck : comprueba si la contraseña contiene alguna palabra de las líneas GECOS del usuario. (Información del usuario, es decir, nombre real, ubicación, etc.) Predeterminado 0 (desactivado).
  • dictpath - Let a cracklib diccionarios.
  • malas palabras: palabras separadas por espacios que están prohibidas en las contraseñas (nombre de la empresa, palabra "contraseña", etc.).

Si el concepto de préstamos suena extraño, está bien, está bien. Hablaremos de esto con más detalle en las siguientes secciones.

Configuración de la política de contraseña

Antes de comenzar a editar archivos de configuración, es una buena práctica escribir previamente la política de contraseña básica. Por ejemplo, utilizaremos las siguientes reglas de complejidad:

  • La contraseña debe tener una longitud mínima de 15 caracteres.
  • En la contraseña, el mismo carácter no debe repetirse más de dos veces.
  • En una contraseña, las clases de caracteres se pueden repetir hasta cuatro veces.
  • La contraseña debe contener caracteres de cada clase.
  • La nueva contraseña debe tener 5 caracteres nuevos en comparación con la anterior.
  • Habilite la validación de GECOS.
  • Niegue las palabras "contraseña, pase, palabra, putorius"

Ahora, tan pronto como establezcamos la política, podemos editar el archivo /etc/security/pwquality.conf para fortalecer los requisitos de complejidad de la contraseña. A continuación se muestra un archivo de comentarios de ejemplo para una mejor comprensión.

 # Make sure 5 characters in new password are new compared to old password difok = 5 # Set the minimum length acceptable for new passwords minlen = 15 # Require at least 2 digits dcredit = -2 # Require at least 2 upper case letters ucredit = -2 # Require at least 2 lower case letters lcredit = -2 # Require at least 2 special characters (non-alphanumeric) ocredit = -2 # Require a character from every class (upper, lower, digit, other) minclass = 4 # Only allow each character to be repeated twice, avoid things like LLL maxrepeat = 2 # Only allow a class to be repeated 4 times maxclassrepeat = 4 # Check user information (Real name, etc) to ensure it is not used in password gecoscheck = 1 # Leave default dictionary path dictpath = # Forbid the following words in passwords badwords = password pass word putorius 

Como habrás notado, algunos parámetros en nuestro archivo son redundantes. Por ejemplo, el parámetro minclass redundante, ya que ya usamos al menos dos caracteres de la clase usando los campos de [u,l,d,o]credit . Nuestra lista de palabras que no se pueden usar también es redundante, ya que hemos prohibido la repetición de cualquier clase 4 veces (todas las palabras en nuestra lista están escritas en minúsculas). He incluido estas opciones solo para demostrar cómo usarlas para configurar una política de contraseña.
Una vez que haya creado su política, puede obligar a los usuarios a cambiar sus contraseñas la próxima vez que inicien sesión.

Otra cosa extraña que puede haber notado es que los campos de [u,l,d,o]credit contienen un número negativo. Esto se debe a que los números mayores o iguales a 0 darán crédito por usar el carácter en su contraseña. Si el campo contiene un número negativo, significa que se requiere una cierta cantidad.

¿Qué son los préstamos?

Los llamo préstamos, porque transmiten con precisión su propósito. Si el valor del parámetro es mayor que 0, agrega la cantidad de "créditos por caracteres" igual a "x" a la longitud de la contraseña. Por ejemplo, si todos los parámetros (u,l,d,o)credit establecidos en 1, y la longitud de contraseña requerida es 6, entonces necesitará 6 caracteres para satisfacer el requisito de longitud, porque cada carácter es mayúscula, minúscula, dígito u otro carácter le dará un préstamo

Si establece dcredit en 2, en teoría podría usar una contraseña con una longitud de 9 caracteres y obtener 2 créditos por caracteres para los números, y luego la contraseña ya puede ser 10.

Echa un vistazo a este ejemplo. Configuré la longitud de la contraseña en 13, configuré dcredit en 2 y todo lo demás en 0.

 $ pwscore Thisistwelve Password quality check failed: The password is shorter than 13 characters $ pwscore Th1sistwelve 18 

Mi primera comprobación falló porque la contraseña tenía menos de 13 caracteres. La próxima vez que cambié la letra "I" por el número "1" y recibí dos créditos por los números, lo que equivalía a la contraseña a 13.

Prueba de contraseña

El paquete libpwquality proporciona la funcionalidad descrita en el artículo. También viene con el programa pwscore , que está diseñado para verificar la complejidad de la contraseña. Lo usamos arriba para verificar préstamos.

La utilidad pwscore lee desde stdin . Simplemente ejecute la utilidad y escriba su contraseña, dará un error o un valor de 0 a 100.

El puntaje de calidad de la contraseña está relacionado con el parámetro minlen en el archivo de configuración. En general, un indicador de menos de 50 se considera como una "contraseña normal" y arriba como una "contraseña segura". Cualquier contraseña que pase los controles de calidad (especialmente los controles forzados cracklib ) debe resistir los ataques del diccionario, y una contraseña con una puntuación superior a 50 con la configuración predeterminada de minlen incluso tendrá un brute force .

Conclusión

Configurar pwquality es pwquality y fácil en comparación con los inconvenientes de usar cracklib con la edición directa de archivos pam . En esta guía, hemos cubierto todo lo que necesita para configurar políticas de contraseña en Red Hat 7, CentOS 7 e incluso en sistemas Ubuntu. También hablamos sobre el concepto de préstamos, que rara vez se escriben en detalle, por lo que este tema a menudo seguía siendo incomprensible para aquellos que no lo habían encontrado antes.

Fuentes:

página de manual de pwquality
Página del manual de pam_pwquality
pwscore man page

Enlaces utiles:

Elección de contraseñas seguras - Bruce Schneier
Lorrie Faith Cranor habla sobre sus estudios de contraseñas en CMU
La infame caricatura de xkcd sobre Entropía

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


All Articles