Introducción.
SELinux es una arquitectura de seguridad integrada en el kernel 2.6.x mediante los módulos de seguridad de Linux (LMS). Es un proyecto de la Agencia Nacional de Seguridad de los Estados Unidos (NSA) y de la comunidad de Linux. Las razones por las cuales la NSA decide publicar una distribución de Linux es porque de acuerdo a la política de aseguramiento de información de la NSA es buscar un sistema operativo que separe la información confidencial de la información pública.Para poder realizar esto, SELinux implementa un mecanismo para establecer
en cada archivo y proceso el contexto en el que está siendo utilizado.
Mediante la utilización de un módulo del sistema operativo, es posible
establecer reglas para permitir o denegar el acceso a cualquier archivo
del sistema.
SELinux también permite implementar un modelo adicional de seguridad
(Multi-Level Security, MLS) en el que además de lo indicado hasta ahora es
posible, para cada objeto, un nivel de seguridad (Top Secret, Secret, Classified, Unclassified).
SELinux construye otra capa de control de acceso en la parte superior de DAC, esta capa es el control de acceso obligatorio (MAC). La comprobación de privilegios de SELinux se verifica primero en DAC y, a continuación, MAC. Si DAC le deniega el acceso, ya no se verifica MAC.
Antes de iniciar la implementación de políticas, es recomendable trabajar en modo “permissive”. Para asegurarnos de que todos los archivos estén etiquetados se puede marcar un "autorelabel".
Para el desarrollo de esta práctica se utilizaron las diferentes categorías y niveles, las siguientes categorías se editaron directamente en el archivo setrans.conf:
# Secret level with compartments s2=Secret s2:c3=Marketing s2:c4=Finanzas s2:c2=RH
s3=TopSecret s3:c1=CEO |
Para la creación de usuarios con específicos niveles
[root@seguridad ~]# semanage user -a -L s2 -r s2:c3 -R user_home_t -P user s2_Marketing [root@seguridad ~]# semanage user -a -L s2 -r s2:c4 -R user_r -P user s2_Finanzas [root@seguridad ~]# semanage user -a -L s2 -r s2:c2 -R user_r -P user s2_RH
|
Las opciones se explican en la siguiente tabla.
Opciones | Significado |
-L, --level | El nivel por para selinux |
-R --role | Selinux Roles, este puede user_r |
-P | Este es selinux prefix esto es agrego cuando se etiqueta users y home users |
Para que pueda ser utilizado el filesystem que se cifrado, es necesario cambiar el contexto de este para que pueda ser accesado por todo los usuarios con este rol.
[root@seguridad ~]# chcon -t user_home_dir_t inf/
|
Posteriormente son etiquetados los archivos para que este solo pueda ser visto o modificado por los usuarios que cumplan con la política.
[root@seguridad ~]# chcon -l s2 -u s2_Finanzas -t user_home_t ./Archivo3 [root@seguridad ~]# chcon -l s3 -u s3_CEO -t user_home_t ./Archivo4 [root@seguridad ~]# chcon -l s2 -u s2_RH -t user_home_t ./Archivo2 [root@seguridad ~]# chcon -l s2 -u s2_Marketing -t user_home_t ./Archivo1 |
Para verificar que selinux esta corriendo se puede ejecutar el comando “sestatus”
Donde nos mostrara el status de selinux y bajo que políticas está corriendo.
Para demostrar que selinux está configurado se hacen las siguientes prueba, se otorgaron los permisos 777 a los diferentes archivos previamente etiquetados.
Ahora nos conectamos con los diferentes usuarios.
El usuario1 con “s2_Finanzas:user_r:user_t:Finanzas” solo podrá ver el archivo de su nivel, en este caso solo el Archivo3 y Salida que es de un nivel menor,
El usuario 3 puede ver los archivos de su misma categoría y nivel, Es por eso que puede ver el Archivo2 y Archivo3.
Para el usuario 4 Puede ver los archivos de su misma categori y nivel, no puede acceder al Archivo2 ya que este no pertence a la categoría RH.
2. Access Control Lists
Los archivos y directorios tienen conjuntos de permisos para el dueño del archivo, el grupo asociado con el archivo, y todos los demás usuarios del sistema. Sin embargo, estos conjuntos de permisos tienen limitaciones. Por ejemplo, los permisos diferentes no se puede configurar para diferentes usuarios. A continuación se muestra la implementación y su demostración Access Control Lists (ACL).
Antes de empezar a poner las reglas de acceso es necesario montar el filesystem en ACL
[root@seguridad ~]# mount –o acl /dev/mapper/secretote /home/inf |
En la siguiente imagen el archivo "salida" pertenece a usuario y grupo root y como se ve en la siguiente imagen no puede ser leído por otros, utilizando ACL se configura para darle permisos a un solo usuario de lectura y escritura.
La instrucción "getfacl" nos muestra el status y los permisos otorgados sobre cierto archivo.
El usuario 4 antes de que se le otorgara los permisos, por medio de ACL, no podía leer el archivo salida posteriormente de aplicar la regla, el usuario4 puede leer los archivos.
Como se muestra en la siguiente imagen
La información es un recurso vital para toda organización, y el buen manejo de esta puede significar la diferencia entre el éxito o el fracaso para cualquier toma de decisión.
3.- Referencias