Configuración avanzada de SELinux

La Configuración avanzada de SELinux (Security-Enhanced Linux) es esencial para reforzar la seguridad en sistemas Linux mediante una política de control de acceso obligatorio (MAC) que restringe el acceso a usuarios y aplicaciones según reglas estrictas. A continuación, se exploran los aspectos avanzados y configuraciones esenciales de SELinux para maximizar la seguridad en un entorno de producción.

1. Comprender los Modos de SELinux

SELinux tiene tres modos de operación, cada uno adecuado para diferentes entornos y necesidades:

  • Enforcing: Aplicación de todas las políticas de SELinux. Es el modo recomendado para producción.
  • Permissive: Registra los eventos que violan las políticas, pero no los bloquea. Útil para pruebas y depuración.
  • Disabled: Desactiva SELinux. No recomendado, ya que desactiva toda la protección.

Para verificar el modo actual:

sestatus

Para cambiar el modo (permanentemente), edita /etc/selinux/config y configura SELINUX=enforcing o SELINUX=permissive. Luego, reinicia el sistema para que los cambios surtan efecto.

2. Comprender las Políticas de SELinux

SELinux utiliza políticas para definir reglas de acceso:

  • Política dirigida (targeted): Restringe solo a ciertos servicios, permitiendo a los usuarios y otros servicios funcionar sin restricciones.
  • Política estricta (strict): Aplica restricciones a todos los procesos y usuarios. Es más compleja y adecuada para entornos de alta seguridad.

En la mayoría de los sistemas modernos, la política dirigida es la predeterminada. Puedes verificarla usando:

sestatus

3. Administrar Contextos de Seguridad

Los contextos de seguridad son etiquetas que SELinux asigna a archivos, procesos y usuarios para controlar el acceso. El contexto incluye el usuario, el rol, el tipo y el nivel de seguridad.

Ver el contexto de un archivo o proceso

Para ver el contexto de un archivo:

ls -Z /ruta/del/archivo

Para ver el contexto de un proceso:

ps -eZ

Cambiar el contexto de un archivo

El comando chcon cambia temporalmente el contexto de seguridad de un archivo:

chcon -t httpd_sys_content_t /var/www/html/index.html

Para cambios permanentes, es mejor usar semanage, ya que chcon se restablecerá después de un reinicio o un cambio de políticas:

semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -R /var/www/html

4. Gestión de Booleans en SELinux

Los booleans en SELinux son configuraciones dinámicas que permiten ajustar el comportamiento de las políticas sin modificarlas. Cada booleano se utiliza para activar o desactivar características de seguridad en ciertos servicios.

Listar todos los booleans y sus valores actuales

getsebool -a

Cambiar el valor de un booleano temporalmente

setsebool httpd_can_network_connect on

Cambiar el valor de un booleano permanentemente

setsebool -P httpd_can_network_connect on

5. Auditoría y Registros de SELinux

SELinux registra cada violación de política en el archivo de auditoría del sistema, generalmente ubicado en /var/log/audit/audit.log.

Para examinar y diagnosticar problemas de permisos, puedes utilizar el comando ausearch para buscar en los registros:

ausearch -m avc -ts today

También puedes utilizar audit2why para interpretar los mensajes de error y audit2allow para generar reglas que permitan el acceso denegado:

grep "avc:  denied" /var/log/audit/audit.log | audit2why

Para crear una regla que permita el acceso:

grep "avc:  denied" /var/log/audit/audit.log | audit2allow -M mycustompolicy
semodule -i mycustompolicy.pp

6. Crear y Modificar Módulos de Políticas Personalizados

En algunos casos, es posible que necesites crear módulos de políticas personalizados para ajustar SELinux a necesidades específicas.

Crear un módulo de política a partir de registros de auditoría

  1. Filtra los mensajes de denegación en el registro: grep "avc: denied" /var/log/audit/audit.log > denied.log
  2. Crea un módulo de política con audit2allow: cat denied.log | audit2allow -M mycustompolicy
  3. Instala el módulo: semodule -i mycustompolicy.pp

Este módulo permitirá explícitamente las acciones previamente denegadas, así que revísalo para evitar sobrepermisos.

7. Gestión de Roles y Usuarios en SELinux

SELinux también permite definir roles y usuarios con diferentes permisos. Esto es particularmente útil en entornos multiusuario con niveles de acceso diferenciados.

Para asignar un contexto a un usuario de Linux en SELinux:

semanage login -a -s user_u usuario_linux

Para listar los usuarios de SELinux:

semanage user -l

8. Herramientas de Administración de SELinux

Algunas herramientas esenciales para la administración avanzada de SELinux son:

  • semanage: Configura contextos de archivo, puertos y políticas de SELinux.
  • restorecon: Restablece contextos de seguridad predeterminados de SELinux en archivos.
  • chcon: Cambia contextos de seguridad de archivos de manera temporal.
  • setsebool: Cambia los valores de los booleans de SELinux.
  • semodule: Administra los módulos de políticas de SELinux.

9. Optimización del Rendimiento de SELinux

En entornos de alto rendimiento, SELinux puede afectar ligeramente la velocidad de los procesos. Sin embargo, esta diferencia es mínima en sistemas modernos. Para optimizar, asegúrate de que solo las políticas necesarias estén habilitadas y utiliza setroubleshoot y auditd para reducir los registros innecesarios.

10. Recomendaciones Finales para una Configuración Avanzada

  • Auditoría continua: Revisa periódicamente los registros para ajustar políticas y booleans según las necesidades actuales.
  • Documentación de cambios: Mantén un registro de todos los cambios realizados en los booleans, módulos y contextos.
  • Pruebas en modo permisivo: Antes de habilitar nuevas políticas, pruébalas en modo permisivo para identificar posibles problemas sin afectar el sistema.
  • Educación y entrenamiento: Los administradores deben estar capacitados en SELinux para manejar eficientemente su configuración y resolución de problemas.

En resumen

La configuración avanzada de SELinux es una herramienta poderosa para reforzar la seguridad en sistemas Linux, proporcionando un control granular sobre los accesos de aplicaciones y usuarios. A través del uso de contextos de seguridad, booleans, módulos personalizados y auditoría, los administradores pueden crear entornos altamente seguros y adaptados a las necesidades específicas de la organización.

Suscríbete al boletín SysAdmin

Este es tu recurso para las últimas noticias y consejos sobre administración de sistemas, Linux, Windows, cloud computing, seguridad de la nube, etc. Lo enviamos 2 días a la semana.

¡Apúntate a nuestro newsletter!


– patrocinadores –

Noticias destacadas

– patrocinadores –

¡SUSCRÍBETE AL BOLETÍN
DE LOS SYSADMINS!

Scroll al inicio