¿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. Originalmente, la desarrolló la Agencia de Seguridad Nacional (NSA) de Estados Unidos como una serie de parches para el kernel de Linux con 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.
¿Cómo funciona SELinux?
SELinux define los controles de acceso para las aplicaciones, los procesos y los archivos de un sistema. Utiliza políticas de seguridad, que son un conjunto de reglas que le indican a SELinux los recursos a los que puede acceder y a los que no.
Cuando una aplicación o un proceso (conocidos como sujetos) solicitan acceso a un objeto, por ejemplo, un archivo, SELinux verifica la caché del vector de acceso (AVC), donde se almacenan los permisos para los sujetos y los objetos.
Si SELinux no puede determinar el acceso en función de los permisos almacenados en caché, envía la solicitud al servidor de seguridad, que analiza el contexto de seguridad de la aplicación o el proceso y del archivo. Este contexto se aplica desde la base de datos de las políticas de la arquitectura. Luego, se otorga o se niega el permiso.
En caso de que sea denegado, aparecerá el mensaje "avc: denied" en /var/log.messages.
Configuración de SELinux
Hay varias formas de configurar SELinux para proteger tu sistema. Las más comunes son la política específica y la seguridad de varios niveles (MLS).
La primera es la opción predeterminada e incluye varios procesos, tareas y servicios; mientras que la segunda puede ser muy complicada y suele usarse solamente en las organizaciones gubernamentales.
Puedes ver lo que el sistema debería estar ejecutando al revisar el archivo /etc/sysconfig/selinux, el cual tendrá una sección que mostrará si SELinux está en modo permissive, enforcing o disabled, y la política que debería estar cargada.
Etiquetado y aplicación de tipos de SELinux
La aplicación de tipos y el etiquetado son los conceptos más importantes de SELinux.
Esta arquitectura funciona como un sistema de etiquetado, lo cual implica que todos los archivos, los procesos y los puertos del sistema tienen una etiqueta asociada a ellos. Las etiquetas permiten agrupar los elementos de manera lógica, y el kernel las gestiona durante el proceso de arranque.
Las etiquetas tienen el formato usuario:función:tipo:nivel (el nivel es opcional). El usuario, la función y el nivel se usan en implementaciones más avanzadas de SELinux, como en la MLS. El tipo de la etiqueta es el aspecto más importante de las políticas específicas.
SELinux utiliza la aplicación de tipos para implementar una política definida en el sistema, es decir, las políticas de SELinux definen si un proceso que se ejecuta con cierto tipo puede acceder a un archivo que tiene una etiqueta determinada.
Habilitación de SELinux
Si SELinux está deshabilitada en tu entorno, puedes habilitarla editando /etc/selinux/config y configurando SELINUX=permissive. Como no estaba habilitada, no es conveniente configurarla en enforcing de inmediato, ya que el sistema puede llegar a tener recursos mal etiquetados que no permiten el proceso de arranque.
Puedes forzar al sistema a que vuelva a etiquetar el sistema de archivos de manera automática creando un archivo vacío denominado .autorelabel en el directorio raíz y, luego, reiniciando el sistema. Si hay demasiados errores, debes reiniciarlo mientras esté en modo permissive para que el proceso de arranque sea exitoso. Luego de haber vuelto a etiquetar el sistema de archivos, configura SELinux en enforcing con /etc/selinux/config y reiníciala, o ejecuta setenforce 1.
Si un administrador de sistemas no conoce la línea de comandos, hay herramientas gráficas que se pueden utilizar para gestionar SELinux.
Esta arquitectura ofrece seguridad adicional para su sistema integrado en distribuciones de Linux. Debe permanecer activa para que proteja tu sistema en caso de que se vea afectado.
Recursos de Red Hat
Diferencias entre el control de acceso discrecional (DAC) y el control de acceso obligatorio (MAC)
Los sistemas Linux y UNIX siempre han utilizado el DAC. 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 tienen la capacidad de cambiar los permisos de sus 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 políticas de acceso establecidas en el ámbito administrativo. Aunque se modifiquen las configuraciones del DAC en el directorio principal, el sistema estará protegido gracias a una política de SELinux activa que prohíbe que otro usuario o proceso acceda al directorio.
Las políticas de SELinux te permiten ser específico y abarcan una gran cantidad de procesos. Puedes implementar cambios para limitar el acceso entre usuarios, archivos, directorios y más elementos.
Modo de gestionar los errores de SELinux
Si SELinux arroja un error, es probable que debas solucionar uno de estos cuatro problemas comunes:
- Las etiquetas son incorrectas.Si las etiquetas son incorrectas, utiliza las herramientas para corregirlas.
- Se debe corregir una política.Por ejemplo, tienes que informar a SELinux sobre algún cambio que implementaste o debes ajustar una política. Puedes solucionarlo con booleanos o módulos de políticas.
- Hay un error en la política. Esto significa que hay un problema que debe abordarse.
- El sistema está comprometido.Aunque SELinux puede proteger tus sistemas en muchos casos, aun así existe una posibilidad de que se vean afectados. Si sospechas que sucede esto, toma medidas de inmediato.
¿Qué son los booleanos?
Son configuraciones de activación o desactivación de las funciones de SELinux. Hay cientos de configuraciones que pueden activar y desactivar las funciones de SELinux, y muchas de ellas están predefinidas. Puedes descubrir los booleanos que están incluidos en tu sistema ejecutando getsebool -a.
Red Hat puede ayudarte a mejorar tus niveles de seguridad
Red Hat Enterprise Linux es la plataforma open source de Linux líder en el mundo que te permite reducir los riesgos, aplicar las políticas y la configuración de seguridad, y mejorar la estrategia de cumplimiento normativo.
Las funciones del sistema de Red Hat Enterprise Linux son un grupo de funciones compatibles con Ansible® que garantizan un flujo de trabajo uniforme y optimizan la ejecución de tareas manuales. Las funciones del sistema permiten que los equipos automaticen los flujos de trabajo de seguridad y los mantegan a largo plazo y según sea necesario, con el uso mínimo de recursos. Además, les permite optimizar los requisitos de cumplimiento normativo y control. Con la función del sistema de SELinux puedes automatizar la gestión y la implementación de la arquitectura, lo cual incluye:
- Habilitar SELinux con modo enforcing o permissive para garantizar la uniformidad de los controles
- Personalizar valores booleanos para políticas de SELinux, contextos de archivos, puertos e inicios de sesión para que cumplan con tus requisitos
- Utilizar la función del sistema para relacionar contextos en archivos o directorios específicos.
Blogs de Red Hat
Aquí encuentras la información más reciente sobre nuestros clientes, partners y comunidades open source.