Introducción
Mantener políticas de contraseñas sólidas es crucial para asegurar los sistemas Linux. Este tutorial le guiará a través de la comprensión de los fundamentos de las políticas de contraseñas en Linux, la configuración de los requisitos de complejidad de las contraseñas y la aplicación de estas políticas para mejorar la seguridad general de su entorno Linux.
Comprensión de los Archivos de Políticas de Contraseñas en Linux
Los sistemas Linux utilizan varios archivos de configuración para gestionar las políticas de contraseñas. En este paso, exploraremos estos archivos y comprenderemos su propósito en la gestión de contraseñas.
Exploración de los Archivos de Configuración de Políticas de Contraseñas
Comencemos examinando los archivos de configuración clave que controlan las políticas de contraseñas en Ubuntu:
Primero, abra una terminal haciendo clic en el icono de la terminal en el entorno de escritorio.
Veamos el archivo
/etc/login.defs, que contiene la configuración básica de las políticas de contraseñas:cat /etc/login.defs | grep "^PASS_"Debería ver una salida similar a esta:
PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_WARN_AGE 7Esta configuración controla:
PASS_MAX_DAYS: Número máximo de días que una contraseña permanece válidaPASS_MIN_DAYS: Número mínimo de días requeridos entre cambios de contraseñaPASS_WARN_AGE: Número de días de advertencia antes de la expiración de la contraseña
Otro archivo importante es
/etc/pam.d/common-password, que gestiona la configuración de PAM (Módulos de Autenticación Enchufables - Pluggable Authentication Modules) para la autenticación de contraseñas:cat /etc/pam.d/common-passwordEste archivo contiene múltiples líneas que configuran cómo se gestionan las contraseñas, incluyendo los requisitos de complejidad.
El sistema utiliza la biblioteca
pwqualitypara aplicar la calidad de la contraseña. Comprobemos si está instalada:dpkg -l | grep libpwqualitySi no está instalada, podemos instalarla:
sudo apt update sudo apt install -y libpam-pwqualityAhora, examinemos el archivo de configuración de la calidad de la contraseña:
cat /etc/security/pwquality.confEste archivo podría tener la mayoría de las líneas comentadas con
#, lo que significa que se están utilizando los valores predeterminados.
Comprensión de los Parámetros de la Política de Contraseñas
Aquí están los parámetros clave que puede configurar:
minlen: Longitud mínima de la contraseñadcredit: Crédito por dígitos en la contraseñaucredit: Crédito por caracteres en mayúsculaslcredit: Crédito por caracteres en minúsculasocredit: Crédito por caracteres especialesretry: Número de reintentos para ingresar una nueva contraseñaenforce_for_root: Si se deben aplicar estas políticas al usuario root Estos parámetros proporcionan un marco integral para controlar la complejidad y la seguridad de las contraseñas en su sistema Linux.
Configuración de Políticas de Contraseñas Básicas
En este paso, configuraremos políticas de contraseñas básicas modificando el archivo /etc/login.defs para establecer los requisitos de caducidad de las contraseñas.
Establecimiento de los Parámetros de Caducidad de Contraseñas
Primero, hagamos una copia de seguridad del archivo original:
sudo cp /etc/login.defs /etc/login.defs.backupAhora, abra el archivo para editarlo usando nano:
sudo nano /etc/login.defsEn el editor, busque estos parámetros (use Ctrl+W para buscar):
PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGECambie estos valores para implementar una política de caducidad de contraseñas más segura:
- Cambie
PASS_MAX_DAYSde99999a90(las contraseñas caducan después de 90 días) - Cambie
PASS_MIN_DAYSde0a7(mínimo 7 días entre cambios de contraseña) - Cambie
PASS_WARN_AGEde7a14(advertir a los usuarios 14 días antes de la caducidad de la contraseña)
- Cambie
Guarde el archivo presionando Ctrl+O, luego Enter, y salga con Ctrl+X.
Verifique sus cambios:
cat /etc/login.defs | grep "^PASS_"Debería ver:
PASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_WARN_AGE 14
Prueba de la Política en un Nuevo Usuario
Creemos un usuario de prueba para ver cómo se aplican estas políticas:
Cree un nuevo usuario:
sudo useradd -m testuserEstablezca una contraseña para el nuevo usuario:
sudo passwd testuserIngrese una contraseña simple cuando se le solicite (la fortaleceremos en pasos posteriores).
Verifique la información de caducidad de la contraseña para el nuevo usuario:
sudo chage -l testuserDebería ver que las políticas de contraseñas se han aplicado a este nuevo usuario, mostrando la fecha de caducidad basada en su configuración.
Tenga en cuenta que estos cambios solo se aplican a las nuevas cuentas o cuando se cambia una contraseña. Las cuentas existentes mantienen su configuración anterior hasta que las actualice manualmente.
Configuración de los Requisitos de Complejidad de Contraseñas
En este paso, configuraremos reglas de complejidad de contraseñas para aplicar contraseñas seguras en nuestro sistema.
Configuración de las Reglas de Complejidad de Contraseñas
Primero, hagamos una copia de seguridad del archivo de configuración de PAM:
sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backupAhora, abra el archivo para editarlo:
sudo nano /etc/pam.d/common-passwordBusque una línea que contenga
pam_pwquality.so. Podría verse así:password requisite pam_pwquality.so retry=3Modifique esta línea para agregar requisitos de complejidad. Reemplácela con:
password requisite pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 enforce_for_rootEsta configuración significa:
minlen=12: La longitud mínima de la contraseña es de 12 caracteresdcredit=-1: Se requiere al menos 1 dígitoucredit=-1: Se requiere al menos 1 letra mayúsculalcredit=-1: Se requiere al menos 1 letra minúsculaocredit=-1: Se requiere al menos 1 carácter especialenforce_for_root: Aplica estas políticas también al usuario root
Guarde el archivo presionando Ctrl+O, luego Enter, y salga con Ctrl+X.
Configuración de Parámetros Adicionales en pwquality.conf
Ahora, modifiquemos el archivo de configuración pwquality para controles adicionales:
sudo cp /etc/security/pwquality.conf /etc/security/pwquality.conf.backup sudo nano /etc/security/pwquality.confDescomente (elimine el ## al principio) y modifique estas líneas, o agréguelas si no existen:
minlen = 12 dcredit = -1 ucredit = -1 lcredit = -1 ocredit = -1 difok = 4 enforce_for_root = 1El parámetro
difok = 4requiere que al menos 4 caracteres sean diferentes de la contraseña anterior.Guarde el archivo presionando Ctrl+O, luego Enter, y salga con Ctrl+X.
Prueba de la Nueva Política de Complejidad de Contraseñas
Probemos nuestra nueva política cambiando la contraseña de nuestro usuario de prueba:
sudo passwd testuserIntente ingresar una contraseña simple como
password123. El sistema debería rechazarla por no cumplir con los requisitos de complejidad.Ahora intente una contraseña compleja que cumpla con todos los requisitos, como
Secure@Password123.Si ha configurado todo correctamente, el sistema debería aceptar esta contraseña.
Los requisitos de complejidad aseguran que los usuarios creen contraseñas seguras, lo que dificulta que los atacantes las adivinen o descifren.
Implementación de Controles de Historial de Contraseñas
En este paso, configuraremos los controles de historial de contraseñas para evitar que los usuarios reutilicen sus contraseñas recientes.
Configuración del Historial de Contraseñas
Primero, hagamos una copia de seguridad del archivo de configuración de PAM si aún no lo ha hecho:
sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backup2Abra el archivo para editarlo:
sudo nano /etc/pam.d/common-passwordBusque una línea que contenga
pam_unix.so. Podría verse así:password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512Modifique esta línea para agregar el parámetro
remember. Agregueremember=5al final de la línea:password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 remember=5Esto evitará que los usuarios reutilicen cualquiera de sus 5 contraseñas más recientes.
Guarde el archivo presionando Ctrl+O, luego Enter, y salga con Ctrl+X.
Comprender Cómo Funciona el Historial de Contraseñas
El parámetro remember=5 indica al sistema que almacene los hashes de las últimas 5 contraseñas para cada usuario. Cuando un usuario intenta cambiar su contraseña, el sistema compara la nueva contraseña con estos hashes almacenados para asegurarse de que no se esté reutilizando.
El historial de contraseñas se almacena en el archivo /etc/security/opasswd. Comprobemos si este archivo existe:
ls -la /etc/security/opasswd
Si no existe, se creará automáticamente cuando el primer usuario cambie su contraseña con la nueva política en vigor.
Prueba del Historial de Contraseñas
Intentemos cambiar la contraseña del usuario de prueba varias veces para ver el mecanismo de historial en acción:
sudo passwd testuserEstablezca una contraseña compleja como
Complex@Password1.Ahora intente cambiarla de nuevo inmediatamente:
sudo passwd testuserIntente establecer la misma contraseña de nuevo. El sistema debería rechazarla debido a la política de historial.
Intente esto algunas veces más con diferentes contraseñas, luego intente reutilizar una contraseña anterior. Debería encontrar que no puede reutilizar ninguna de sus 5 contraseñas más recientes.
Este mecanismo de historial de contraseñas agrega otra capa de seguridad al evitar la reutilización de contraseñas, lo cual es una debilidad de seguridad común.
Aplicación de Políticas de Contraseñas a Usuarios Existentes
En este paso final, aprenderemos cómo aplicar nuestras nuevas políticas de contraseñas a los usuarios existentes y administrar la información de contraseñas de los usuarios.
Comprensión de la Gestión de la Expiración de Contraseñas
Cuando cambia las políticas de contraseñas en /etc/login.defs, la nueva configuración solo se aplica a los usuarios recién creados o cuando actualiza manualmente a los usuarios existentes. Veamos cómo administrar a los usuarios existentes:
Primero, verifique el estado actual de una cuenta de usuario:
sudo chage -l labexEsto muestra la información de envejecimiento de la contraseña para el usuario actual.
Para obligar a un usuario a cambiar su contraseña en el próximo inicio de sesión:
sudo chage -d 0 testuserEsto establece la fecha del último cambio de contraseña en 0, forzando un cambio de contraseña en el próximo inicio de sesión.
Para establecer manualmente la fecha de expiración de la contraseña:
sudo chage -E $(date -d "90 days" +%Y-%m-%d) testuserEsto establece la fecha de expiración de la cuenta en 90 días a partir de hoy.
Establecimiento de la Antigüedad Máxima de Contraseña para Usuarios Existentes
Para aplicar la política de antigüedad máxima de contraseña a un usuario existente:
sudo chage -M 90 testuser
Esto establece la antigüedad máxima de la contraseña en 90 días para el usuario.
Establecimiento de la Antigüedad Mínima de Contraseña para Usuarios Existentes
Para aplicar la política de antigüedad mínima de contraseña a un usuario existente:
sudo chage -m 7 testuser
Esto establece la antigüedad mínima de la contraseña en 7 días para el usuario.
Establecimiento de la Advertencia de Expiración de Contraseña para Usuarios Existentes
Para aplicar la política de advertencia de expiración de contraseña a un usuario existente:
sudo chage -W 14 testuser
Esto establece el período de advertencia de expiración de la contraseña en 14 días para el usuario.
Visualización de la Información de Contraseña del Usuario
Puede verificar la información de la contraseña de un usuario utilizando varios comandos:
Ver todas las cuentas de usuario locales:
cat /etc/passwdVerifique el estado de la contraseña para un usuario específico:
sudo passwd -S testuserEnumere los usuarios con una configuración de contraseña específica:
awk -F: '($3 >= 1000) {print $1}' /etc/passwdEsto enumera todos los usuarios regulares en el sistema (UID >= 1000).
Aplicación de Políticas a Todos los Usuarios
Para aplicar las nuevas políticas de contraseñas a todos los usuarios regulares del sistema, podría usar un script simple. Aquí hay un ejemplo:
for user in $(awk -F: '($3 >= 1000) && ($3 < 60000) {print $1}' /etc/passwd); do
echo "Actualizando la política de contraseñas para el usuario: $user"
sudo chage -M 90 -m 7 -W 14 $user
done
Este script actualiza a todos los usuarios regulares con nuestras nuevas políticas de envejecimiento de contraseñas.
Al aplicar estas políticas a los usuarios existentes, asegura una seguridad de contraseña consistente en todo su sistema.
Resumen
En este laboratorio, ha aprendido a configurar y aplicar políticas de contraseñas robustas en Linux. Ha:
- Explorado los archivos de configuración clave que controlan las políticas de contraseñas.
- Configurado políticas básicas de envejecimiento de contraseñas para asegurar actualizaciones regulares de contraseñas.
- Implementado requisitos de complejidad de contraseñas fuertes para aplicar contraseñas seguras.
- Configurado controles de historial de contraseñas para evitar la reutilización de contraseñas.
- Aprendido a aplicar políticas de contraseñas a usuarios existentes.
Estas configuraciones de políticas de contraseñas son esenciales para mantener un entorno Linux seguro. Al implementar requisitos de contraseñas fuertes, rotación regular de contraseñas y evitar la reutilización de contraseñas, ha mejorado significativamente la postura de seguridad de su sistema contra el acceso no autorizado y posibles brechas.
Recuerde que las políticas de contraseñas efectivas son solo un aspecto de una estrategia de seguridad integral. Deben combinarse con otras medidas de seguridad, como actualizaciones regulares del sistema, gestión adecuada de usuarios y monitoreo continuo de la seguridad.



