¡Hola de nuevo! Mañana comienzan las clases en un nuevo grupo del curso , por lo que publicamos un artículo útil sobre el tema.

En el tutorial anterior, hablamos sobre cómo usar pam_cracklib, para complicar las contraseñas en los sistemas o CentOS. En Red Hat 7 pam_pwquality reemplazó cracklib como pam como módulo predeterminado para la verificación de contraseñas. Este módulo pam_pwquality también se admite en Ubuntu y CentOS, así como en muchos otros sistemas operativos. Este módulo facilita la creación de políticas de contraseñas para asegurar que los usuarios cumplan con sus estándares de complejidad de contraseñas.
Durante mucho tiempo, el enfoque común sobre las contraseñas fue obligar al usuario a utilizar letras en mayúsculas y minúsculas, números u otros símbolos. Estas reglas básicas de complejidad de contraseñas han sido promovidas activamente en los últimos diez años. Ha habido muchas discusiones sobre si esto es una buena práctica o no. El principal argumento en contra de establecer requisitos tan complejos fue que los usuarios anotaban las contraseñas en papeles y las almacenaban de manera insegura.
Otra política que ha sido recientemente cuestionada obliga a los usuarios a cambiar sus contraseñas cada x días. Se han realizado algunas investigaciones que demuestran que esto también perjudica la seguridad.
Se han escrito muchos artículos sobre estas discusiones que justifican uno u otro punto de vista. Pero eso no es lo que vamos a discutir en este artículo. Este artículo hablará sobre cómo establecer correctamente la complejidad de la contraseña, en lugar de gestionar la política de seguridad.
Parámetros de la política de contraseñas
A continuación verán los parámetros de la política de contraseñas y una breve descripción de cada uno de ellos. Muchos son similares a los parámetros en el módulo cracklib. Este enfoque facilita la portabilidad de sus políticas desde un sistema antiguo.
- difok – Número de caracteres en su nueva contraseña que NO deben estar presentes en su antigua contraseña. (Por defecto 5)
- minlen – Longitud mínima de la contraseña. (Por defecto 9)
- ucredit – Número máximo de créditos por usar letras en mayúscula (si el parámetro > 0), o el número mínimo requerido de letras en mayúscula (si el parámetro < 0). Por defecto 1.
- lcredit — Número máximo de créditos para el uso de caracteres en minúscula (si el parámetro > 0), o número mínimo requerido de caracteres en minúscula (si el parámetro < 0). Por defecto 1.
- dcredit — Número máximo de créditos para el uso de dígitos (si el parámetro > 0), o número mínimo requerido de dígitos (si el parámetro < 0). Por defecto 1.
- ocredit — Número máximo de créditos para el uso de otros símbolos (si el parámetro > 0), o número mínimo requerido de otros símbolos (si el parámetro < 0). Por defecto 1.
- minclass – Establece el número requerido de clases. Las clases incluyen los parámetros mencionados anteriormente (caracteres en mayúscula, minúscula, dígitos, otros símbolos). Por defecto 0.
- maxrepeat – Número máximo de repeticiones de un carácter en la contraseña. Por defecto 0.
- maxclassrepeat — Número máximo de caracteres consecutivos en una misma clase. Por defecto 0.
- gecoscheck – Verifica si la contraseña contiene alguna palabra de las cadenas GECOS del usuario. (Información del usuario, es decir, nombre real, ubicación, etc.). Por defecto 0 (apagado).
- dictpath – Ruta a los diccionarios cracklib.
- badwords – Palabras separadas por espacio que están prohibidas en las contraseñas (nombre de la empresa, la palabra 'contraseña', etc.).
Si el concepto de créditos suena extraño, no te preocupes, es normal. Hablaremos de esto con más detalle en las siguientes secciones.
Configuración de la política de contraseñas
Antes de comenzar a editar los archivos de configuración, es buena práctica anotar previamente la política básica de contraseñas. Por ejemplo, utilizaremos las siguientes reglas de complejidad:
- La contraseña debe tener una longitud mínima de 15 caracteres.
- El mismo carácter no debe repetirse más de dos veces en la contraseña.
- Las clases de caracteres en la contraseña pueden repetirse hasta cuatro veces.
- La contraseña debe contener caracteres de cada clase.
- La nueva contraseña debe tener 5 nuevos caracteres en comparación con la anterior.
- Activar la verificación GECOS.
- Prohibir las palabras 'password, pass, word, putorius'
Ahora que hemos establecido la política, podemos editar el archivo /etc/security/pwquality.conf, para reforzar los requisitos de complejidad de la contraseña. A continuación se muestra un ejemplo de archivo con comentarios 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 putoriusComo podrás notar, algunos parámetros en nuestro archivo son redundantes. Por ejemplo, el parámetro minclass es excesivo, ya que ya estamos utilizando al menos dos caracteres de la clase, usando los campos [u,l,d,o]credit. Nuestra lista de palabras que no se pueden usar también es excesiva, ya que hemos prohibido la repetición de cualquier clase 4 veces (todas las palabras en nuestra lista están escritas en minúsculas). Solo incluí estos parámetros para demostrar cómo usarlos para configurar la política de contraseñas.
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 en .
Otra cosa extraña que quizás haya notado es que los campos [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 el uso de un carácter en su contraseña. Si el campo contiene un número negativo, significa que se requiere una cierta cantidad.
¿Qué son los créditos (credit)?
Los llamo créditos, ya que eso describe mejor su propósito. Si el valor del parámetro es mayor que 0, se suma la cantidad de 'créditos por caracteres' equivalente a 'x' a la longitud de la contraseña. Por ejemplo, si todos los parámetros (u,l,d,o)credit se establecen en 1 y la longitud de la contraseña requerida es 6, entonces necesitará 6 caracteres para cumplir con el requisito de longitud, porque cada carácter mayúscula, minúscula, dígito u otro carácter le dará un crédito.
Si establece dcredit en 2, teóricamente podrá usar una contraseña de longitud 9 y obtener 2 créditos por dígitos, lo que haría que la longitud de la contraseña podría ser 10.
Mire este ejemplo. He establecido la longitud de la contraseña en 13, he establecido dcredit en 2 y todo lo demás en 0.
$ pwscore
Thisistwelve
Fallo en la verificación de calidad de la contraseña:
La contraseña es más corta que 13 caracteres
$ pwscore
Th1sistwelve
18Mi primera verificación falló porque la longitud de la contraseña era menor que 13 caracteres. La próxima vez cambié la letra “I” por el número “1” y obtuve dos créditos por dígitos, lo que hizo que la contraseña se igualara a 13.
Prueba de contraseña
Paquete libpwquality ofrece la funcionalidad descrita en el artículo. También incluye un programa pwscore, que está diseñado para comprobar la complejidad de la contraseña. Lo utilizamos anteriormente para verificar los créditos.
Utilidad pwscore lee de . Simplemente ejecute la herramienta y escriba su contraseña, dará un error o un valor de 0 a 100.
El indicador de calidad de la contraseña se relaciona con el parámetro minlen en el archivo de configuración. En general, un puntaje inferior a 50 se considera como "contraseña normal", y uno superior como "contraseña fuerte". Cualquier contraseña que pase las pruebas de calidad (especialmente la verificación forzada cracklib) debe resistir ataques de diccionario, y una contraseña con un puntaje superior a 50 con la configuración minlen por defecto incluso fuerza bruta ataques.
Conclusión
Configuración pwquality es fácil y simple en comparación con las molestias de utilizar cracklib la edición directa de archivos pam. En esta guía hemos cubierto todo lo que necesitarás para configurar políticas de contraseñas en Red Hat 7, CentOS 7 e incluso sistemas Ubuntu. También hemos hablado sobre el concepto de créditos, que rara vez se detalla, por lo que este tema a menudo ha permanecido confuso para quienes no han tenido contacto previo con él.
Fuentes:
Enlaces útiles:
Fuente: habr.com
