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:
-
Seguridad en Capas: SELinux proporciona una capa adicional de seguridad que complementa los permisos tradicionales de Linux.
-
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
-
Mantenimiento:
- No deshabilitar SELinux por comodidad
- Usar modo permisivo para diagnóstico
- Mantener contextos actualizados
- Documentar cambios en booleanos
-
Diagnóstico:
- Revisar logs regularmente
- Entender los mensajes de error
- Usar herramientas de análisis