Skip to content

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 su y sudo para escalar privilegios de manera temporal y segura.
  • Configurar el acceso a superusuario para usuarios específicos a través de herramientas como /etc/sudoers y visudo.

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 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 user02 Las 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) ALL La cadena %wheel es 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 primer ALL), los usuarios en el grupo wheel pueden ejecutar comandos como cualquier otro usuario (el segundo ALL) y cualquier otro grupo (el tercero ALL) en el sistema.
  • El comando final ALL especifica 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.