Configurar la Política de Contraseñas Local de Linux para Complejidad y Antigüedad
En este paso, aprenderá a fortalecer la seguridad de un sistema Linux configurando una política de contraseñas robusta. Una política de contraseñas fuerte es un control de seguridad fundamental que aplica dos aspectos críticos: complejidad y antigüedad (aging). Las reglas de complejidad aseguran que las contraseñas no sean fácilmente adivinables al requerir una mezcla de tipos de caracteres, mientras que las reglas de antigüedad obligan a los usuarios a cambiar sus contraseñas periódicamente, reduciendo el riesgo de credenciales comprometidas. Utilizará utilidades estándar de Linux para modificar archivos de configuración a nivel de sistema y aplicar estas políticas.
Primero, exploremos la complejidad de las contraseñas. En los sistemas modernos basados en Debian como Ubuntu, la calidad de la contraseña se gestiona mediante el módulo pam_pwquality. Su configuración se almacena en el archivo /etc/security/pwquality.conf.
Comencemos examinando la configuración predeterminada. Utilice el comando cat para ver el contenido del archivo de configuración. Usaremos grep para filtrar las líneas comentadas y las líneas vacías para que la salida sea más limpia.
grep -vE '^#|^$' /etc/security/pwquality.conf
Es posible que vea algunas configuraciones predeterminadas o que el archivo esté vacío de configuraciones activas. Ahora, vamos a aplicar una política más estricta. Necesitamos editar este archivo con privilegios de administrador, por lo que usaremos sudo con el editor nano.
sudo nano /etc/security/pwquality.conf
Agregue las siguientes líneas al archivo para aplicar nuestra nueva política. Estas configuraciones requieren que la contraseña tenga al menos 10 caracteres de longitud y contenga al menos un dígito, una letra mayúscula y una letra minúscula.
minlen = 10
dcredit = -1
ucredit = -1
lcredit = -1
Analicemos estas opciones:
minlen = 10: Establece la longitud mínima aceptable para la contraseña en 10 caracteres.
dcredit = -1: Requiere al menos un dígito. El número negativo significa "al menos uno".
ucredit = -1: Requiere al menos un carácter en mayúscula.
lcredit = -1: Requiere al menos un carácter en minúscula.
Después de agregar estas líneas, guarde el archivo y salga de nano presionando Ctrl+X, luego Y, y Enter.
Ahora, pasemos a configurar la antigüedad de la contraseña (password aging). Estas configuraciones definen la vida útil máxima y mínima de una contraseña. Los valores predeterminados para las cuentas de usuario nuevas se almacenan en /etc/login.defs.
Use grep para encontrar las configuraciones relevantes en este archivo.
grep -E 'PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE' /etc/login.defs
Verá los valores predeterminados, que a menudo se establecen en un número muy alto para PASS_MAX_DAYS, deshabilitando efectivamente la expiración.
## PASS_MAX_DAYS Maximum number of days a password may be used.
PASS_MAX_DAYS 99999
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
PASS_MIN_DAYS 0
## PASS_WARN_AGE Number of days warning is given before a password expires.
PASS_WARN_AGE 7
Vamos a aplicar una política de expiración de 9000 días. Abra el archivo con sudo nano.
sudo nano /etc/login.defs
Busque la línea PASS_MAX_DAYS y cambie su valor de 99999 a 9000. También puede establecer PASS_MIN_DAYS en 7 para evitar que los usuarios cambien su contraseña con demasiada frecuencia.
## PASS_MAX_DAYS Maximum number of days a password may be used.
PASS_MAX_DAYS 9000
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
PASS_MIN_DAYS 7
## PASS_WARN_AGE Number of days warning is given before a password expires.
PASS_WARN_AGE 14
Guarde el archivo y salga de nano. Estas configuraciones en /etc/login.defs se aplican a los usuarios creados después de este cambio. Para aplicar la política a un usuario existente, como nuestro usuario labex, usamos el comando chage.
Primero, verifique la información de antigüedad actual para el usuario labex.
sudo chage -l labex
La salida mostrará que la contraseña nunca expira.
Last password change : Jul 22, 2023
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
Ahora, use chage con la bandera -M para establecer el número máximo de días en 9000 para el usuario labex.
sudo chage -M 9000 labex
Verifique el cambio revisando nuevamente la información de antigüedad del usuario.
sudo chage -l labex
Ahora verá que la fecha de Password expires se ha actualizado, y el número máximo de días se establece en 9000, aplicando exitosamente la política de antigüedad.
Last password change : Jul 22, 2023
Password expires : Jan 01, 2048
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 9000
Number of days of warning before password expires : 7
Ahora ha configurado con éxito tanto las políticas de complejidad como las de antigüedad de contraseñas en su sistema Linux.