Concesión de privilegios en Linux

LinuxBeginner
Practicar Ahora

Introducción

En los sistemas Linux, administrar los permisos de usuario y el control de acceso es fundamental para la administración del sistema y la seguridad. El comando sudo, abreviatura de «superuser do», permite que los usuarios autorizados ejecuten comandos con privilegios elevados, normalmente los de la cuenta de superusuario o root.

En este laboratorio aprenderá a conceder y restringir privilegios a los usuarios en un entorno Linux. Aprenderá a añadir usuarios al grupo sudo para que puedan realizar tareas administrativas y a limitar sus permisos a comandos específicos. Estas habilidades son esenciales para mantener sistemas seguros en los que el acceso a operaciones sensibles debe controlarse cuidadosamente.

Administración de usuarios y conceptos básicos de sudo

En este paso aprenderá sobre la administración de usuarios en Linux y los conceptos básicos del comando sudo. Creará un usuario nuevo y aprenderá a concederle privilegios administrativos.

¿Qué es sudo?

El comando sudo permite que los usuarios autorizados ejecuten comandos con los privilegios de seguridad de otro usuario, normalmente los del superusuario (root). Así se pueden realizar tareas administrativas sin iniciar sesión como root, lo que se considera una buena práctica de seguridad.

Crear un usuario nuevo

Primero, cree una cuenta de usuario nueva. Abra el terminal y ejecute este comando:

sudo adduser trusted_advisor

El sistema le pedirá que introduzca una contraseña y algunos datos opcionales para el usuario nuevo. Para este laboratorio, puede usar una contraseña sencilla como password123 y dejar los demás campos en blanco pulsando Intro.

El resultado debería parecerse a este:

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

Comprobar la información del usuario

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

grep trusted_advisor /etc/passwd

Debería aparecer una línea con la información del usuario.

Conceder privilegios de sudo

Para conceder privilegios de sudo a un usuario, debe añadirlo al grupo sudo. En Ubuntu, los miembros de este grupo pueden usar el comando sudo. Ejecute el siguiente comando:

sudo usermod -aG sudo trusted_advisor

Este comando añade (-a) el usuario trusted_advisor al grupo sudo (-G sudo). A partir de ese momento, el usuario podrá ejecutar comandos con privilegios administrativos.

Verificar el acceso a sudo

Para verificar que el usuario nuevo tenga acceso a sudo, cambie a esa cuenta e intente listar el contenido del directorio /root, al que normalmente solo puede acceder el usuario root:

su - trusted_advisor

Cuando se le solicite, introduzca la contraseña que configuró para este usuario. Después, ejecute:

sudo ls /root

El sistema volverá a pedirle la contraseña (la primera vez que use sudo). Después de introducirla, debería ver el contenido del directorio /root. Esto confirma que el usuario tiene privilegios de sudo.

Por último, salga de la sesión de trusted_advisor para volver a su usuario original:

exit

Limitar el acceso a sudo con el archivo sudoers

En este paso aprenderá a restringir los privilegios de sudo de un usuario a comandos específicos mediante el archivo sudoers. Así aplicará el principio de mínimo privilegio: los usuarios solo deben tener los privilegios mínimos necesarios para realizar sus tareas.

Conocer el archivo sudoers

El archivo /etc/sudoers controla quién puede usar el comando sudo y qué comandos puede ejecutar. Nunca edite este archivo directamente con un editor de texto normal, ya que un error de sintaxis podría impedirle acceder al sistema. En su lugar, use siempre el comando visudo, que comprueba si hay errores de sintaxis antes de guardar.

Quitar el acceso general del grupo

Los permisos de sudo de las reglas coincidentes se combinan. Añadir una regla para comandos específicos no anula el acceso completo que concede el grupo sudo. Primero, desde la sesión original de labex, quite ese acceso general:

sudo deluser trusted_advisor sudo

Al realizar las pruebas, inicie una sesión nueva con su - trusted_advisor para que se aplique la pertenencia actualizada al grupo.

Editar el archivo sudoers

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

sudo EDITOR=vim visudo

Este comando abre Vim explícitamente, por lo que las teclas de edición y guardado que se indican a continuación corresponden a ese editor. Pulse G para ir a la última línea y, después, o para abrir una línea nueva en modo de inserción.

Conocer la sintaxis de sudoers

La sintaxis básica de 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 al que se aplica esta regla (normalmente, ALL)
  • run_as_user: el usuario con el que se ejecutarán los comandos (root solo para root o ALL para cualquier usuario)
  • run_as_group: el grupo con el que se ejecutarán los comandos (se puede omitir)
  • NOPASSWD: etiqueta opcional que permite ejecutar comandos sin introducir una contraseña
  • commands: los comandos específicos que se pueden ejecutar con sudo

Conceder acceso restringido a sudo

Desplácese hasta el final del archivo y añada esta línea para permitir que trusted_advisor ejecute solo los comandos cp y mv sin contraseña:

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

Añada también esta línea aparte para habilitar un registro de sudo específico en este contenedor, que no proporciona /var/log/auth.log:

Defaults logfile="/var/log/sudo.log"

Pulse Esc, escriba :wq y pulse Enter para guardar y salir de Vim. Si visudo informa de un error de sintaxis, pulse e para volver a editar el archivo y corregirlo. Para descartar los cambios en Vim, pulse Esc, escriba :q! y pulse Enter.

