CentOS7 SELinux no parece adherirse a las categorías MCS

CentOS7 SELinux no parece adherirse a las categorías MCS

Problema

Un archivo asignado a una determinada categoría SELinux MCS (Seguridad multicategoría) puede ser leído por un usuario que no está asignado a esa categoría, lo que indica que MCS de alguna manera no funciona en mi sistema (ejecutando CentOS7, con una instalación mínima, SELinux haciendo cumplir endirigidopolítica ).

Fondo

Recientemente adquirí un pequeño vServer para mí, lo que me impulsó a sumergirme en la configuración segura del sistema y a manejar SELinux por primera vez. Tengo la intención de separar las aplicaciones que ejecutaré en el servidor ejecutándolas en contenedores acoplables (con el host funcionando en CentOS7). Me alegró saber que a cada contenedor acoplable se le asignan (de forma predeterminada) categorías SELinux MCS aleatorias al inicio para proporcionar una capa de seguridad adicional para la separación. Para familiarizarme con cómo funciona SELinux en general y MCS específicamente, configuré una VM en una de las máquinas de mi casa y jugué un poco. Al hacer eso, noté que MCS no funciona como esperaba, por lo que me falta algo importante o hay un problema de configuración en alguna parte.

Lo que hice

Para probar MCS seguí las instrucciones en [0] y [1]. Primero, me aseguré de que SELinux se esté ejecutandohaciendo cumplirmodo y con eldirigidopolítica usando sestatus. Siguiendo [0], creé unmcsuser_uUsuario SELinux y usuarios CentOSJohn,jane,juanjane, que luego asigné amcsuser_uusando semanage login. También asigné las categorías a los usuarios que se enumeran en [0] y terminé con:

Login Name | SELinux User | MLS/MCS Range

john | mcsuser_u | s0-s0:c122
jane | mcsuser_u | s0-s0:c123
johnjane | mcsuser_u | s0-s0:c122,123

desde semanage login -ly

mcsuser_u | MLS/MCS Level: s0 | MLS/MCS Range: s0-s0:c0.c1023 | SELinux Roles: user_r

de semanage user -l.

Hice el directorio de inicio del usuario.Johnlegible en todo el mundo ( chmod 707), iniciado sesión comoJohny creó un archivo de textojuantexto. Luego le asigné categoríac122a ese archivo (aún conectado comoJohn). También pude asignar categoría.c120al archivo, aunqueJohnno está categorizado comoc120él mismo, lo que no debería ser posible según [0] (posteriormente eliminéc120de nuevo). ls -lZ johntextmuestra la salida

-rw-rw-r-- john john mcsuser_u:object_r:user_home_t:s0:c122 johntext

Siguiendo lo anterior, inicié sesión como usuario.jane, y trató de leer el archivojuantextousando el catcomando, lo cual pude hacer.

Esto, para mí, indica claramente que MCS no está funcionando como esperaría (permitiendo el acceso a objetos de una determinada categoría sólo si el usuario que solicita el acceso tiene la misma categoría).

¿Soluciones?

Estoy algo confundido ahora y no sé dónde reside el error, así que recurro a ustedes para pedirles consejo. Probablemente sea solo una suposición errónea o un malentendido por mi parte, pero no puedo entenderlo en este momento y no tiene sentido para mí.A mi modo de ver, existen las siguientes posibilidades:

1. Tengo que activar manualmente los controles MCS o usar una política diferente

No encontré ninguna información sobre si tengo que activar manualmente el soporte MCS y así asumir que simplemente funciona si asigno etiquetas (basado en [1]). Otra fuente [2] sugiere que MCS está habilitado en eldirigidopolítica sobre (al menos) Fedora y RHEL, de la cual esperaría que no sea diferente para CentOS.

2. Hay una mala configuración de mi parte

Es posible que haya cometido algún error al configurar las categorías de usuario semanage logino al asignar categorías al archivo.

3. Simplemente está roto

..lo cual seria malo

Enlaces referenciados

0:https://selinux-mac.blogspot.de/2009/06/multi-category-security.html

1:https://www.centos.org/docs/5/html/Deployment_Guide-en-US/sec-mcs-getstarted.html

2:http://selinuxsymposium.org/2006/slides/08-mcs.pdf

sestatusSalida completa

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

[EDITAR]:

Acabo de probar los mismos pasos en una máquina virtual que ejecuta CentOS 6.9 donde todo se comporta como se esperaba. En este momento, asumiría que hay algún error relacionado con MCS en SELinux en CentOS o algunos cambios no documentados en la política/configuración que necesitarían ajustes. Todavía tengo dudas sobre cuáles serían los siguientes pasos sensatos para que funcione como se espera.

Respuesta1

Aparentemente hubo un cambio en las políticas de SELinux de CentOS6 a CentOS7, de modo que las restricciones MCS ya no se aplican a todos los tipos. Para que un tipo determinado se adhiera a MCS, el mcs_constrained_typeatributo debe agregarse a ese tipo mediante una política personalizada. Se pueden encontrar más detalles sobre cómo hacerlo (y qué tipos están restringidos por MCS de forma predeterminada (y por qué)) en unentrada de blog de Dan Walsh.

información relacionada