GNU/Linux >> Tutoriales Linux >  >> Cent OS

Complejidad de la contraseña PAM y sistema de crédito pam_cracklib en CentOS/RHEL

Esta publicación describe el sistema de crédito pam_cracklib de PAM en relación con la complejidad de la contraseña de PAM de Linux.

Resumen de PAM

Los Módulos de autenticación conectables (PAM) son un marco modular, central y flexible que se utiliza para administrar las políticas de autenticación del sistema y facilitar la autenticación de los usuarios. PAM proporciona una interfaz de programación de aplicaciones (API) general a la que los programas de concesión de privilegios se remiten para la autenticación de usuarios.

El flujo de autenticación de PAM es el siguiente:
Aplicación (inicio de sesión, ssh, sudo, su, ftp, etc.) -> PAM -> Fuente de autenticación (contraseña local, LDAP, Kerberos, etc.)

PAM separa las tareas de autenticación en cuatro grupos de administración:

  • Administración de cuentas – verifique el permiso del usuario para el servicio, la caducidad de la contraseña del usuario, etc.
  • Administración de autenticación – autenticación de usuario, credenciales de usuario, desafío/respuesta (contraseña), biometría.
  • Administración de contraseñas – facilita la gestión de contraseñas – cambio, actualizaciones, etc.
  • Administración de sesiones – tareas de conexión de servicio de usuario previas/posteriores, p. seguimiento de auditoría, montar el directorio de inicio del usuario, etc.

Módulo PAM pam_cracklib

Cuando se agrega a la pila de contraseñas de PAM, el módulo pam_cracklib realiza una verificación de seguridad de las contraseñas de usuario propuestas. El módulo llama a la rutina cracklib que compara las contraseñas con un diccionario de palabras conocidas (comunes, débiles, predeterminadas, etc.) antes de realizar más comprobaciones de seguridad, como:

  • Palíndromo :¿Es la nueva contraseña un palíndromo, es decir, una cadena que se lee igual hacia adelante y hacia atrás, p. radar, señora, etc.
  • Solo cambio de caso :¿La nueva contraseña es igual a la anterior con solo un cambio de mayúsculas y minúsculas?
  • Similar :¿La nueva contraseña es demasiado similar a la anterior?
  • Sencillo :¿La nueva contraseña es demasiado pequeña? Esto está controlado por 6 argumentos:minlen , repetición máxima de clase , crédito , ucredit , crédito y ocredit .
  • Rotado :¿Es la nueva contraseña una versión rotada de la contraseña anterior?
  • Ya usado :¿Se ha utilizado la contraseña anteriormente?
  • Los mismos caracteres consecutivos :Comprobación opcional de los mismos caracteres consecutivos.
  • Contiene el nombre de usuario :Verifique opcionalmente si la contraseña contiene el nombre del usuario.

Cuando se habilita sin argumentos, las opciones/valores predeterminados de verificación de fuerza de pam_cracklib ayudan a garantizar que se acepten contraseñas lo suficientemente seguras.

El sistema de crédito pam_cracklib

El módulo pam_cracklib ofrece varias opciones de las cuales las siguientes controlan directamente la complejidad de la contraseña:

  • minlen – Longitud mínima de la contraseña
  • crédito – Número mínimo de letras minúsculas
  • ucredit – Número mínimo de letras mayúsculas
  • crédito – Número mínimo de caracteres numéricos
  • ocredito – Número mínimo de caracteres no alfanuméricos

Los minlen La opción define el tamaño mínimo aceptable para una nueva contraseña. Sin embargo, además del número de caracteres, se otorga un crédito (es decir, una puntuación) por cada tipo de carácter diferente utilizado, es decir, inferior, superior, dígito, otro. El valor de crédito de cada tipo de carácter utilizado cuenta para alcanzar el valor mínimo definido.

lcredito=N :(N>=0) Este es el crédito máximo por tener letras minúsculas en la nueva contraseña. Si tiene menos de o N letras minúsculas, cada letra contará +1 para alcanzar el valor minlen actual. El valor predeterminado para lcredit es 1, que es el valor recomendado para minlen menos de 10.

(N <0) Este es el número mínimo de letras minúsculas que se deben cumplir para una nueva contraseña.

ucredit=N :(N>=0) Este es el crédito máximo por tener letras mayúsculas en la nueva contraseña. Si tiene menos de o N letras mayúsculas, cada letra contará +1 para alcanzar el valor mínimo actual. El valor predeterminado para ucredit es 1, que es el valor recomendado para minlen menos de 10.

(N <0) Este es el número mínimo de letras mayúsculas que se deben cumplir para una nueva contraseña.

crédito=N (N>=0) Este es el crédito máximo por tener dígitos en la nueva contraseña. Si tiene menos de o N dígitos, cada dígito contará +1 para alcanzar el valor mínimo actual. El valor predeterminado para dcredit es 1, que es el valor recomendado para minlen menos de 10.

(N <0) Este es el número mínimo de dígitos que se deben cumplir para una nueva contraseña.

ocredito=N :(N>=0) Este es el crédito máximo por tener otros caracteres en la nueva contraseña. Si tiene menos o N caracteres más, cada carácter contará +1 para alcanzar el valor mínimo actual. El valor predeterminado para ocredit es 1, que es el valor recomendado para minlen menos de 10.

