Los Archivos, tales como directorios y dispositivos, se llaman objetos. Los procesos, tal como un comando que ejecuta el usuario o la aplicación Mozilla® Firefox®, se llaman sujetos. La mayoría de los sistemas oeprativos usan un sistema de Control de Acceso Discrecional (DAC), que controla cómo interactuan los sujetos con los objetos, y cómo los sujetos interactuan entre sí. En sistemas operativos que usan DAC, los usuarios controlan los permisos de archivos (objetos) de los que son dueños. Por ejemplo, en sistemas operativos Linux®, los usuarios pueden hacer sus directorios legibles para el resto del mundo, dando a los usuarios y procesos (sujetos) acceso a información potencialmente sensible.
Los mecanismos DAC son fundamentalmente inadecuados para una fuerte seguridad del sistema. Las decisiones de acceso DAC son sólo basadas en la identidad del usuario y su propiedad, ignorando información de seguridad relevante tal como el rol del usuario, la función y la confiabilidad del programa, y la sensibilidad e integridad de los datos. Cada usuario tiene completa discreción sobre sus archivos, haciendo imposible aplicar una política de seguridad a nivel de sistema. Más aún, cada programa que ejecuta un usuario hereda todos los permisos garantizados al usuario y es libre de cambiar el acceso de archivos del usuario, por lo que no se provee una protección contra software malicioso. Muchos servicios del sistema y programas privilegiados deben ejecutarse con privilegios más allá de lo que realmente necesitan, por lo que una brecha en cualquiera de estos programas se puede explotar para obtener acceso completo al sistema.[]
El siguiente es un ejemplo de permisos usados en sistemas operativos Linux que no corren el Linux de Seguridad Mejorada (SELinux). Los permisos en estos ejemplos pueden diferir de su sistema. Use el comando ls -l
para ver los permisos de archivos:
$ ls -l archivo1
-rwxrw-r-- 1 usuario1 grupo1 0 2009-04-30 15:42 archivo1
Los primeros tres bits de permisos, rwx
, controlan el acceso que el usuario Linux usuario1
(en este caso, el dueño) tiene para el archivo1
. Los siguientes tres bits de permisos, rw-
, controlan el acceso que el grupo Linux grupo1
tiene para el archivo1
. Los últimos tres bits de permisos, r--
, controlan el acceso que todo el mundo tiene para el archivo1
, que incluyen a todos los usuarios y procesos.
Linux de Seguridad Mejorada (SELinux por Security-Enhanced Linux) agrega Control de Acceso Obligatorio (MAC en inglés) al kernel de Linux, y se habilita por defecto en Fedora. Una arquitectura MAC de propósito general necesita la habilidad de aplicar una política de seguridad puesta administrativamente sobre todos los procesos y archivos del sistema, basando decisiones en las etiquetas que contienen información variada relevante para la seguridad. Cuando se implementa apropiadamente, hace que un sistema se autodefienda adecuadamente y ofrece soporte crítico para la seguridad de aplicaciones protegiéndolas de la manipulación y sobrepaso. MAC provee una separación fuerte de aplicaciones que permite la ejecución a salvo de aplicaciones no confiables. Su habilidad para limitar los privilegios asociados con la ejecución de procesos limita el ámbito del potencial daño que puede resultar de la explotación de vulnerabilidades en aplicaciones y servicios del sistema. MAC hace que la información esté protegida de los usuarios legítimos con autorización limitada, así como de usuarios autorizados que involuntariamente ejecutaron aplicaciones maliciosas.[]
El siguiente es un ejemplo de las etiquetas que contienen información de seguridad relevante que se usa en los procesos, usuarios Linux y archivos, en sistemas operativos Linux que corren SELinux. Esta información se llama contexto de SELinux y se visualiza usando el comando ls -Z
:
$ ls -Z file1
-rwxrw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
En este ejemplo, SELinux provee un usuario (unconfined_u
), un rol (object_r
), un tipo (user_home_t
), y un nivel (s0
). Esta información se usa para tomar decisiones sobre el control de acceso. Con DAC, el acceso se controla basado sólo en los IDs de usuarios y grupos de Linux. Las reglas de políticas de SELinux se chequean después de las reglas DAC. Las reglas de políticas de SELInux no se usan si las reglas DAC niegan el acceso al principio.
En sistemas operativos Linux que corren SELinux, hay usuarios Linux así como usuarios SELinux. Los usuarios SELinux son parte de la política de SELinux. Los usuarios Linux se mapean a usuarios SELinux. Para evitar confusión, esta guía usa "usuarios Linux" y "usuarios SELinux" para diferenciar entre ambos.
2.1. Beneficios de usar SELinux
Todos los procesos y archivos se etiquetan con un tipo. Un tipo define un dominio para los procesos y un tipo para los archivos. Los procesos se separan entre sí corriéndolos en sus propios dominios, y las reglas de políticas de SELinux define cómo interactúan los procesos con los archivos, así como la forma en que interactúan entre sí. El acceso sólo se permite si existe una regla de política de SELinux que específicamente lo permita.
Control de acceso más fino. Yendo un paso más alla de los permisos tradicionales de UNIX® que se controlan a discreción del usuario y se basa en los IDs de usuario y de grupos de Linux, las decisiones de accesos de SELinux se basan en toda la información disponible, tales como un usuario SELinux, el rol, el tipo y, opcionalmente, un nivel.
La política de SELinux se define administrativamente, obligando a todo el sistema, y no se pone a discreción del usuario.
Vulnerabilidad reducida para ataques de escalamiento de privilegios. Un ejemplo: dado que los procesos corren en dominios, y son por lo tanto separados entresi, y las reglas de la política de SELinux definen cómo los procesos acceden a los archivos y a otros procesos, si un proceso queda comprometido, el atacante sólo tiene acceso a las funciones normales de ese proceso, y a archivos a los que el proceso tiene configurado que puede acceder. Por ejemplo, si el Servidor HTTP Apache es comprometido, un atacante no puede usar el proceso para leer archivos en los directorios home de los usuarios, a menos que una regla específica de la política de SELinux haya sido agregada o configurada para permitir tal acceso.
Se linux se puede usar para asegurar la confidencialidad e integridad de los datos, así como proteger los procesos de entradas no confiables.
SELinux no es:
software antivirus.
un reemplazo para las contraseñas, cortafuegos y otros sistemas de seguridad.
una solución todo en uno.
SELinux está diseñado para mejorar las soluciones de seguridad existentes, no reemplazarlas. Aún cuando corra SELinux, siga las buenas prácticas de seguridad, tales como mantener el software actualizado, usar contraseñas difíciles de adivinar, cortafuegos y demás.