Product SiteDocumentation Site

6.2. Confinando Usuarios Nuevos de Linux: useradd

Los usuarios Linux mapeados al usuario SELinux unconfined_u corren en el dominio unconfined_t. Esto se ve ejecutando el comando id -Z luego de haber ingresado como el usuario Linux que se mapea a unconfined_u:
$ id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Cuando los usuarios linux ejecuten en el dominio unconfined_t, se aplican las reglas de la política de SELinux, pero las reglas de políticas que existen para usuarios Linux que corren en el dominio unconfined_t permiten casi todos los accesos. Si los usuarios Linux no confinados ejecutan una aplicación que la política de SELinux define pueden transicionar desde el dominio unconfined_t a su propio dominio confinado, los usuarios Linux no confinados todavía pueden ser sujetos a restricciones del dominio confinado. El beneficio de seguridad de esto es que, aunque el usuario Linux corre en un dominio confinado, la aplicación permanece confinada, y por lo tanto, la explotación de una brecha en la aplicación se puede limitar por la política. Nota: esto no protege al sistema del usuario. En su lugar, el usuario y el sistema están siendo protegido de posibles daños causados en alguna debilidad en la aplicación.
Cuando se crean usuarios LInux con useradd, use la opción -Z para especificar a qué usuario SELinux se debe mapear. El siguiente ejemplo crea un usuario Linux nuevo, useruuser, y mapea ese usuario al usuario SELinux user_u. Los usuarios Linux mapeados al usuario SELinux user_u corren en el dominio user_t. En este dominio, los usuarios Linux no pueden correr aplicaciones setuid a menos que la política de SELinux lo permita (tal como passwd), y tampoco pueden correr su o sudo, lo que evita que se puedan volver usuarios root de Linux con estos comandos.
  1. Como usuario root de Linux, corra el comando /usr/sbin/useradd -Z user_u useruuser para crear el usuario Linux nuevo (useruuser) que se mapeará al usuario SELinux user_u.
  2. Como usuario root de Linux, corra el comando semanage login -l para ver el mapeo entre el usuario Linux useruuser y user_u:
    # /usr/sbin/semanage login -l
    
    Login Name                SELinux User              MLS/MCS Range
    
    __default__               unconfined_u              s0-s0:c0.c1023
    root                      unconfined_u              s0-s0:c0.c1023
    system_u                  system_u                  s0-s0:c0.c1023
    useruuser                 user_u                    s0
    
  3. Como usuario root de Linux, corra el comando passwd useruuser para asignar una contraseña para el usuario useruuser de Linux:
    # passwd useruuser
    Cambiando la contraseña del usuario useruuser.
    Nueva contraseña de UNIX: Ingrese una contraseña
    Reingrese la nueva contraseña de UNIX: Ingrese la misma contraseña de nuevo 
    passwd: todos los tokens actualizados exitosamente.
    
  4. Salga de su sesión actual, e ingrese como el usuario useruuser de Linux. Cuando ingrese, pam_selinux mapea el usuario Linux a un usuario SELinux (en este caso, user_u), y configura el contexto SELinux resultante. El shell del usuario Linux es luego lanzado con este contexto. Corra el comando id -Z para ver el contexto de un usuario Linux:
    [useruuser@localhost ~]$ id -Z
    user_u:user_r:user_t:s0
    
  5. Salga de la sesión useruuser de Linux, y vuelva a ingresar en su cuenta. Si no quiere el usuario useruuser, ejecute el comando /usr/sbin/userdel -r useruuser como usuario root de Linux para borrarlo junto con su directorio de inicio.