¿Qué es SELinux y cómo puede mejorar la seguridad en Linux?
Cuando se trata de proteger servidores Linux, la mayoría de los administradores piensan en lo básico: mantener los paquetes actualizados, configurar cortafuegos, limitar el acceso SSH. Sin embargo, a menudo se pasa por alto uno de los mecanismos de seguridad más potentes: SELinux (Security-Enhanced Linux). No se trata de un simple complemento, sino de un marco de seguridad a nivel del núcleo diseñado para detener las intrusiones antes de que se intensifiquen. Tanto para servidores VPS como dedicados, SELinux puede significar la diferencia entre un incidente menor y un compromiso total del sistema.
¿Qué es SELinux?
SELinux es un módulo de seguridad del kernel de Linux que aplica el Control de Acceso Obligatorio (MAC).
- Bajo el modelo tradicional DAC (Control de Acceso Discrecional), el acceso es determinado por los propietarios de los archivos, y root tiene poder sin restricciones.
- Bajo MAC (SELinux), el acceso se rige por las políticas de seguridad de todo el sistema. Incluso root está sujeto a restricciones.
Desarrollado inicialmente por la NSA en colaboración con Red Hat, SELinux se integró en el núcleo de Linux a principios de la década de 2000 y ahora es estándar en distribuciones empresariales como RHEL, CentOS, Fedora, AlmaLinux y Rocky Linux.
El problema: donde la seguridad tradicional de Linux se queda corta
El modelo clásico de permisos UNIX (DAC) tiene debilidades críticas:
- Root es todopoderoso. Cualquier exploit que escale a root compromete todo el sistema.
- Compromiso del servicio = compromiso del sistema. Un módulo Apache o un script PHP pirateados pueden acceder a datos sensibles.
- Los vectores de ataque modernos evitan el DAC. Las web-shells, los exploits de escalada de privilegios y los escapes de contenedores son comunes.
Escenario del mundo real:
Una vulnerabilidad de carga de CMS permite a un atacante lanzar una web-shell. Sin SELinux, el atacante puede leer config.php, extraer las credenciales de la base de datos y comprometer toda la pila. Con SELinux, el proceso del servidor web (httpd_t) está confinado y no puede acceder a archivos fuera de su dominio designado.
Cómo funciona SELinux
Cada proceso, archivo, puerto y socket tiene un contexto de seguridad (etiqueta).
Las políticas definen qué contextos pueden interactuar.
Ejemplo:
- Apache se ejecuta en el dominio httpd_t.
- Los archivos del sitio web están etiquetados como httpd_sys_content_t.
- La política permite a httpd_t leer sólo ficheros httpd_sys_content_t.
Si Apache intenta leer /etc/shadow (shadow_t), el kernel deniega la petición y registra la violación.
Modos de funcionamiento
- Enforcing: las políticas se aplican, las violaciones se bloquean.
- Permisivo: las violaciones se registran pero no se bloquean (útil para pruebas).
- Desactivado: SELinux está desactivado (no recomendado).
Práctica recomendada: comience en Permisivo, revise los registros, ajuste las políticas y, a continuación, pase a Enforcing para la producción.
Por qué SELinux es importante para Hosting y DevOps
- Aislamiento de procesos: limita los daños cuando un único servicio se ve comprometido.
- Aplicación de privilegios mínimos: ni siquiera root puede saltarse las restricciones de las políticas.
- Forense y visibilidad: todas las acciones denegadas se registran (/var/log/audit/audit.log).
- Seguridad de contenedores: impide que los contenedores Docker/Podman escapen de sus límites.
- Cumplimiento: necesario en entornos regulados (PCI DSS, HIPAA, despliegues de grado militar).
Tipos de políticas
- Dirigida (por defecto): restringe sólo los servicios orientados a la red (Apache, Nginx, Postfix, Dovecot).
- Estricta: aplica MAC a todos los procesos.
- MLS/MCS: políticas avanzadas para seguridad multinivel o de grado gubernamental.
Para la mayoría de las cargas de trabajo de VPS y servidores dedicados, la política dirigida es el mejor equilibrio entre facilidad de uso y protección.
Ejemplos prácticos
Comprobar el estado de SELinux
Restaurar contextos de archivos después de mover archivos web
Listar etiquetas de seguridad de archivos
Permitir conexiones salientes de servicios web (por ejemplo, llamadas API)
Revisar las acciones denegadas en los registros
Conclusión
SELinux es más que una característica de seguridad adicional; es un marco fundamental que redefine cómo Linux aplica el control de acceso. Al limitar los procesos, reducir el impacto de las vulnerabilidades y proporcionar registros de auditoría detallados, SELinux transforma un sistema Linux en un entorno mucho más resistente. Aunque requiere una cuidadosa configuración y comprensión, las ventajas de seguridad que aporta a las modernas infraestructuras de servidores lo convierten en un componente esencial para cualquier despliegue de producción.