Gestión de Seguridad de SELinux

Capítulo 6

1. Introducción a SELinux

SELinux (Security-Enhanced Linux) es un sistema de control de acceso obligatorio integrado en el kernel de Linux. Proporciona una capa adicional de seguridad que va más allá de los permisos tradicionales de Unix, controlando cómo los procesos interactúan con archivos, directorios, puertos de red y otros recursos del sistema.

2. Modos de Cumplimiento de SELinux

SELinux opera en tres modos diferentes:

  • Enforcing: Modo estricto donde se aplican todas las políticas
  • Permissive: Modo de prueba donde las violaciones se registran pero no se bloquean
  • Disabled: SELinux está desactivado (no recomendado en producción)

Ejemplo Práctico:

  • Verificar el estado actual de SELinux

    getenforce
  • Ver configuración detallada

    sestatus
  • Cambiar temporalmente a modo permisivo

    setenforce 0

3. Control de Contextos

Los contextos de SELinux definen cómo los procesos y recursos pueden interactuar entre sí. Formato: usuario:rol:tipo:nivel

Ejemplo Práctico:

  • Ver contexto de un archivo

    ls -Z /var/www/html/
  • Cambiar contexto de archivo

    chcon -t httpd_sys_content_t /var/www/html/archivo.html
  • Restaurar contexto predeterminado

    restorecon -v /var/www/html/archivo.html

4. Gestión de Booleanos

Los booleanos permiten modificar el comportamiento de SELinux sin cambiar las políticas principales.

Ejemplo Práctico:

  • Listar booleanos disponibles

    getsebool -a
  • Ver booleano específico

    getsebool httpd_enable_homedirs
  • Habilitar un booleano permanentemente

    setsebool -P httpd_enable_homedirs on

5. Solución de Problemas

Cuando SELinux bloquea una acción, registra los eventos en varios lugares:

  • Ver logs de SELinux

    ausearch -m AVC
  • Ver mensajes de denegación

    sealert -l "*"

Importancia y Mejores Prácticas:

  1. Seguridad en Capas: SELinux proporciona una capa adicional de seguridad que complementa los permisos tradicionales de Linux.

  2. Prevención de Ataques:

    • Limita el daño que puede hacer un proceso comprometido
    • Previene el acceso no autorizado a recursos
    • Protege contra vulnerabilidades de día cero
  3. Mantenimiento:

    • No deshabilitar SELinux por comodidad
    • Usar modo permisivo para diagnóstico
    • Mantener contextos actualizados
    • Documentar cambios en booleanos
  4. Diagnóstico:

    • Revisar logs regularmente
    • Entender los mensajes de error
    • Usar herramientas de análisis