(N <0) Este es el número mínimo de otros caracteres que deben cumplirse para una nueva contraseña.

Cuando se utiliza el sistema de crédito PAM, es muy posible que se acepte una contraseña con una longitud inferior a la definida por minlen, es decir, la contraseña también puede contener caracteres de uno o más tipos de caracteres:inferior, superior, dígito, otro.

Considere la siguiente configuración de pam_cracklib:

--/etc/pam.d/system-auth-ac:
...
password required pam_cracklib.so minlen=12 lcredit=1 ucredit=1 dcredit=2 ocredit=1
...

El siguiente es el cálculo del crédito de la contraseña de pam_cracklib para una contraseña de usuario de “@1Bcdef2”:

  • @1Bcdef2:8 créditos otorgados, es decir, uno para cada personaje
  • @:1 crédito otorgado (otro)
  • 1,2:1 crédito otorgado (dígito)
  • B:1 crédito otorgado (superior)
  • cdef:1 crédito otorgado (inferior)

8 + 4 =12 (minlen)

Dada la cantidad y el tipo de caracteres utilizados en la contraseña anterior, el sistema acepta una longitud mínima de contraseña de 8 caracteres. Tenga en cuenta que también se aceptará una contraseña que contenga solo 11 letras minúsculas, es decir:

  • abcdefghijk:11 créditos otorgados, uno para cada personaje
  • abcdefghijk:0 crédito otorgado (otro)
  • abcdefghijk:0 crédito otorgado (dígito)
  • abcdefghijk:0 crédito otorgado (superior)
  • abcdefghijk:1 crédito otorgado (inferior)

11 + 1 =12 (minlen)

Los siguientes son ejemplos detallados de contraseñas aceptadas y no aceptadas:

minlen Contraseña Longitud de la contraseña (caracteres) Crédito ¿Contraseña aceptada?
10 qwertasdf 9 9 (caracteres) + 1 (inferior) =10
12 qwertasdfgz 11 11 (caracteres) + 1 (inferior) =12
14 qwertasdfgzxc 13 13 (caracteres) + 1 (inferior) =14
14 qwertasdf1$ 11 11 (caracteres) + 1 (inferior) + 1 (dígito) + 1 (otro) =14
10 qwertasd 8 8 (caracteres) + 1 (inferior) =  9 No
12 qwertasdfg 10 10 (caracteres) + 1 (inferior) =11 No
14 qwertasdfgzx 12 12 (caracteres) + 1 (inferior) =13 No

Reforzar la complejidad de la contraseña con el sistema de crédito pam_cracklib

En todos los ejemplos hasta ahora, tenga en cuenta que el uso del sistema de crédito en realidad no impone la complejidad de la contraseña. Para hacer cumplir la complejidad de la contraseña, especifique valores negativos para las opciones de pam_cracklib lcredit, ucredit, dcredit, ocredit. Al especificar valores negativos, no se otorgan créditos por el uso de caracteres inferiores, superiores, dígitos y otros; sin embargo, la contraseña aún debe contener caracteres de cada uno de los grupos de caracteres especificados.

Considere la siguiente configuración de pam_cracklib:

--/etc/pam.d/system-auth-ac:
...
password required pam_cracklib.so minlen=8 lcredit=-1 ucredit=-1 dcredit=-2 ocredit=-1
...

Con lo anterior, una contraseña de usuario exitosa debe...

  • ser de al menos 8 caracteres de longitud y
  • contener al menos 1 carácter en minúscula y
  • contener al menos 1 carácter en mayúscula y
  • contener al menos 2 dígitos y
  • contener al menos 1 carácter más

Nota :CentOS/RHEL 7 usa pam_pwquality módulo en lugar de pam_cracklib y el módulo pam_pwquality es compatible con versiones anteriores con sus opciones.

PAM_PWQUALITY(8) System Manager's Manual PAM_PWQUALITY(8)

NAME
pam_pwquality - PAM module to perform password quality checking

SYNOPSIS
pam_pwquality.so [...]

DESCRIPTION
This module can be plugged into the password stack of a given service to provide some plug-in strength-checking for passwords. 
The code was originally based on pam_cracklib module and the module is backward compatible with its options.


Cent OS
  1. Restablecer contraseña de root en CentOS 7 / RHEL 7

  2. Cómo restablecer una contraseña de root olvidada RHEL / CentOS 7

  3. Cómo configurar el sistema CentOS/RHEL 6 para que no se utilicen las últimas 3 contraseñas utilizadas

  4. Reparación de problemas del sistema de archivos en el arranque en CentOS/RHEL 7 y 8

  5. Cómo configurar la caducidad de la contraseña y los requisitos de complejidad en CentOS/RHEL

RHEL 8 / CentOS 8 recuperar contraseña raíz

Cómo instalar ONLYOFFICE en Red Hat Linux (RHEL) y CentOS

Cómo instalar Cockpit en CentOS 8 / RHEL 8

Cómo comprobar y reparar el sistema de archivos XFS en RHEL/Centos

CentOS / RHEL 7:Cómo restablecer la contraseña de root

CentOS / RHEL 7:proceso de arranque