Buscar

Español

Español

Iniciar sesión

Iniciar sesión/Registrar

Websites

¿Qué es SElinux?

SElinux: arquitectura de seguridad para los sistemas Linux

Security-Enhanced Linux (SELinux) es una arquitectura de seguridad para los sistemas Linux® que otorga a los administradores mayor control sobre las personas que pueden acceder al sistema. Originalmente, la Agencia de Seguridad Nacional (NSA) de Estados Unidos desarrolló este producto como una serie de parches para el kernel de Linux utilizando los módulos de seguridad de Linux (LSM).

SELinux se puso a disposición de la comunidad open source en el año 2000, y se integró al kernel upstream de Linux en 2003.


¿Cómo funciona SELinux?

SELinux define los controles de acceso para las aplicaciones, los procesos y los archivos dentro de un sistema. Utiliza las políticas de seguridad, que consisten en un conjunto de reglas que indican a SELinux a qué se puede acceder.

Cuando una aplicación o un proceso, conocidos como sujetos, solicitan acceso a algún objeto, por ejemplo un archivo, SELinux consulta la caché de vector de acceso (AVC), donde se almacenan los permisos de los objetos y los sujetos.

En caso de que SELinux no pueda tomar una decisión en función de los permisos almacenados en la caché, envía la solicitud al servidor de seguridad, que analiza el contexto de seguridad de la aplicación o del proceso y del archivo. El contexto de seguridad se aplica desde la base de datos de políticas de SELinux. Luego, se otorga o se niega el permiso.

En caso de que se niegue, aparecerá el mensaje "avc: denied" en /var/log.messages.

La configuración de SELinux

Hay muchas formas de configurar SELinux para proteger el sistema. Las más comunes son la política específica o la seguridad de varios niveles (MLS).

La política específica es la opción predeterminada, y comprende una serie de procesos, tareas y servicios, mientras que la MLS es muy compleja y, generalmente, solo la utilizan los organismos gubernamentales.

Para saber con qué configuración se ejecuta el sistema, basta con consultar el archivo /etc/sysconfig/selinux. El archivo contendrá una sección donde se indicará si SELinux se encuentra en modo permisivo, impositivo o deshabilitado, y qué política se debería cargar.

Aplicación de tipo y etiquetado de SELinux

La aplicación de tipo y el etiquetado son los conceptos más importantes de SELinux.

Este producto trabaja como sistema de etiquetado, lo cual significa que hay una etiqueta de SELinux asociada a cada archivo, proceso y puerto del sistema. Las etiquetas son un método lógico para agrupar elementos, y el kernel las gestiona durante el proceso de arranque.

El formato de las etiquetas es user:role:type:level (el nivel es opcional). El usuario, la función y el nivel se utilizan en implementaciones más avanzadas de SELinux, como la MLS. El tipo de la etiqueta es el aspecto más importante de la política específica.

SELinux utiliza la aplicación del tipo de etiqueta para aplicar cierta política definida en el sistema; es decir, las políticas de SELinux definen si un proceso que se ejecuta con cierto tipo de etiqueta puede acceder a un archivo que tiene determinado tipo de etiqueta.

Habilitación de SELinux

Si SELinux está deshabilitado en su entorno, puede habilitarlo editando /etc/selinux/config y estableciendo el ajuste SELINUX=permissive. Dado que no estaba habilitado actualmente, no es conveniente configurarlo como impositivo de inmediato, ya que es probable que haya elementos mal etiquetados en el sistema que podrían impedir su arranque.

Para que el sistema vuelva a etiquetar el sistema de archivos automáticamente, cree un archivo vacío con el nombre .autorelabel en el directorio raíz y reinicie el sistema. En caso de haber demasiados errores, deberá reiniciar el sistema en modo permisivo para que el arranque se ejecute correctamente. Una vez que todos los elementos se hayan vuelto a etiquetar, establezca el modo de SELinux en impositivo con /etc/selinux/config y reinicie el sistema, o ejecute el comando setenforce 1.

Si el administrador de sistemas no conoce bien la línea de comandos, puede utilizar las herramientas gráficas disponibles para gestionar SELinux.

SELinux brinda una capa de seguridad adicional para su sistema, que se encuentra integrada en las distribuciones de Linux. Si su sistema está en riesgo, debe permanecer activado para poder protegerlo.


El control de acceso discrecional (DAC) frente al control de acceso obligatorio (MAC)

Tradicionalmente, los sistemas Linux y UNIX utilizan DAC. SELinux es un ejemplo de un sistema MAC para Linux.

Con DAC, los archivos y los procesos tienen propietarios, que pueden ser usuarios, grupos o cualquier persona. Los usuarios pueden cambiar los permisos de sus propios archivos.

Con un sistema DAC, el usuario raíz tiene control de acceso total. El acceso raíz le permite acceder a los archivos de cualquier otro usuario o ejecutar cualquier otra acción en el sistema.

Sin embargo, en los sistemas MAC, como SELinux, hay una política de acceso establecida a nivel administrativo. Incluso si se modifica la configuración del DAC en el directorio principal, la política de SELinux establecida protegerá el sistema e impedirá que otro usuario o proceso acceda al directorio.

Las políticas de SELinux le permiten ser específico y abarcar una gran cantidad de procesos. Puede realizar modificaciones con SELinux para limitar el acceso entre usuarios, archivos, directorios y más.


Cómo lidiar con los errores de SELinux

Cuando se produzca un error en SELinux, es probable que deba solucionar uno de estos cuatro problemas:

  1. Etiquetas incorrectas: si las etiquetas no son las adecuadas, puede utilizar las herramientas para corregirlas.
  2. Corrección de políticas: en este caso, es probable que deba informar a SELinux sobre los cambios que haya implementado o realizar ajustes en alguna política. Puede hacerlo utilizando booleanos o módulos de políticas.
  3. Fallas en la política: es posible que haya un error en la política que deba solucionarse.
  4. Daños en el sistema: SELinux protege los sistemas en muchas situaciones, pero de todos modos existe la posibilidad de que estos estén en riesgo. Si cree que este es el caso, tome medidas de inmediato.

¿Qué son los booleanos?

Los booleanos son ajustes que permiten activar o desactivar las funciones de SELinux; hay cientos de ellos, y muchos ya están definidos previamente. Para descubrir qué booleanos se han configurado en su sistema, ejecute el comando getsebool -a.