Concesión de privilegios en Linux

LinuxBeginner
Practicar Ahora

Introducción

En los sistemas Linux, la gestión de permisos de usuario y el control de acceso es un aspecto fundamental de la administración y seguridad del sistema. El comando sudo, abreviatura de "superuser do" (hacer como superusuario), permite a los usuarios autorizados ejecutar comandos con privilegios elevados, normalmente los del superusuario o de la cuenta root.

Este laboratorio (LabEx) te guiará a través del proceso de otorgar y restringir privilegios a los usuarios en un entorno Linux. Aprenderás cómo agregar usuarios al grupo sudo, lo que les permitirá realizar tareas administrativas, y cómo limitar sus permisos a comandos específicos. Estas habilidades son esenciales para mantener sistemas seguros donde el acceso a operaciones sensibles debe controlarse cuidadosamente.

Comprender la gestión de usuarios y los conceptos básicos de sudo

En este paso, aprenderás sobre la gestión de usuarios en Linux y los conceptos básicos del comando sudo. Crearás un nuevo usuario y entenderás cómo otorgarle privilegios administrativos.

¿Qué es sudo?

El comando sudo permite a los usuarios autorizados ejecutar comandos con los privilegios de seguridad de otro usuario, normalmente el superusuario (root). Esto proporciona una forma de realizar tareas administrativas sin iniciar sesión como el usuario root, lo cual se considera una mejor práctica de seguridad.

Crear un nuevo usuario

Comencemos creando una nueva cuenta de usuario. Abre tu terminal y ejecuta el siguiente comando:

sudo adduser trusted_advisor

Se te pedirá que ingreses una contraseña y alguna información opcional para el nuevo usuario. Para este laboratorio (LabEx), puedes establecer una contraseña sencilla como password123 y dejar los demás campos en blanco presionando Enter.

La salida debería ser similar a esta:

Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
 Full Name []:
 Room Number []:
 Work Phone []:
 Home Phone []:
 Other []:
Is the information correct? [Y/n] Y

Verificar la información del usuario

Para verificar que el usuario se haya creado correctamente, puedes examinar el contenido del archivo /etc/passwd:

grep trusted_advisor /etc/passwd

Esto debería mostrar una línea que contenga la información del usuario.

Otorgar privilegios de sudo

Para otorgar a un usuario privilegios de sudo, debes agregarlo al grupo sudo. En Ubuntu, los miembros del grupo sudo tienen permiso para usar el comando sudo. Ejecuta el siguiente comando:

sudo usermod -aG sudo trusted_advisor

Este comando agrega (-a) al usuario trusted_advisor al grupo sudo (-G sudo). Ahora el usuario podrá ejecutar comandos con privilegios administrativos.

Verificar el acceso de sudo

Para verificar que el nuevo usuario tenga acceso a sudo, puedes cambiar a esa cuenta de usuario e intentar listar el contenido del directorio /root, que normalmente solo es accesible para el usuario root:

su - trusted_advisor

Cuando se te solicite, ingresa la contraseña que estableciste para este usuario. Luego ejecuta:

sudo ls /root

Se te pedirá la contraseña nuevamente (primer uso de sudo). Después de ingresarla, deberías ver el contenido del directorio /root, lo que confirma que el usuario tiene privilegios de sudo.

Finalmente, sal de la sesión del usuario trusted_advisor para volver a tu usuario original:

exit

Limitar el acceso de sudo con el archivo sudoers

En este paso, aprenderás cómo restringir los privilegios de sudo de un usuario a comandos específicos utilizando el archivo sudoers. Esto implementa el principio de privilegio mínimo, que establece que los usuarios solo deben tener los privilegios mínimos necesarios para realizar sus tareas.

Comprender el archivo sudoers

El archivo /etc/sudoers controla quién puede usar el comando sudo y qué comandos puede ejecutar. Este archivo nunca debe editarse directamente con un editor de texto normal, ya que errores de sintaxis podrían bloquearte del sistema. En su lugar, siempre utiliza el comando visudo, que comprueba los errores de sintaxis antes de guardar.

Editar el archivo sudoers

Para editar el archivo sudoers de forma segura, utiliza el comando visudo:

sudo visudo

Esto abrirá el archivo sudoers en el editor predeterminado (generalmente nano o vi).

Comprender la sintaxis de sudoers

La sintaxis básica para una entrada de sudo en el archivo sudoers es:

user_or_group    host=(run_as_user:run_as_group)    NOPASSWD: commands

Donde:

  • user_or_group: El usuario o grupo al que se aplica esta regla.
  • host: El nombre del host donde se aplica esta regla (generalmente ALL).
  • run_as_user: El usuario como el que se ejecutarán los comandos (generalmente ALL, lo que significa root).
  • run_as_group: El grupo como el que se ejecutarán los comandos (puede omitirse).
  • NOPASSWD: Etiqueta opcional que permite ejecutar comandos sin ingresar una contraseña.
  • commands: Los comandos específicos que se pueden ejecutar con sudo.

Agregar acceso restringido de sudo

Desplázate hasta el final del archivo y agrega la siguiente línea para otorgar a trusted_advisor permisos para ejecutar solo los comandos cp y mv sin contraseña:

trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv

Para guardar el archivo en nano, presiona Ctrl+O, luego Enter, y para salir, presiona Ctrl+X.

Probar el acceso restringido de sudo

Ahora probemos si el acceso restringido de sudo funciona como se espera. Primero, creemos un archivo de prueba en el directorio actual:

echo "This is a test file" > important_file.txt

Ahora, cambiemos al usuario trusted_advisor:

su - trusted_advisor

Ingresa la contraseña cuando se te solicite.

Intenta copiar el archivo al directorio root, lo cual debería estar permitido:

sudo cp /home/labex/project/important_file.txt /root/

Esto debería tener éxito sin pedir una contraseña.

Ahora, intenta ejecutar un comando que no está en la lista permitida, como cat:

sudo cat /root/important_file.txt

Deberías obtener un error de permiso denegado porque cat no está en la lista de comandos permitidos.

Finalmente, verifica que el archivo se haya copiado al directorio root:

sudo ls /root/

Deberías ver important_file.txt en la salida.

Sal de la sesión del usuario trusted_advisor:

exit

Eliminar el archivo de prueba

Para limpiar, elimina el archivo de prueba:

sudo rm important_file.txt

Comprender los registros de sudo y las consideraciones de seguridad

En este paso, aprenderás sobre el registro de sudo y las mejores prácticas de seguridad. El monitoreo del uso de sudo es importante para fines de seguridad y auditoría.

Registro de sudo

Cuando los usuarios ejecutan comandos con sudo, estas acciones se registran. Esto proporciona una pista de auditoría que puede ser útil para el monitoreo de seguridad y la resolución de problemas.

En Ubuntu, los registros de sudo generalmente se almacenan en el registro de autenticación del sistema en /var/log/auth.log. Examinemos las actividades recientes de sudo:

sudo grep sudo /var/log/auth.log | tail -n 10

Este comando muestra las últimas 10 entradas de registro relacionadas con sudo. La salida debe incluir marcas de tiempo, nombres de usuario y los comandos que se ejecutaron con sudo.

Mejores prácticas de seguridad para sudo

A continuación, se presentan algunas mejores prácticas para gestionar los privilegios de sudo:

  1. Principio de privilegio mínimo: Los usuarios solo deben tener los privilegios mínimos necesarios para realizar sus tareas.

  2. Utilizar comandos específicos: En lugar de otorgar acceso completo a sudo, especifica exactamente qué comandos puede ejecutar un usuario.

  3. Establecer requisitos de contraseña: Para operaciones sensibles, asegúrate de que los usuarios deban ingresar su contraseña al usar sudo.

  4. Auditoría regular: Revisa periódicamente los registros de sudo y el archivo sudoers para garantizar una configuración adecuada.

  5. Eliminar acceso innecesario: Cuando los usuarios ya no necesiten privilegios elevados, retíralos del grupo sudo de inmediato.

Eliminar acceso a sudo

Si un usuario ya no necesita privilegios de sudo, puedes eliminarlo del grupo sudo:

sudo deluser trusted_advisor sudo

Verifica que el usuario ya no esté en el grupo sudo:

groups trusted_advisor

La salida ya no debe incluir "sudo" en la lista de grupos.

Probar el acceso revocado de sudo

Verifiquemos que el usuario ya no puede ejecutar comandos con sudo:

su - trusted_advisor

Ingresa la contraseña cuando se te solicite.

Intenta ejecutar un comando con sudo:

sudo ls /root

Ahora deberías recibir un error de permiso denegado.

Sal de la sesión del usuario trusted_advisor:

exit

Volver a agregar acceso a sudo

Para los fines de este laboratorio (LabEx), agreguemos al usuario nuevamente al grupo sudo:

sudo usermod -aG sudo trusted_advisor

Verifica que el usuario esté ahora nuevamente en el grupo sudo:

groups trusted_advisor

La salida ahora debe incluir "sudo" en la lista de grupos.

Resumen

En este laboratorio (LabEx), aprendiste técnicas esenciales de gestión de usuarios y control de privilegios en Linux. Adquiriste experiencia práctica con los siguientes conceptos y operaciones:

  1. Creación de usuarios: Aprendiste cómo crear nuevas cuentas de usuario utilizando el comando adduser.

  2. Otorgar privilegios de sudo: Descubriste cómo dar a los usuarios capacidades administrativas agregándolos al grupo sudo.

  3. Restringir el acceso de sudo: Practicaste la implementación del principio de privilegio mínimo al limitar el acceso de sudo de un usuario a comandos específicos utilizando el archivo sudoers.

  4. Registro y monitoreo de sudo: Exploraste cómo se registran las actividades de sudo y la importancia de monitorear estos registros con fines de seguridad.

  5. Gestión del acceso de sudo: Aprendiste cómo agregar y eliminar privilegios de sudo de los usuarios según sea necesario.

Estas habilidades son fundamentales para la administración y seguridad de sistemas Linux. Al gestionar adecuadamente los privilegios de los usuarios, puedes mantener un sistema seguro en el que los usuarios tengan acceso a los recursos que necesitan sin comprometer la integridad o la seguridad del sistema.