Securizar la gestión de claves en Linux mediante PAM

Linux-PAM es un módulo del kernel Linux que permite configurar y personalizar el modo en el que se generan y mantienen las claves de usuarios dentro del sistema. En esta entrada vamos a centrarnos en como conseguir que los usuarios de un sistema Linux tengan claves seguras.

Básicamente, lo que vamos a hacer es forzar al usuario a que cumpla ciertos requisitos a la hora de crear o cambiar una clave, por ejemplo que la clave tenga un mínimo de caracteres, que contenga símbolos, números o letras mayúsculas, evitar que repitan las mismas claves, etc.

En sistemas CentOS, RHEL y derivados, esta gestión la hacemos dentro del fichero de configuración de PAM /etc/pam.d/system-auth, en Debian creo recordar que era en el fichero /etc/pam.d/common-password.

En CentOS, encontraremos una línea que contendrá lo siguiente (entre otros parámetros):

password    requisite     pam_cracklib.so .......

En dicha línea podemos añadir los parámetros correspondientes para securizar el sistema de claves, en el siguiente ejemplo hemos añadido que el mínimo de caracteres sea 6 (minlen), que sea obligatorio un símbolo (ocredit) y una letra mayúscula (ucredit):

password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=6 ocredit=-1 ucredit=-1

Otros parámetros son por ejemplo remember=N que indica el histórico de claves a revisar para evitar que repitan la misma clave. Recomiendo revisar la documentación de este módulo en www.kernel.org para exprimir y encontrar todas sus posibilidades.

Como requisito hay que tener el siguiente paquete instalado en el sistema:

cracklib.i386 : biblioteca para el control de las contraseñas.

NOTA: Hay que tener en cuenta que todos estos parámetros no tienen efecto cuando cambiamos las claves con el usuario root, solo se aplican cuando se cambian desde el resto de usuarios.