Cómo Asegurar Tus Servidores Linux Con SELinux

Se Linux Hero

SELinux puede ayudarte a asegurar tu servidor de procesos o aplicaciones defectuosas. Desarrollado por la NSA (Agencia Nacional de Seguridad) para proteger dispositivos gubernamentales de atacantes, la arquitectura de Linux con seguridad mejorada (SE) utiliza protocolos de seguridad para restringir el acceso a los recursos del sistema. Descubre cómo puedes utilizarlo para tu servidor.

Tabla de Contenidos

  • Arquitectura de SELinux
  • Cómo Instalar o Activar SELinux
  • Cómo Configurar SELinux
  • Políticas de SELinux
  • Cómo Manejar Errores de SELinux
  • Cómo Desactivar SELinux
  • Preguntas Frecuentes

También lee: ¿Qué es el Shell Rc y Cómo Instalarlo en Linux?

Arquitectura de SELinux

SELinux es un módulo del kernel que puede ser activado o desactivado por el administrador del sistema. Dado que el acceso a archivos y puertos de red está limitado siguiendo una política de seguridad, un programa defectuoso o un daemon mal configurado no pueden tener un gran impacto en la seguridad del sistema.

Cuando una aplicación o proceso solicita acceso a un archivo en el sistema SELinux, primero verifica el caché de vector de acceso (AVC). Si el permiso está caché previamente, regresa con el archivo para la aplicación solicitada. Si el permiso no está caché, entonces envía la solicitud al servidor de seguridad. El servidor de seguridad verifica todas las políticas de seguridad en su base de datos. Dependiendo de la política de seguridad, el permiso se concede o se niega.

No hay un concepto de root o superusuario en SELinux. La seguridad de una distribución de Linux sin modificar sin SE Linux depende de la corrección del kernel, todas las aplicaciones privilegiadas y sus configuraciones. Un error o fallo en cualquiera de estos componentes puede crear una superficie de ataque y comprometer el sistema.

Por otro lado, un sistema Linux modificado con SELinux depende principalmente de la corrección del kernel y las políticas de seguridad.

También lee: Cómo Usar el Comando Rm en Linux

Cómo Instalar o Activar SELinux

SELinux significa Linux Mejorado en Seguridad. SELinux ha sido parte del kernel de Linux desde 2003. Por lo tanto, no tienes que instalarlo por separado. Sin embargo, en la mayoría de las distribuciones de Linux de escritorio, está desactivado por defecto.

Se Linux 2

SELinux tiene tres modos principales: Enforzado, Permisivo y Desactivado. Discutamos brevemente cada uno:

  1. Enforzado: Esto activa y protege el sistema Linux utilizando políticas de seguridad.
  2. Permisivo: No aplica las políticas de seguridad pero registra todo. Este modo es útil para propósitos de resolución de problemas.
  3. Desactivado: Desactiva SELinux. Esta opción no se recomienda y si vuelves a habilitar SELinux en tu sistema, esto puede provocar errores debido a cambios en la etiquetación.

Nota: Ubuntu se envía con AppArmor, una alternativa a SELinux. Aunque SELinux está disponible en Ubuntu, no es compatible con AppArmor y puede romper tu sistema si se habilita. Si realmente necesitas usar SELinux en Ubuntu, asegúrate de deshabilitar AppArmor y realizar pruebas intensivas (comienza con el modo permisivo primero) antes de usarlo en producción.

  1. Para activar SELinux en tu sistema, tienes que editar el archivo “/etc/selinux/config”. Abre este archivo en tu editor de texto.
sudonano/etc/selinux/config
  1. Dentro del archivo de configuración, establece SELINUX=permissive. Presiona Ctrl + O y aprieta Enter para guardar el archivo, y presiona Ctrl + X para salir del editor. SELinux está ahora activado en tu sistema.

Nota: si intentas forzar SELinux directamente antes de hacerlo permisivo, puede etiquetar incorrectamente archivos y procesos e impedirte arrancar.

  1. Para volver a etiquetar automáticamente el sistema de archivos, crea un archivo llamado “.autorelabel” en tu sistema de archivos raíz. Ahora, cuando arranques tu sistema, SELinux volverá a etiquetar automáticamente tu sistema de archivos. Para reducir errores, mantén la opción SELINUX=permissive tal como está en la carpeta de configuración. Después de que todo esté etiquetado nuevamente, establece SELinux a SELINUX=enforcing en “/etc/selinux/config” y reinicia.

SELinux se aplicará con éxito en tu sistema.

También lee: Cómo Personalizar Tu Terminal de Linux Usando Starship

Cómo Configurar SELinux

SELinux es una arquitectura que permite a los administradores de sistemas controlar qué puede acceder a los recursos del sistema. SELinux limita el acceso al sistema utilizando políticas de seguridad. Hay muchas formas de configurar SELinux para proteger tu sistema, siendo las más populares la “política dirigida” y “seguridad de múltiples niveles” (MLS).

Una política dirigida es la política de seguridad predeterminada. Cubre una gama de políticas de seguridad, como acceso a archivos, tareas, servicios, etc. La seguridad de múltiples niveles (MLS) se utiliza generalmente por gobiernos y grandes organizaciones, es muy complicada de configurar y requiere un equipo dedicado para gestionarla.

Puedes verificar tu modo SELinux actual con el comando getenforce y sestatus.

Si solo necesitas cambiar el modo SELinux en la sesión actual, puedes ejecutar los siguientes dos comandos.

  • sudo setenforce 0: Establece SELinux en modo permisivo para la sesión actual.
  • sudo setenforce 1: Establece SELinux en modo enforzado para la sesión actual.

