SELinux - Seguridad Mejorada en Linux
Síguenos en YouTube
Section titled “Síguenos en YouTube”Volver a Página Principal
Suscribete!!
Una guía profesional y amigable para comprender como funciona SELinux y como lo podemos utilizar!
SELinux: Seguridad mejorada en Linux
Section titled “SELinux: Seguridad mejorada en Linux”¿Qué es SELinux?
Section titled “¿Qué es SELinux?”SELinux (Security-Enhanced Linux) es un módulo de seguridad para el kernel de Linux que proporciona una política de control de acceso obligatorio (MAC por sus siglas en inglés, Mandatory Access Control). A diferencia del control de acceso discrecional (DAC) tradicional de Linux (los permisos de rwx de los usuarios), que se basa en la identidad del usuario, SELinux implementa políticas de seguridad predefinidas por el administrador.
Esto significa que, incluso si un proceso se ejecuta como root o tiene permisos elevados, SELinux puede restringir lo que ese proceso puede hacer, protegiendo el sistema contra ataques y vulnerabilidades de día cero. Es una capa de seguridad adicional y proactiva.
Imagen de Funcionamiento SELinux
Historia de SELinux
Section titled “Historia de SELinux”El desarrollo de SELinux comenzó en la Agencia de Seguridad Nacional (NSA) de los Estados Unidos. Se diseñó como un prototipo para mejorar la seguridad en sistemas operativos. En el año 2000, el código fuente fue liberado y se fusionó con el kernel de Linux en la versión 2.6, en 2003. Desde entonces, ha sido un componente integral en distribuciones como Fedora, RHEL y CentOS, convirtiéndose en un estándar de seguridad en el entorno empresarial y de servidores.

¿Para qué sirve?
Section titled “¿Para qué sirve?”SELinux es una herramienta fundamental para proteger el sistema operativo contra actividades maliciosas. Su principal objetivo es:
- Contención de procesos: Limita lo que un proceso puede hacer incluso si ha sido comprometido. Si un atacante logra explotar una vulnerabilidad en un servicio web, SELinux puede impedir que ese servicio acceda a archivos de sistema, cambie configuraciones o ejecute comandos.
- Aislamiento de servicios: Cada servicio (como Apache, Nginx o MySQL) se ejecuta con un contexto de seguridad específico que le otorga solo los permisos necesarios para su funcionamiento, evitando que una brecha en un servicio se propague al resto del sistema.
- Prevención de la escalada de privilegios: Reduce el riesgo de que un atacante obtenga el control total del sistema.
¿Cómo se utiliza?
Section titled “¿Cómo se utiliza?”SELinux opera en diferentes modos:
- Enforcing: El modo por defecto. SELinux aplica y deniega todas las políticas de seguridad. Si una acción no está permitida, se bloquea y se registra un error.
- Permissive: El modo ideal para depurar. SELinux no bloquea las acciones, pero registra un aviso (
AVC denial) para indicar qué acciones habrían sido bloqueadas en modo enforcing. - Disabled: SELinux está completamente desactivado. Esto no se recomienda, ya que el sistema pierde una capa de seguridad crucial.
Para verificar el estado de SELinux, puedes usar el comando:
sestatusPara cambiar el modo temporalmente (hasta el siguiente reinicio), utiliza:
sudo setenforce 0 # Cambia a modo permisivosudo setenforce 1 # Cambia a modo enforcingPara hacer el cambio permanente, edita el archivo de configuración:
sudo nano /etc/selinux/configY modifica la línea SELINUX= a enforcing, permissive o disabled.
Trucos básicos (para principiantes)
Section titled “Trucos básicos (para principiantes)”- Diagnosticar problemas: Si una aplicación no funciona correctamente, sospecha de SELinux. El primer paso es revisar el registro de auditoría (
audit.log) y los mensajes del sistema.También puedes usar la herramienta de diagnósticoTerminal window sudo tail -f /var/log/audit/audit.log | grep avc:ausearchpara buscar denegaciones recientes:Terminal window sudo ausearch -m AVC -ts recent - Crear reglas de forma simple: Para generar una política que solucione una denegación, puedes usar el comando
audit2allow.Terminal window sudo ausearch -c 'nombre-del-proceso' --raw | sudo audit2allow -M nombre-de-la-politicasudo semodule -i nombre-de-la-politica.pp - Restaurar el contexto de seguridad: Si mueves archivos a una ubicación diferente, es posible que el contexto de SELinux se pierda. Usa
restoreconpara arreglarlo.Terminal window sudo restorecon -R /ruta/a/los/archivos
Trucos avanzados (para expertos)
Section titled “Trucos avanzados (para expertos)”- Ver el contexto de seguridad: El comando
lscon la opción-Zte muestra el contexto de seguridad de archivos y directorios.Terminal window ls -Z /var/www/html - Modificar contextos de seguridad: Para que un archivo o directorio mantenga un contexto específico, usa
semanage.Terminal window sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/uploads(/.*)?"sudo restorecon -Rv /var/www/html - Crear módulos de políticas personalizados: La forma correcta de manejar las excepciones de SELinux es creando tus propios módulos de política (
.te,.fc,.pp), en lugar de deshabilitarlo. Esto asegura que solo se otorgan los permisos necesarios.