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.
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
.
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
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.
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
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.