Cambio de contraseñas en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

La gestión de contraseñas es un aspecto crítico para mantener la seguridad del sistema en entornos Linux. Los administradores de sistema deben entender cómo crear y aplicar políticas de contraseñas seguras para proteger las cuentas de usuario y los datos sensibles del acceso no autorizado.

En este laboratorio, aprenderás cómo utilizar el comando passwd para cambiar las contraseñas de los usuarios e implementar políticas básicas de contraseñas. Estas habilidades fundamentales son esenciales para cualquier persona que trabaje con sistemas Linux, especialmente en roles que involucren la gestión de cuentas de usuario y la seguridad del sistema.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/UserandGroupManagementGroup -.-> linux/useradd("User Adding") linux/UserandGroupManagementGroup -.-> linux/passwd("Password Changing") linux/UserandGroupManagementGroup -.-> linux/id("User/Group ID Displaying") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/chmod -.-> lab-271347{{"Cambio de contraseñas en Linux"}} linux/cd -.-> lab-271347{{"Cambio de contraseñas en Linux"}} linux/grep -.-> lab-271347{{"Cambio de contraseñas en Linux"}} linux/useradd -.-> lab-271347{{"Cambio de contraseñas en Linux"}} linux/passwd -.-> lab-271347{{"Cambio de contraseñas en Linux"}} linux/id -.-> lab-271347{{"Cambio de contraseñas en Linux"}} linux/nano -.-> lab-271347{{"Cambio de contraseñas en Linux"}} end

Comprender el comando passwd

En los sistemas Linux, el comando passwd se utiliza para cambiar las contraseñas de los usuarios. Este comando permite a los usuarios cambiar sus propias contraseñas, mientras que los administradores de sistema pueden cambiar las contraseñas de cualquier cuenta en el sistema.

Crear un nuevo usuario

Comencemos creando un nuevo usuario que podamos utilizar para practicar la gestión de contraseñas. Abre tu terminal y asegúrate de estar en el directorio de trabajo predeterminado:

cd ~/project

Ahora, utiliza el comando useradd para crear un nuevo usuario llamado cyberuser:

sudo useradd cyberuser

Este comando crea una nueva cuenta de usuario pero no establece una contraseña para ella. Cuando creas un usuario sin especificar una contraseña, la cuenta generalmente está bloqueada por defecto.

Puedes verificar que el usuario se haya creado utilizando el comando id:

id cyberuser

Deberías ver una salida similar a esta:

uid=1001(cyberuser) gid=1001(cyberuser) groups=1001(cyberuser)

Establecer una contraseña para el nuevo usuario

Ahora que hemos creado un nuevo usuario, establezcamos una contraseña para esta cuenta utilizando el comando passwd:

sudo passwd cyberuser

Después de ejecutar este comando, se te pedirá que ingreses una nueva contraseña dos veces para confirmarla:

New password:
Retype new password:
passwd: password updated successfully

Ingresa una contraseña de tu elección cuando se te solicite. Por motivos de seguridad, la contraseña que escribas no se mostrará en la pantalla.

El comando passwd actualiza la contraseña de la cuenta de usuario especificada. Cuando se ejecuta con privilegios sudo, puedes cambiar la contraseña de cualquier usuario en el sistema.

Ver información de la contraseña

Para ver información sobre la contraseña de un usuario, incluyendo cuándo se cambió por última vez, puedes utilizar el comando chage -l seguido del nombre de usuario:

sudo chage -l cyberuser

Este comando muestra información sobre las políticas de caducidad y expiración de la contraseña del usuario. La salida se verá similar a esta:

Last password change                                    : Jul 15, 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

Esta información es útil para entender las políticas de contraseñas actuales aplicadas a una cuenta de usuario.

Comprender los archivos de contraseñas en Linux

En Linux, la información de las contraseñas se almacena en varios archivos de sistema importantes. Comprender estos archivos ayuda a los administradores a gestionar las cuentas de usuario de manera efectiva.

Explorar archivos relacionados con las contraseñas

Navega hasta tu directorio de proyecto:

cd ~/project

Examinemos los archivos clave que almacenan la información de las contraseñas y las cuentas de usuario:

  1. Primero, echa un vistazo al archivo /etc/passwd, que contiene información básica de las cuentas de usuario:
grep cyberuser /etc/passwd

Deberías ver una salida similar a:

cyberuser:x:1001:1001::/home/cyberuser:/bin/sh

Esta línea contiene varios campos separados por dos puntos:

  • Nombre de usuario: cyberuser
  • Marcador de posición de la contraseña: x (la contraseña real se almacena en /etc/shadow)
  • Identificador de usuario (UID): 1001
  • Identificador de grupo (GID): 1001
  • Campo de información del usuario: (vacío en este caso)
  • Directorio personal: /home/cyberuser
  • Shell predeterminado: /bin/sh
  1. Ahora, examinemos el archivo de contraseñas cifradas (shadow), que contiene información de contraseñas cifradas:
sudo grep cyberuser /etc/shadow

La salida mostrará la contraseña cifrada y la información relacionada:

cyberuser:$6$xxxxxxxxxxxxxxxxxxx:19189:0:99999:7:::

Los campos en esta línea incluyen:

  • Nombre de usuario
  • Contraseña cifrada
  • Días desde el 1 de enero de 1970 en que se cambió la contraseña por última vez
  • Días antes de que se pueda cambiar la contraseña
  • Días después de los cuales la contraseña debe cambiarse
  • Días antes de la expiración de la contraseña para avisar al usuario
  • Días después de la expiración de la contraseña hasta que se deshabilite la cuenta
  • Días desde el 1 de enero de 1970 en que se deshabilitó la cuenta
  • Un campo reservado

Esta información es crucial para entender cómo se implementa la seguridad de las contraseñas en los sistemas Linux.

Aplicar políticas de contraseñas

Linux ofrece varias herramientas para aplicar políticas de contraseñas, lo que ayuda a mantener la seguridad del sistema al garantizar que los usuarios elijan contraseñas fuertes. En este paso, aprenderás cómo implementar políticas básicas de contraseñas.

Establecer la expiración de la contraseña

El comando chage permite a los administradores establecer políticas de expiración de contraseñas. Navega hasta tu directorio de proyecto:

cd ~/project

Establezcamos la edad máxima de la contraseña para nuestra cuenta cyberuser en 90 días:

sudo chage -M 90 cyberuser

Este comando establece el número máximo de días que una contraseña es válida antes de que se requiera al usuario cambiarla.

También puedes establecer una edad mínima de la contraseña, lo que impide que los usuarios cambien sus contraseñas demasiado frecuentemente:

sudo chage -m 7 cyberuser

Este comando requiere que el usuario espere al menos 7 días antes de cambiar su contraseña nuevamente.

Verifica los cambios que has realizado:

sudo chage -l cyberuser

Deberías ver la información actualizada de la política de contraseñas:

Last password change                                    : Jul 15, 2023
Password expires                                        : Oct 13, 2023
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 7
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 7

Crear un script de política de contraseñas

Ahora, creemos un script que implementará políticas de contraseñas más avanzadas. Crea un nuevo archivo llamado cyberpolicy.sh:

nano ~/project/cyberpolicy.sh

Agrega el siguiente contenido al archivo:

#!/bin/bash

## Enforce password complexity
echo "password requisite pam_pwquality.so retry=3 minlen=8 difok=3" | sudo tee -a /etc/pam.d/common-password

## Set password expiration policy for all new users
echo "PASS_MAX_DAYS   90" | sudo tee -a /etc/login.defs
echo "PASS_MIN_DAYS   7" | sudo tee -a /etc/login.defs
echo "PASS_WARN_AGE   7" | sudo tee -a /etc/login.defs

echo "Password policy has been updated successfully."

Guarda el archivo presionando Ctrl+O, luego Enter, y sal de nano con Ctrl+X.

Haz el script ejecutable:

chmod +x ~/project/cyberpolicy.sh

Este script establece las siguientes políticas de contraseñas:

  • Complejidad de la contraseña: Mínimo 8 caracteres, al menos 3 caracteres diferentes de la contraseña anterior, con 3 intentos permitidos
  • Expiración de la contraseña: Edad máxima de la contraseña de 90 días
  • Restricción de cambio de contraseña: Edad mínima de la contraseña de 7 días
  • Advertencia de contraseña: 7 días antes de la expiración de la contraseña

En un entorno de producción, ejecutarías este script para aplicar estas políticas. Sin embargo, para este laboratorio, simplemente examinaremos el contenido para entender cómo se pueden implementar las políticas de contraseñas.

Resumen

En este laboratorio, has aprendido habilidades esenciales para la gestión de contraseñas en sistemas Linux. Has practicado:

  1. Crear una nueva cuenta de usuario utilizando el comando useradd
  2. Establecer y cambiar contraseñas con el comando passwd
  3. Ver información de contraseñas en archivos del sistema como /etc/passwd y /etc/shadow
  4. Establecer políticas de expiración de contraseñas utilizando el comando chage
  5. Crear un script para aplicar políticas de complejidad y expiración de contraseñas

Estas habilidades son fundamentales para los administradores de sistemas que necesitan mantener sistemas seguros mediante la implementación de prácticas adecuadas de gestión de contraseñas. Al entender cómo aplicar políticas de contraseñas fuertes, puedes mejorar significativamente la seguridad de los sistemas Linux y protegerlos del acceso no autorizado.

A medida que continúes tu viaje de aprendizaje, considera explorar temas más avanzados, como la configuración de PAM (Pluggable Authentication Modules, Módulos de Autenticación Intercambiables), la implementación de autenticación multifactor y la automatización de la gestión de cuentas de usuario en entornos empresariales.