Introducción
La correcta gestión de usuarios y grupos es crucial para garantizar la seguridad y organización en sistemas operativos como Red Hat Enterprise Linux (RHEL). Este proceso permite controlar el acceso al sistema, compartir recursos entre usuarios y aplicar políticas de contraseña que refuercen la protección frente a amenazas externas. Con comandos y archivos especializados, RHEL ofrece una amplia gama de herramientas para administrar cuentas de usuarios, gestionar grupos y definir reglas específicas de acceso y vigencia.
Objetivos
Esta sección busca proporcionar un entendimiento claro y práctico sobre:
- La creación, modificación y eliminación de cuentas de usuarios.
- La gestión de grupos locales para organizar recursos y permisos.
- La configuración de contraseñas seguras y políticas de vigencia que protejan el sistema.
Al finalizar esta sección, el usuario estará capacitado para implementar buenas prácticas de seguridad, optimizar la administración de usuarios y grupos, y personalizar configuraciones según las necesidades de su entorno.
Gestión de de usuarios y grupos
Usuarios y Grupos en RHEL
Usuarios
Las cuentas de usuario ofrecen límites de seguridad, asignando un UID (número de identificación único) para diferenciarlas. Existen tres tipos de cuentas:
- Superusuario: Tiene acceso total al sistema (UID 0).
- Usuarios del sistema: Son utilizados por procesos del sistema y no interactúan directamente.
- Usuarios normales: Tienen acceso limitado y son utilizados para el trabajo diario.
Información básica sobre usuarios: Usa el comando id para ver detalles de un usuario, como UID, GID y grupos. Usa el archivo /etc/passwd para consultar las bases de datos de usuarios locales.
Grupos
Los grupos permiten compartir recursos entre múltiples usuarios. Cada grupo tiene un nombre y un GID (número de identificación único). Información sobre grupos: Usa el archivo /etc/group para consultar las bases de datos de grupos locales. Tipos de grupos:
- Grupo principal: Propietario de los archivos creados por el usuario, definido en
/etc/passwd. - Grupos complementarios: Almacenan miembros adicionales en
/etc/group.
Comandos y Archivos Relacionados
- Usa
ls -lyls -ldpara consultar el propietario de archivos y directorios. - Usa
ps -aupara identificar el usuario asociado a procesos en ejecución. - Los usuarios y grupos se gestionan mediante los archivos
/etc/passwdy/etc/group.
Gestión de Cuentas de Usuarios Locales
Creación de Usuarios
El comando useradd crea una nueva cuenta de usuario y realiza configuraciones básicas como:
- Asignar un directorio de inicio.
- Crear un grupo privado para el usuario con el mismo nombre.
Al momento de la creación, la cuenta no tiene contraseña válida, por lo que el usuario no puede iniciar sesión hasta que se defina una. Sintaxis básica: useradd username Modifica el archivo /etc/passwd y crea el directorio de inicio especificado en /home/username. Los valores predeterminados de las cuentas se definen en /etc/login.defs. Este archivo establece parámetros como el rango de UID válido y las reglas de contraseñas. Cambios en /etc/login.defs afectan solo a los nuevos usuarios.
Modificación de Cuentas de Usuario Existentes
El comando usermod se utiliza para modificar los detalles de una cuenta existente. Opciones comunes:
-a -G: Agrega grupos adicionales al usuario sin sobrescribir su configuración actual.-d: Especifica o cambia el directorio de inicio del usuario.-g: Cambia el grupo principal asignado.-s: Cambia la shell predeterminada de inicio de sesión.-L: Bloquea la cuenta del usuario.-U: Desbloquea la cuenta.
Ejemplo:
usermod -a -G wheel usernameusermod -d /new/home/username -m username
Eliminación de Cuentas de Usuario
El comando userdel elimina una cuenta de usuario del sistema, eliminando sus entradas en /etc/passwd y /etc/group. Usa la opción -r para eliminar también el directorio de inicio y otros archivos asociados al usuario. userdel -r username Precaución: Si no se usa -r, los archivos del usuario quedan asociados a un UID no asignado, lo que puede suponer riesgos de seguridad si un nuevo usuario recibe el mismo UID.
Gestión de Contraseñas
El comando passwd establece o modifica la contraseña de un usuario. Los usuarios deben usar contraseñas fuertes (mínimo 8 caracteres, sin nombres comunes). Sintaxis básica: passwd username
Ejemplo:
passwd user01Incluso si no cumple los criterios, el usuario root puede forzar la configuración de una contraseña.
Rangos de UID en RHEL 9
RHEL asigna UIDs dentro de rangos predefinidos según el tipo de usuario:
- UID 0: Superusuario (root).
- UID 1-200: Usuarios del sistema asignados estáticamente.
- UID 201-999: Procesos del sistema con asignación dinámica.
- UID 1000+: Usuarios regulares.
Nota: En versiones anteriores como RHEL 6, los usuarios regulares empezaban en el UID 500.
Revisión de Cuentas y Propiedades
El comando id proporciona detalles como UID, GID y grupos complementarios de un usuario. id username El usuario root puede usar el comando find para localizar archivos sin propietario asignado: find / -nouser -o -nogroup
Gestión de Cuentas de Grupos Locales
Creación de Grupos
Usa el comando groupadd para crear grupos en el sistema. Por defecto, asigna el siguiente GID disponible según el rango definido en /etc/login.defs mediante las variables GID_MIN y GID_MAX.
Ejemplo básico:
groupadd nombre_grupoPuedes especificar elGIDcon la opción-g:groupadd -g 10000 grupo01Para crear grupos de sistema, usa la opción-r. Los grupos de sistema utilizan un GID dentro del rango definido por las variablesSYS_GID_MINySYS_GID_MAX:groupadd -r grupo_sistema
Modificación de Grupos Existentes
El comando groupmod modifica propiedades de un grupo ya creado. Usa la opción -n para cambiar el nombre del grupo: groupmod -n nuevo_nombre_grupo nombre_grupo Usa la opción -g para cambiar el GID de un grupo: groupmod -g nuevo_GID nombre_grupo
Eliminación de Grupos
Usa el comando groupdel para eliminar grupos del sistema.
Ejemplo:
groupdel nombre_grupoPrecauciones:
- No se puede eliminar un grupo si es el grupo principal de un usuario existente.
- Asegúrate de ubicar archivos propiedad del grupo antes de eliminarlo para evitar inconsistencias.
Manejo de Membresía de Grupos
Cambia el grupo principal de un usuario usando usermod -g: usermod -g nuevo_grupo nombre_usuario Agrega un usuario a un grupo complementario usando usermod -aG: usermod -aG nombre_grupo nombre_usuario Importante: La opción -a habilita el modo de adición. Si no se incluye, el usuario es eliminado de otros grupos complementarios no especificados en la lista -G.
Cambio Temporal del Grupo Principal
Usa el comando newgrp para cambiar temporalmente el grupo principal de un usuario a un grupo complementario al que ya pertenece. Esto es útil para asignar atributos específicos a archivos nuevos creados en la sesión actual. Ejemplo: newgrp nombre_grupo
Gestión de Contraseñas de Usuarios
Archivo /etc/shadow
Las contraseñas cifradas se almacenan en /etc/shadow, que solo puede ser leído por el usuario root. Esto protege las contraseñas frente a ataques de diccionario. Cada usuario tiene una entrada con nueve campos separados por dos puntos, que incluyen:
- Nombre del usuario: Nombre de la cuenta.
- Contraseña cifrada: Combinación del algoritmo, valor aleatorio (salt) y el hash criptográfico.
- Días desde la última modificación: En días desde 1970-01-01.
- Duración mínima y máxima de la contraseña: Días antes de permitir el cambio de contraseña y días antes de caducar.
- Días de advertencia: Notificaciones previas al vencimiento.
- Días de inactividad: Tiempo después del vencimiento antes de desactivar la cuenta.
- Fecha de caducidad de la cuenta: Si está vacía, nunca caduca.
Formato de Contraseña Cifrada Las contraseñas cifradas incluyen tres componentes principales:
- Algoritmo: SHA-512 es el predeterminado en RHEL 9 ($6). Otros valores incluyen MD5 ($1) y SHA-256 ($5).
- Valor aleatorio (salt): Protege contra ataques precomputados al generar un hash único.
- Hash criptográfico: Resultado de combinar la contraseña en texto plano con el salt usando el algoritmo definido.
Comando chage para Políticas de Contraseña
Configura la vigencia de contraseñas ajustando los parámetros del archivo /etc/shadow. Opciones comunes:
* -m: Mínimos días antes de permitir cambios.
* -M: Máximo de días antes del vencimiento.
* -W: Días de advertencia antes del vencimiento.
* -I: Días de inactividad después del vencimiento antes de bloquear la cuenta.
* -E: Fecha de vencimiento de la cuenta en formato YYYY-MM-DD o días desde 1970-01-01.
Ejemplo:
chage -m 0 -M 90 -W 7 -I 14 usuario01chage -E $(date -d "+30 days" +%F) cloudadmin10
Cambios Predeterminados de Contraseñas
Los valores predeterminados de duración de contraseñas se configuran en /etc/login.defs:
- PASS_MAX_DAYS: Máximos días antes del vencimiento.
- PASS_MIN_DAYS: Días antes de permitir cambios.
- PASS_WARN_AGE: Periodo de advertencia previo al vencimiento.
Los usuarios creados después de actualizar /etc/login.defs heredarán estos valores, mientras que las cuentas existentes no se ven afectadas.
Requerir Cambio de Contraseña en el Próximo Inicio de Sesión
Usa el comando chage -d 0 para forzar que un usuario cambie su contraseña en el siguiente inicio de sesión. chage -d 0 usuario01
Bloqueo y Caducidad de Cuentas
Usa usermod -L para bloquear una cuenta y evitar que el usuario inicie sesión: usermod -L usuario02 Combina usermod -L con -e para establecer la fecha de caducidad: usermod -L -e 2022-08-14 usuario02
Shell nologin
Usa /sbin/nologin como shell predeterminada para cuentas que no requieren acceso interactivo: usermod -s /sbin/nologin usuario03 Esto evita conexiones interactivas, pero no bloquea el uso de credenciales en servicios externos (por ejemplo, FTP).
Conclusión
La gestión adecuada de usuarios y grupos en RHEL no solo fortalece la seguridad, sino que también simplifica la administración del sistema, asegurando que cada usuario y recurso esté correctamente organizado y protegido. Dominar estas técnicas es un paso esencial para garantizar un entorno operativo funcional, seguro y eficiente.