Este ejercicio solo sirve para practicar la coincidencia de comandos: permitir acceso irrestricto como root a cp o mv puede sobrescribir archivos sensibles y no es una restricción segura para un entorno de producción.

Probar el acceso restringido a sudo

Ahora compruebe que el acceso restringido a sudo funcione como se espera. Primero, vuelva al espacio de trabajo del laboratorio y cree un archivo de prueba:

cd /home/labex/project
echo "This is a test file" > important_file.txt

A continuación, cambie al usuario trusted_advisor:

su - trusted_advisor

Introduzca la contraseña cuando se le solicite.

Intente copiar el archivo al directorio root. La operación debería estar permitida:

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

El comando debería ejecutarse correctamente sin pedirle una contraseña.

Ahora intente ejecutar un comando que no esté en la lista permitida, como cat:

sudo -n cat /root/important_file.txt

El comando debe fallar porque cat no está permitido. La opción -n evita que aparezca una solicitud de contraseña; el mensaje de denegación puede indicar que se necesita una contraseña o que el comando no está permitido. El comando no debe mostrar el contenido del archivo.

Salga de la sesión del usuario restringido antes de comprobar la copia, ya que ls tampoco está entre los comandos permitidos:

exit

Como usuario labex, compruebe que el archivo se haya copiado:

sudo ls /root/

En el resultado debería aparecer important_file.txt.

Eliminar el archivo de prueba

Para limpiar, elimine el archivo de prueba:

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

Registros de sudo y consideraciones de seguridad

En este paso aprenderá sobre los registros de sudo y las buenas prácticas de seguridad. Supervisar el uso de sudo es importante para la seguridad y las auditorías.

Registro de sudo

Cuando los usuarios ejecutan comandos con sudo, estas acciones quedan registradas. Esto proporciona un historial de auditoría útil para supervisar la seguridad y solucionar problemas.

Las instalaciones de Ubuntu con un servicio de registro del sistema suelen usar /var/log/auth.log. En cambio, este contenedor usa el registro específico que configuró en el paso 2. Como usuario labex, examine las actividades recientes de sudo:

sudo tail -n 10 /var/log/sudo.log

Este comando muestra las últimas 10 entradas relacionadas con sudo. El resultado debería incluir marcas de tiempo, nombres de usuario y los comandos ejecutados con sudo.

Buenas prácticas de seguridad para sudo

Estas son algunas buenas prácticas para administrar los privilegios de sudo:

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

  • Usar comandos específicos: en lugar de conceder acceso completo a sudo, especifique exactamente qué comandos puede ejecutar cada usuario.

  • Exigir contraseñas: para las operaciones sensibles, asegúrese de que los usuarios tengan que introducir su contraseña al usar sudo.

  • Realizar auditorías periódicas: revise periódicamente los registros de sudo y el archivo sudoers para asegurarse de que estén bien configurados.

  • Quitar los accesos innecesarios: cuando los usuarios ya no necesiten privilegios elevados, quítelos del grupo sudo cuanto antes.

Quitar el acceso a sudo

En el paso 2 ya quitó a trusted_advisor del grupo sudo. Para revocar el acceso restante, concedido mediante la regla específica para comandos, elimine también esa regla:

sudo EDITOR=vim visudo

Pulse Esc, escriba /^trusted_advisor y pulse Enter para buscar la regla. Pulse dd para eliminar la línea completa:

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

Conserve la línea Defaults logfile. Escriba :wq y pulse Enter para guardar y salir. Compruebe la pertenencia al grupo:

groups trusted_advisor

El resultado no debería incluir sudo.

Probar la revocación del acceso a sudo

Compruebe que el usuario ya no pueda ejecutar comandos con sudo:

su - trusted_advisor

Introduzca la contraseña cuando se le solicite.

Intente ejecutar un comando con sudo:

sudo -n ls /root

Ahora debería aparecer el mensaje trusted_advisor is not in the sudoers file. El comando debe fallar.

Salga de la sesión del usuario trusted_advisor:

exit

Volver a conceder acceso a sudo

Para este laboratorio, vuelva a añadir el usuario al grupo sudo:

sudo usermod -aG sudo trusted_advisor

Compruebe que el usuario vuelva a pertenecer al grupo sudo:

groups trusted_advisor

Esta vez, el resultado debería incluir «sudo» en la lista de grupos.

Resumen

En este laboratorio ha aprendido técnicas esenciales para administrar usuarios y controlar privilegios en Linux. Ha practicado los siguientes conceptos y operaciones:

  1. Crear usuarios: aprendió a crear cuentas de usuario con el comando adduser.

  2. Conceder privilegios de sudo: aprendió a conceder capacidades administrativas a los usuarios añadiéndolos al grupo sudo.

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

  4. Registrar y supervisar sudo: exploró cómo se registran las actividades de sudo y por qué es importante revisar esos registros por motivos de seguridad.

  5. Administrar el acceso a sudo: aprendió a conceder y quitar privilegios de sudo a los usuarios según sea necesario.

Estas habilidades son fundamentales para la administración de sistemas Linux y la seguridad. Si administra correctamente los privilegios de usuario, puede mantener un sistema seguro en el que los usuarios tengan acceso a los recursos que necesitan sin poner en riesgo la integridad ni la seguridad del sistema.