Si has trabajado con distribuciones Linux basadas en Red Hat como Fedora, CentOS o RHEL seguro te has topado con SELinux, ese componente que muchos consideran un obstáculo y que terminan desactivando con setenforce 0. Sin embargo SELinux no es un enemigo sino un guardián que fortalece la seguridad del sistema mediante un modelo de Control de Acceso Obligatorio o MAC que limita lo que procesos y archivos pueden hacer más allá de los permisos tradicionales.

Concepto clave: DAC frente a MAC. En el modelo tradicional Discretionary Access Control DAC los permisos rwx para propietario grupo y otros determinan el acceso y el administrador root puede anular casi todo. En el modelo Mandatory Access Control MAC que implementa SELinux las reglas vienen definidas por una política del sistema y son obligatorias incluso para root. Si la política impide que el proceso del servidor web httpd_t escriba en un directorio con contexto user_home_t el acceso será denegado aunque los permisos DAC lo permitan. Este enfoque ayuda a contener daños cuando un servicio se compromete evitando movimientos laterales hacia datos de usuarios o archivos críticos del sistema.

Contextos de seguridad. El núcleo de SELinux son los contextos de seguridad o etiquetas. Cada archivo directorio y proceso tiene un contexto formado por cuatro componentes user:role:type:level donde el componente type es el más relevante para la mayoría de los casos. La política de SELinux define que procesos de tipo httpd_t solo pueden acceder a archivos de tipo httpd_sys_content_t por ejemplo. Puedes inspeccionar contextos usando las versiones con la opción Z de comandos conocidos como ls -lZ o ps auxZ para ver los tipos asociados a archivos y procesos.

Modos de SELinux y comandos básicos. Para diagnosticar primero comprueba el modo con getenforce que retorna Enforcing Permissive o Disabled. Enforcing aplica la política y deniega y registra violaciones. Permissive registra sin bloquear y es útil para pruebas. Disabled apaga SELinux y no se recomienda. Para ver más información usa sestatus. Cambiar el modo temporalmente se hace con setenforce 0 para permisos o setenforce 1 para imponer la política. Para cambios permanentes edita el archivo /etc/selinux/config y reinicia el sistema.

Gestión de contextos de archivos. Un problema frecuente es el contexto incorrecto tras mover archivos. chcon cambia el contexto de forma temporal por ejemplo chcon -t httpd_sys_content_t archivo pero no es persistente. Para reglas permanentes usa semanage fcontext -a -t httpd_sys_content_t '/ruta(/.*)?' y luego aplica esas etiquetas con restorecon -Rv /ruta. De este modo puedes servir contenido desde directorios no estándar sin desactivar SELinux.

Booleans de SELinux. Los booleans son interruptores que ajustan el comportamiento de la política sin escribir nuevas reglas. Lista todos con getsebool -a y cambia valores con setsebool por ejemplo setsebool httpd_can_network_connect on para permitir que httpd haga conexiones de red. Para persistir el cambio añade la opción -P.

Auditoría y resolución de problemas. Las denegaciones aparecen como mensajes AVC en los registros de auditoría normalmente ubicados en /var/log/audit/audit.log. Filtra por denied para encontrar entradas relevantes. Herramientas como sealert del paquete setroubleshoot-server traducen AVC crípticos a explicaciones y sugerencias. audit2allow puede generar reglas de política a partir de negaciones pero debe usarse con extremo cuidado porque puede abrir brechas si se acepta cualquier sugerencia sin revisar.

Casos prácticos. Servir una web desde /srv/mywebsite requiere ajustar el contexto y crear la regla persistente con semanage fcontext. Cambiar el puerto de un servicio implica registrar el nuevo puerto con semanage port -a -t ssh_port_t -p tcp 2222 si fuera el caso de ssh. Para scripts o procesos que necesitan acceder a recursos fuera de su contexto por defecto considera cambiar el contexto del binario o crear un módulo de política personalizado.

Comandos y opciones útiles de semanage. La sintaxis general es semanage objeto -acción opciones donde los objetos comunes son fcontext port boolean user login y las acciones incluyen -a añadir -d borrar -m modificar y -l listar. La opción -C lista solo las personalizaciones locales facilitando ver lo que has cambiado respecto al policy por defecto.

Por qué no debes desactivar SELinux por costumbre. Tratar SELinux como una molestia y desactivarlo es renunciar a una capa de defensa crítica. Conocer sus conceptos básicos control de contextos booleans y cómo leer los registros te permite mantener un sistema funcional y mucho más resistente a ataques y errores de configuración.

En Q2BSTUDIO somos especialistas en desarrollo de software y aplicaciones a medida y entendemos que la seguridad es parte esencial del ciclo de vida del software. Ofrecemos servicios integrales que incluyen auditorías de ciberseguridad pentesting y soluciones a medida que integran inteligencia artificial y prácticas de hardening como la correcta configuración de SELinux. Si te interesa reforzar la protección de tus sistemas puedes conocer nuestros servicios de ciberseguridad y pentesting en servicios de ciberseguridad y pentesting o explorar cómo desarrollamos aplicaciones y software a medida en desarrollo de aplicaciones y software a medida. Además en Q2BSTUDIO trabajamos con soluciones de inteligencia artificial para empresas agentes IA automatización y análisis con Power BI integrando servicios cloud aws y azure y servicios de inteligencia de negocio para ofrecer proyectos escalables y seguros.

Conclusión. SELinux puede parecer complejo al principio pero dominar sus principios MAC contextos y herramientas de auditoría permite desplegar sistemas seguros sin sacrificar funcionalidad. Enfócalo como una capa adicional de defensa y apóyate en equipos expertos cuando necesites políticas personalizadas módulos o auditorías de seguridad para tus aplicaciones a medida e infraestructuras en la nube.