Publicado en

Configuración avanzada de SELinux para mejorar la seguridad en servidores Linux

La seguridad en servidores Linux es una prioridad para administradores de sistemas, especialmente en entornos de producción. SELinux (Security-Enhanced Linux) es una poderosa capa de control de acceso obligatorio (MAC) que permite definir políticas estrictas sobre lo que los procesos pueden o no pueden hacer, incluso si ya tienen privilegios de root. Aunque muchas veces se desactiva por su complejidad, configurarlo correctamente puede marcar una gran diferencia en la protección del sistema.

En esta guía, exploraremos cómo implementar una configuración avanzada de SELinux en sistemas Fedora, CentOS y también abordaremos alternativas o complementos en Debian, donde SELinux no es el predeterminado.


¿Qué es SELinux y por qué deberías usarlo?

SELinux es un módulo de seguridad del kernel que aplica reglas basadas en políticas predefinidas. Esto significa que incluso si un proceso legítimo es comprometido, SELinux puede evitar que realice acciones no autorizadas, como acceder a archivos sensibles o establecer conexiones indebidas.

Es especialmente útil en servicios expuestos a internet como servidores web, bases de datos o entornos de contenedores.


SELinux en Fedora y CentOS

Tanto Fedora como CentOS (hasta CentOS 8) traen SELinux instalado y activado por defecto. En sistemas derivados como Rocky Linux o AlmaLinux, el soporte es igualmente completo.

Para verificar el estado actual de SELinux, usá:

sestatus

Modos de operación

SELinux puede funcionar en tres modos:

  • Enforcing: aplica las políticas de seguridad activamente (modo recomendado).
  • Permissive: registra violaciones sin bloquearlas (útil para pruebas).
  • Disabled: desactiva SELinux completamente (no recomendado en producción).

Podés cambiar el modo temporalmente con:

setenforce 0   # Permissive
setenforce 1   # Enforcing

Para hacerlo persistente, editá el archivo /etc/selinux/config y cambiá la línea:

SELINUX=enforcing

Configuración avanzada con políticas personalizadas

Uno de los puntos fuertes de SELinux es la posibilidad de crear y aplicar políticas personalizadas. Supongamos que estás ejecutando un servidor web en un puerto no estándar, como el 8080.

SELinux bloqueará esta acción por defecto, pero podés permitirla así:

semanage port -a -t http_port_t -p tcp 8080

Otro caso común es el acceso a un directorio específico por parte de Apache:

chcon -R -t httpd_sys_content_t /var/www/misitio

Si querés que Apache pueda escribir en ese directorio:

chcon -R -t httpd_sys_rw_content_t /var/www/misitio

También podés administrar booleanos, que permiten o restringen comportamientos comunes. Por ejemplo:

getsebool -a | grep httpd
setsebool -P httpd_can_network_connect on

SELinux en Debian y derivados

En Debian y Ubuntu, SELinux no viene activado por defecto, ya que se utiliza AppArmor como sistema de control de acceso. Sin embargo, si preferís SELinux, podés instalarlo manualmente:

sudo apt install selinux-basics selinux-policy-default auditd
sudo selinux-activate

Luego, reiniciá el sistema. Al volver, verificá el modo:

sestatus

En Debian, también es posible usar herramientas como audit2allow para crear módulos personalizados con base en los registros de auditoría.


Auditoría y solución de problemas

SELinux puede ser frustrante cuando bloquea funciones necesarias. La clave está en auditar y ajustar.

Consultá los registros con:

sudo ausearch -m avc -ts recent

Y usá audit2why para entender por qué ocurrió el bloqueo:

sudo ausearch -m avc | audit2why

Si necesitás crear una política específica para resolver el problema:

sudo ausearch -m avc -ts recent | audit2allow -M mi_politica
sudo semodule -i mi_politica.pp

Conclusión

Configurar SELinux correctamente puede parecer desafiante al principio, pero las ventajas en términos de seguridad son invaluables. Ya sea en Fedora, CentOS o incluso en Debian (con un poco de trabajo adicional), contar con un control de acceso obligatorio te protege contra una amplia gama de amenazas, incluso si un atacante logra entrar al sistema.

¿Ya usás SELinux en tu infraestructura? Compartí tus consejos o dudas en los comentarios. Si te resultó útil este artículo, ¡no dudes en compartirlo!


¿Querés más guías sobre seguridad en servidores Linux? Suscribite y seguí leyendo sobre cortafuegos, listas de control de acceso, auditoría y más.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *