¿Qué es SELinux?

SELinux es el acrónimo de Security-Enhanced Linux (en español, Linux con seguridad mejorada). Linux es básicamente un sistema operativo como Windows, Android o iOS, con la diferencia de que no lo desarrolla una única empresa, ya que el software se diseñó como proyecto de código abierto desde sus inicios. El código fuente del núcleo de Linux, también llamado kernel de Linux, está a disposición de todos los desarrolladores, tanto para fines sin ánimo de lucro como comerciales. Basándose en el núcleo de Linux, se han desarrollado varias versiones del sistema operativo, conocidas comúnmente como distribuciones. Algunas de las distribuciones de Linux más famosas son Ubuntu, Debian y Fedora.

¿Qué significa Security-Enhanced?

El código fuente del núcleo de Linux está en constante desarrollo gracias a empresas, voluntarios y organizaciones sin ánimo de lucro. Security-Enhanced Linux (en español, Linux con seguridad mejorada) es una de estas extensiones del núcleo de Linux y está disponible como módulo de seguridad. SELinux ha sido un componente oficial del kernel de Linux desde 2003. Algunas distribuciones de Linux incluyen SELinux de serie, aunque este módulo puede deshabilitarse fácilmente. SELinux ayuda a los administradores a controlar todos los procesos del sistemade manera estricta, bloqueando los que no se consideren necesarios. De esta manera, con SELinux se reduce en gran medida el riesgo que comportan las brechas de seguridad de los programas del usuario.

Por lo general, es conveniente restringir los derechos de acceso de todos los programas, incluso cuando son de confianza. De este modo, si un tercero secuestra una aplicación, los daños ocasionados pueden reducirse considerablemente. En cambio, si un programa infectado por malware puede acceder a todos los procesos y archivos del sistema, el peligro puede ser mayor. SELinux limita el acceso y, por lo tanto, también el alcance de los posibles daños.

Controlar estrictamente el acceso al sistema operativo

SELinux ofrece una arquitectura de seguridad especial basada en los principios del control de acceso obligatorio (o MAC, del inglés mandatory access control). A diferencia del núcleo convencional de Linux, SELinux reduce al mínimo los accesos a los procesos y archivos del sistema operativo. Mediante estrictos métodos de control de acceso y las medidas de seguridad correspondientes, el módulo tiene por objetivo garantizar la confidencialidad y la integridad de los datos. Asimismo, con SELinux, el sistema operativo y los programas del usuario quedan claramente delimitados.

¿Cómo se restringen los derechos de acceso con SELinux?

El sistema Linux convencional utiliza el control de acceso discrecional (DAC, del inglés discretionary access control) para controlar el acceso. Por lo general, con este tipo de control, todos los usuarios o aplicaciones que tengan los derechos adecuados pueden acceder sin restricciones a los archivos y procesos del sistema operativo. En cambio, con el control de acceso obligatorio (MAC) utilizado por SELinux, el administrador puede definir las medidas de seguridad con precisión y establecer unos atributos adicionales que indican bajo qué condiciones y en qué situaciones un titular de derechos puede acceder a ciertos procesos o archivos del sistema operativo. Si no se dan estas condiciones o relaciones (es decir, atributos), se deniega el acceso.

En SELinux se emplean varias etiquetas para regular los accesos:

  • User
  • Role
  • Type
  • Level

Estas etiquetas pueden asignarse a cualquier proceso o archivo y, a continuación, incorporarse a las medidas establecidas. Por ejemplo, es posible que una aplicación solo pueda acceder a las carpetas que tengan una etiqueta concreta. La revisión de las medidas se conoce como enforcement en SELinux.

Ventajas e inconvenientes de SELinux

SELinux dificulta o evita el uso indebido de los derechos de usuario, como puede ocurrir cuando un problema presenta brechas de seguridad, por lo que protege la integridad del sistema operativo. Los distribuidores de Linux ofrecen el módulo SELinux con diferentes paquetes de políticas y las medidas de seguridad correspondientes, lo que facilita la configuración de la capa de seguridad. Además, los administradores autorizados pueden personalizar las medidas de seguridad.

Como hemos visto, SELinux permite a los administradores controlar mucho mejor los procesos del sistema. Sin embargo, cuando se trata de ayudar a resolver problemas, el programa se queda un poco corto. Por ejemplo, al bloquear algún intento de acceso, SELinux emite un aviso de error que puede ser muy impreciso y que aporta escasa información para solucionar rápidamente el problema en cuestión. Además, SELinux es un módulo relativamente complejo. Para muchos administradores, gestionar las medidas de seguridad y establecer los atributos resulta demasiado complicado o requiere demasiado esfuerzo. También hay que tener en cuenta que SELinux reduce ligeramente el rendimiento del sistema operativo.

En resumen

SELinux es una herramienta muy eficaz para garantizar la seguridad, pero también requiere horas de trabajo: este software solo resulta útil si el usuario no teme enfrentarse a la complejidad de la configuración. Si el sistema se configura solo a medias, las potenciales ventajas se reducen a cero. En todo caso, se recomienda utilizarlo en los entornos profesionales donde se trabaja con datos confidenciales.

¿Cómo surgió SELinux?

SELinux fue desarrollado principalmente por la agencia de inteligencia estadounidense NSA y el distribuidor de Linux Red Hat. Linux 4, de Red Hat Enterprise, y Fedora, la distribución de Linux compatible con Red Hat, fueron los primeros sistemas operativos totalmente compatibles con SELinux. Además de Red Hat y Fedora, también Gentoo Hardened Linux es compatible con SELinux, al menos relativamente. Una alternativa a SELinux es el módulo de seguridad AppArmor, compatible sobre todo con distribuciones como openSUSE o con plataformas basadas en Debian.