Jump to section

¿Qué es SELinux?

Copiar URL

Security-Enhanced Linux (SELinux) es una arquitectura de seguridad para los sistemas Linux® que permite que los administradores tengan mayor control sobre las personas que pueden acceder a ellos. 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 de Linux upstream en 2003.

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

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

Si SELinux no puede determinar el acceso en función de los permisos almacenados en la caché, envía la solicitud al servidor de seguridad, que analiza el contexto de seguridad del sujeto 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.

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 primera es la opción predeterminada e incluye varios procesos, tareas y servicios; mientras que la MLS puede ser muy complicada y suele usarse solamente en las organizaciones gubernamentales. 

Para saber con qué configuración se ejecuta el sistema, debe 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 debería estar cargada.

Etiquetado y aplicación del tipo de restricción de SELinux

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

Este producto trabaja como un sistema de etiquetado, lo cual implica que hay una etiqueta de SELinux asociada a casa archivo, proceso y puerto de un sistema. Las etiquetas permiten agrupar los elementos de manera lógica, 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 las implementaciones más avanzadas de SELinux, como la MLS. El tipo de etiqueta es el aspecto más importante de las políticas específicas. 

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

Habilitación de SELinux

Para habilitar SELinux en su entorno, edite /etc/selinux/config y establezca el ajuste SELINUX=permissive. Dado que SELinux estaba deshabilitado, 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 volver 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 que haya demasiados errores, deberá reiniciar el sistema en modo permisivo para que el arranque se ejecute correctamente. Una vez que se hayan vuelto a etiquetar todos los elementos, configure el modo de SELinux como 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 seguridad adicional al sistema, que se encuentra integrada en las distribuciones de Linux. Si su sistema está en riesgo, debe permanecer activado para poder protegerlo.

Los sistemas Linux y UNIX siempre han utilizado el DAC, mientras que SELinux es un ejemplo de un sistema MAC para Linux. 

Con el 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 superusuario tiene control de acceso total, lo cual le permite acceder a los archivos de los demás 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 de DAC en el directorio principal, la política establecida de SELinux 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.

Si SELinux arroja un error, probablemente deba solucionar uno de estos cuatro problemas comunes:

  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.

Booleanos

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

Keep reading

Artículo

¿Qué es Linux?

Linux es un sistema operativo open source que se compone del kernel, su elemento fundamental, y las herramientas, las aplicaciones y los servicios que se incluyen con él.

Artículo

¿Qué es SELinux?

Security-Enhanced Linux (SELinux) es una arquitectura de seguridad para los sistemas Linux® que otorga a los administradores mayor control sobre quién puede acceder al sistema.

Artículo

¿Qué es el kernel de Linux?

El kernel de Linux es el elemento principal de los sistemas operativos (SO) Linux y es la interfaz fundamental entre el hardware de una computadora y sus procesos.

Más información sobre Linux

Productos

Red Hat Enterprise Linux

Base estable y probada con suficiente versatilidad para implementar aplicaciones nuevas, virtualizar los entornos y crear una nube híbrida más segura.

Contenido adicional

Informe de analistas

Para los entornos SAP, la migración significa mucho más que Linux

Informe de analistas

IDC: el impacto económico de Red Hat Enterprise Linux

Illustration - mail

Obtenga más contenido como este

Suscríbase a nuestro boletín informativo: Red Hat Shares.