El control de acceso SELinux son unos módulos de seguridad linux (o linux security modules, LSM) que se implementan a partir del kernel 2.6.x proporcionando un sistema transparente para el usuario del sistema y una configuración flexible que debe ser realizada solo por el administrador con el máximo nivel de privilegio en el sistema.
SELinux es basado en «contextos de seguridad», asignando a través de «etiquetas» políticas que define mediante la identidad del usuario y sus operaciones permitidas. Las reglas establecidas por la política SELinux se encuentran por encima del control de acceso discrecional (DAC), para entender mejor la aplicación que tiene cada una en Linux veremos cuáles son sus diferencias.
Discretionary Acces Control (DAC) basados en la identidad de usuarios o grupos a los que pertenecen ambos pueden restringir el acceso a objetos, recursos del sistema como archivos, directorios, zócalos, dispositivos, etc, Se dice que es discrecional gracias a su capacidad que tiene un dueño que tiene control sobre unos permisos (lectura, escritura, ejecución) puede transferir estos permisos a otro usuarios o grupos.
Mandatory Acces Control (MAC) sistema utilizado en SELinux que se basa en políticas, las cuales determinan si una operación sobre un objeto recursos del sistema como archivos, directorios, zócalos, dispositivos, etc, realizada por un usuario es permitida o denegada.
la diferencia que marca la necesidad de implementar otro control de seguridad
DAC y su acceso a recursos son descentralizados y el propietario de cada objeto es quien se encarga de asignar los permisos que tendrán los demás usuarios o grupos, mientras que en MAC los objetos y los sujetos cuentan con esos atributos dados por DAC, pero son las políticas las que se encargan del contexto de seguridad permitiendo o denegando operaciones.
¿MAC y DAC operan en conjunto?
Si activas las políticas de seguridad SELinux, el proceso de seguridad contaría con 2 filtros; el primer filtro de seguridad DAC y el segundo filtro de seguridad MAC. Si DAC niega el acceso al recurso no hay necesidad que pase por el filtro de seguridad MAC pero si por el contrario DAC da el permiso, es MAC quien se encarga de verificar los controles de acceso.
Las reglas SELinux autorizan o deniegan operaciones mediante («policy») políticas que podemos crear de manera personalizada, aunque por comodidad contamos políticas estándar (targeted, dirigida, y strict, estricta) que nos evitan el tedioso y complicado proceso de creación de las políticas, podemos elegir entre una y otra en el archivo de configuración del cual hablamos ya en el anterior tutorial Modulo de seguridad SELinux (Configuración básica).
Los permisos de un proceso dependen de su contexto de seguridad que están definidas por la identidad del usuario que lanza el proceso junto con el rol y el dominio que el usuario tiene asignado justo en ese momento, esto permite protegernos del «ataque del día cero».
Como puede SELinux protegernos de un «ataque del día cero»
ahora si analizamos todo lo dicho anteriormente, si utilizamos solo el sistema tradicional DAC nos encontramos el inconveniente de que los usuarios tienen completo control de todo lo que les pertenece. así por ejemplo si existe una falla de seguridad que afecta alguna aplicación que ejecuta el usuario esto se ve reflejado en una falla que afecta todos los objetos que el usuario utiliza, imaginen ahora el caso de que el usuario tengo un nivel de privilegios de súper usuario, esto afectaría a todo el sistema. MAC es esa barrera que pone limitantes entre el usuario y ese objeto al que está accediendo, conteniendo y logrando que el problema de seguridad se propague.