Red Hat Training

A Red Hat training course is available for RHEL 8

3.5.2.2. Confinar a un administrador usando sudo y el rol sysadm_r

Puede asignar un usuario específico con privilegios administrativos al usuario staff_u SELinux, y configurar sudo para que el usuario pueda obtener el rol de administrador sysadm_r SELinux. Este rol le permite al usuario realizar tareas administrativas sin que se le niegue SELinux. Cuando el usuario se conecta, la sesión se ejecuta en el contexto staff_u:staff_r:staff_t SELinux, pero cuando el usuario introduce un comando usando sudo, la sesión cambia al contexto staff_u:sysadm_r:sysadm_t.

Requisitos previos

  • El usuario root se ejecuta sin restricciones. Este es el valor por defecto de Red Hat Enterprise Linux.

Procedimiento

  1. Cree un nuevo usuario, añada el usuario al grupo de usuarios wheel y asigne el usuario al usuario de SELinux staff_u:

    # adduser -G wheel -Z staff_u example.user
  2. Opcional: Asigne un usuario existente al usuario staff_u SELinux y añada el usuario al grupo de usuarios wheel:

    # usermod -G wheel -Z staff_u example.user
  3. Para permitir que example.user obtenga el rol de administrador de SELinux, cree un nuevo archivo en el directorio /etc/sudoers.d/, por ejemplo:

    # visudo -f /etc/sudoers.d/example.user
  4. Añada la siguiente línea al nuevo archivo:

    example.user ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL

Pasos de verificación

  1. Comprueba que example.user esté asignada al usuario de SELinux staff_u:

    # semanage login -l | grep example.user
    example.user     staff_u    s0-s0:c0.c1023   *
  2. Inicie sesión como example.user, por ejemplo, utilizando SSH, y cambie al usuario root:

    [example.user@localhost ~]$ sudo -i
    [sudo] password for example.user:
  3. Muestra el contexto de seguridad de root:

    # id -Z
    staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
  4. Intente una tarea administrativa, por ejemplo, reiniciar el servicio sshd:

    # systemctl restart sshd

    Si no hay salida, el comando ha terminado con éxito.

    Si el comando no termina con éxito, imprime el siguiente mensaje:

    Failed to restart sshd.service: Access denied
    See system logs and 'systemctl status sshd.service' for details.