Introducción
En sistemas como Red Hat Enterprise Linux (RHEL), el superusuario (root) tiene privilegios totales para gestionar y administrar el sistema. Sin embargo, debido a los riesgos que implica tener acceso ilimitado, RHEL adopta un enfoque seguro que permite a los usuarios obtener privilegios de superusuario solo cuando es necesario, utilizando herramientas como su y sudo. Este enfoque protege el sistema, reduciendo la exposición a vulnerabilidades y errores accidentales.
Objetivos
Esta sección busca proporcionar los conocimientos necesarios para:
- Comprender el rol y las responsabilidades del superusuario (root).
- Utilizar comandos como
suysudopara escalar privilegios de manera temporal y segura. - Configurar el acceso a superusuario para usuarios específicos a través de herramientas como
/etc/sudoersyvisudo.
Obtención de acceso de superusuario
El Rol del Superusuario en RHEL
El superusuario (root) tiene control total sobre el sistema, incluyendo la gestión de archivos, cuentas, dispositivos y software. Los privilegios de root permiten realizar tareas avanzadas, como la instalación de paquetes o el acceso a sistemas críticos, pero también representan un gran riesgo si se utilizan incorrectamente o si la cuenta es comprometida. Por ello, se recomienda iniciar sesión como usuario regular y elevar privilegios a root solo cuando sea necesario.
Uso del Comando su para Escalar Privilegios
El comando su permite cambiar temporalmente a otra cuenta, generalmente a root: su - # Cambia a root con el entorno completo su # Cambia a root pero mantiene el entorno del usuario original Es posible especificar un usuario diferente para cambiar a su cuenta, proporcionando la contraseña correspondiente: su - user02 Los administradores deben usar su - para garantizar que el entorno del nuevo usuario se configure correctamente, incluyendo variables de entorno y rutas.
Uso del Comando sudo para Escalar Privilegios por Comando
A diferencia de su, el comando sudo permite ejecutar un único comando con privilegios elevados sin cambiar completamente a root. El usuario debe estar autorizado en el archivo /etc/sudoers y, por defecto, proporciona su propia contraseña en lugar de la contraseña de root. En la siguiente tabla, se resumen las diferencias entre los comandossu,su -ysudo:
su |
su - |
sudo |
|
|---|---|---|---|
| Conviértase en nuevo usuario | Sí | Sí | Por comando escalado |
| Entorno | Usuario actual | Nuevo usuario | Usuario actual |
| Se requiere contraseña | Nuevo usuario | Nuevo usuario | Usuario actual |
| Privilegios | Igual que el nuevo usuario | Igual que el nuevo usuario | Definido por configuración |
| Actividad registrada | Solo comandosu |
Solo comandosu |
Por comando escalado |
Ejemplo de uso:
sudo usermod -L user02 # Bloquea la cuenta del usuario user02Las ventajas de sudo incluyen:
- Registro detallado de comandos ejecutados en /var/log/secure.
- Configuración granular para limitar los comandos que un usuario puede ejecutar.
Configuración de Acceso con visudo
El archivo /etc/sudoers gestiona las reglas para el comando sudo. Debe editarse con el comando visudo para evitar errores de sintaxis.
Ejemplo de habilitación para un grupo:
%wheel ALL=(ALL:ALL) ALLLa cadena%wheeles el usuario o grupo al que se aplica la regla. El símbolo%antes de la palabra wheel especifica un grupo.
- El comando
ALL=(ALL:ALL)especifica que en cualquier host con este archivo (el primerALL), los usuarios en el grupo wheel pueden ejecutar comandos como cualquier otro usuario (el segundoALL) y cualquier otro grupo (el terceroALL) en el sistema. - El comando final
ALLespecifica que los usuarios en el grupo wheel pueden ejecutar cualquier comando.
Alternativamente, puedes crear reglas específicas para usuarios o grupos colocando archivos en el directorio /etc/sudoers.d. Por ejemplo, para permitir que los usuarios en el grupo gamesejecuten el comandoidcon el usuariooperator, puede crear el archivo/etc/sudoers.d/gamescon el siguiente contenido:
%games ALL=(operator) /bin/id
También es posible configurar sudo para permitir que un usuario ejecute comandos como otro usuario sin ingresar su contraseña, con el comando NOPASSWD: ALL: ansible ALL=(ALL) NOPASSWD: ALL Si bien otorgar este nivel de acceso a un usuario o grupo implica riesgos de seguridad evidentes, los administradores del sistema suelen usar este enfoque en instancias de la nube, máquinas virtuales y sistemas de aprovisionamiento para configurar servidores. La cuenta con este acceso se debe proteger y puede requerir autenticación de clave pública de SSH para que un usuario que se encuentra en un sistema remoto pueda acceder a ella. Por ejemplo, Amazon Machine Image (AMI) oficial de Red Hat Enterprise Linux en Amazon Web Services Marketplace se envía con las contraseñas root y ec2-user bloqueadas. La cuenta ec2-user está configurada para permitir el acceso interactivo remoto a través de la autenticación de clave pública de SSH. El usuario ec2-user también puede ejecutar cualquier comando como root sin contraseña debido a que la última línea del archivo /etc/sudoers de AMI está configurada de la siguiente manera: ec2-user ALL=(ALL) NOPASSWD: ALL Puede volver a habilitar el requisito de ingresar una contraseña para sudo o puede hacer otros cambios para reforzar la seguridad como parte de la configuración del sistema.
Acceso Interactivo con sudo -i
Para obtener una shell interactiva como root: sudo -i Esto es útil en sistemas configurados para impedir accesos directos a root, como en instancias de nube donde la cuenta de usuario inicial tiene permisos mediante sudo sin requerir contraseña.
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.