Políticas de SELinux

SELinux funciona como un sistema de etiquetado. Asocia cada archivo, puerto y proceso con una etiqueta. Las etiquetas son una manera lógica de agrupar cosas. El kernel es responsable de gestionar la etiqueta durante el arranque.

Se Linux 1

Las políticas de SELinux pueden ser gestionadas por booleanos. Por ejemplo, establezcamos un booleano para un daemon llamado httpd. httpd es un daemon del servidor HTTP Apache que utilizamos para ejecutar servidores web en Linux.

Para listar todos los módulos específicos de httpd, ejecuta el siguiente comando en tu terminal:

getsebool -a|grep httpd

Aquí, la opción -a lista todos los booleanos, y usamos grep para filtrar solo los booleanos relacionados con httpd. Lee este artículo para saber más sobre grep en Linux.

La salida del comando anterior se ve como la imagen de abajo.

httpd_builtin scripting --> on   
httpd_can_check_spam --> off   
httpd can connect ftp --> off   
httpd_can_connect_ldap --> off   
httpd_can_connect_mythty --> off   
httpd_can_connect_zabbix --> off   
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off   
httpd_can_network_memcache --> off   
httpd_can_network_relay --> off   
httpd_can_sendmail --> off   
httpd_dbus_avahi --> off   
httpd dbus sssd--> off

De la lista anterior, tomamos el booleano httpd_can_connect_ftp y cambiamos su valor. Primero, lee el valor de httpd_can_connect_ftp, ya sea que esté activado o desactivado:

getsebool httpd_can_connect_ftp

Establezcamos el valor de httpd_can_connect_ftp en permitir.

setsebool -P httpd_can_connect_ftp 1

Aquí, 1 representa permitir o activar. La etiqueta -P se usa para hacer el cambio permanente. Si listamos los booleanos relacionados con httpd nuevamente, entonces podemos ver el cambio en el valor de httpd_can_connect_ftp a on.

httpd_builtin_scripting --> on   
httpd_can_check_spam --> off   
httpd can connect ftp --> on   
httpd_can_connect_ldap --> off   
httpd_can_connect_mythty --> off   
httpd_can_connect_zabbix --> off   
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off   
httpd_can_network_memcache --> off   
httpd_can_network_relay --> off   
httpd_can_sendmail --> off   
httpd_dbus_avahi --> off   
httpd dbus sssd--> off

También lee: Cómo Configurar WordPress Usando Docker en Ubuntu

Cómo Manejar Errores de SELinux

SELinux tiene 4 tipos de errores en general:

  1. El sistema se ha roto: SELinux protege tu sistema restringiendo el acceso, pero a veces, esto no es suficiente. Si recibes estos errores, entonces tu sistema puede estar comprometido. Toma las acciones necesarias lo más pronto posible.
  2. Error en la política: si hay un error en la política que necesita ser corregido, aparece este error.
  3. Las etiquetas son incorrectas: Este mensaje de error aparece durante la personalización de etiquetado por el usuario o cuando la etiquetación automática por SELinux no funciona como se espera. Hay muchas herramientas en el mercado para corregir estos errores de etiqueta.
  4. Una política necesita ser corregida: Estos errores se originan cuando haces algunos cambios en el sistema y no informas a SELinux sobre ello. Puedes solucionar este error utilizando booleanos o módulos de políticas.

Cómo Desactivar SELinux

Desactivar SELinux nunca es una buena opción para servidores empresariales y gubernamentales y dispositivos expuestos al público que son muy propensos a ataques. Pero si deseas desactivar SELinux en tu sistema, sigue estas instrucciones.

  1. Ve al archivo de configuración de SE Linux en “/etc/selinux” y cambia el modo de configuración de SE Linux de enforcing a permissive, luego reinicia tu sistema.
  2. Cambia el modo SELinux de permissive a disabled.

Después del próximo reinicio, SELinux en tu sistema estará desactivado y se convertirá en una máquina Linux normal.

También lee: Cómo Configurar un Cortafuegos en Linux

Preguntas Frecuentes

¿Está SELinux presente en Android?

Sí, SELinux está implementado en Android desde la versión 4.3. Aumentó la seguridad de Android para proteger a los usuarios de ataques cibernéticos.

¿Es SELinux un cortafuegos?

SELinux no es un cortafuegos. El cortafuegos controla el tráfico entre la computadora y la red. Mientras que SELinux controla y gobierna el acceso al sistema de archivos y la red de diferentes programas dentro del sistema, podemos considerar a SELinux como un cortafuegos interno para proteger el sistema de sus programas.

¿Es SELinux un sistema operativo?

SELinux no es un sistema operativo. Es un módulo de seguridad del kernel que existe en el kernel de Linux. Proporciona soporte para políticas de seguridad de control de acceso y controles de acceso obligatorios (MAC). Para considerarlo un sistema operativo, necesita más que el kernel en sí. En la mayoría de los sistemas operativos basados en Linux, puedes usar SELinux.

¿Deberías usar SELinux?

Si eres un administrador de sistemas y conoces el sistema Unix, deberías usar SELinux, ya que mejora la seguridad de tu servidor y minimiza la superficie de ataque. Si no estás muy familiarizado con los sistemas Unix, también puedes usar AppArmor. Esto es relativamente más fácil que SELinux. Si eres un usuario doméstico y solo usas Linux en tu computadora de escritorio, no hay necesidad de usar SELinux. Solo te causará dolores de cabeza al configurarlo y disminuirá tu productividad.