Cómo instalar SELinux en Ubuntu 24.04/22.04/20.04

Security-Enhanced Linux (SELinux) es esencial para gestionar las políticas de seguridad de control de acceso en sistemas Linux. Utilizado principalmente por administradores de sistemas, desarrolladores y profesionales de la seguridad, SELinux ofrece una seguridad sólida a nivel del kernel. Su implementación en servidores Ubuntu, particularmente para las versiones 24.04, 22.04 y 20.04 LTS, fortalece la seguridad de estos sistemas.

Las características clave de SELinux que mejoran la seguridad de Ubuntu incluyen:

  • Control de acceso obligatorio (MAC): A diferencia de los sistemas tradicionales de control de acceso discrecional, SELinux aplica reglas de políticas estrictas que limitan los procesos y usuarios del sistema, mitigando el riesgo de acceso no autorizado.
  • Control detallado: Proporciona un control detallado sobre los procesos del sistema y sus interacciones con archivos y otros recursos.
  • Políticas de seguridad mejoradas: Las políticas de seguridad personalizadas ayudan a protegerse contra amenazas externas e internas.
  • Auditoría y registro: Las capacidades integrales de registro facilitan el monitoreo y el seguimiento de eventos relacionados con la seguridad, lo que ayuda a identificar y resolver problemas rápidamente.

La integración de SELinux en un entorno de servidor Ubuntu, especialmente para quienes administran aplicaciones críticas o datos confidenciales, mejora significativamente la seguridad del sistema. Esta guía, que se centra en la instalación y el uso básico de SELinux, tiene como objetivo proporcionar un enfoque sencillo para aprovechar estos beneficios de seguridad.

Deshabilitar el servicio AppArmor

Para garantizar la compatibilidad, confirme si AppArmor está activo, ya que ejecutar AppArmor y SELinux juntos puede causar conflictos. Determine el estado de AppArmor con:

sudo systemctl status apparmor

Si AppArmor está operativo, desactívelo para evitar cualquier interferencia con SELinux. Ejecute el siguiente comando para desactivar AppArmor:

sudo systemctl disable apparmor --now

Instale SELinux mediante el comando APT

Esta etapa implica la instalación de paquetes clave de SELinux: policycoreutils, selinux-utils, y selinux-basics. Estos son esenciales para gestionar las políticas de SELinux y proporcionar soporte básico de SELinux.

Inicie la instalación con este comando:

sudo apt install policycoreutils selinux-utils selinux-basics

Al ejecutar esto, se instalarán los paquetes SELinux necesarios en su sistema Ubuntu.

Activar SELinux

Después de instalar los paquetes necesarios, active SELinux para asegurarse de que se cargue al inicio. Esta activación es fundamental para habilitar las funciones de seguridad de SELinux. Ejecute el siguiente comando con privilegios de root:

sudo selinux-activate

Este paso configura su sistema para inicializar SELinux durante el proceso de arranque.

Aplicar el modo SELinux

Configurar SELinux en su modo de aplicación es crucial. En este modo, SELinux aplica activamente sus políticas de seguridad, negando el acceso según reglas predefinidas. Cambie al modo de aplicación de la ley usando:

sudo selinux-config-enforcing

Esta acción modifica su configuración de SELinux para operar en modo obligatorio.

Reinicio del sistema para la activación de SELinux

Finalice el proceso de configuración reiniciando su sistema. Esto garantiza que se apliquen todos los cambios y SELinux comienza a operar en el modo establecido:

sudo reboot

Después del reinicio, su sistema se ejecutará con SELinux instalado, activado y configurado para hacer cumplir sus políticas de seguridad. Las siguientes secciones lo guiarán para personalizar aún más SELinux para satisfacer sus necesidades de seguridad.

Configurar SELinux

Comprender los modos SELinux

SELinux funciona en tres modos distintos:

  • Modo de cumplimiento: La configuración predeterminada, donde SELinux aplica rigurosamente sus políticas de seguridad, negando el acceso según las reglas establecidas.
  • Modo permisivo: Aquí, SELinux registra las violaciones de políticas pero no las aplica activamente. Este modo es útil para probar y solucionar problemas de políticas.
  • Modo deshabilitado: En este modo, SELinux está completamente desactivado y no se aplican políticas.

Edite el archivo de configuración de SELinux

Para personalizar la configuración de SELinux, edite el /etc/selinux/config archivo. Utilice un editor de texto preferido, como nano, para esta tarea:

sudo nano /etc/selinux/config

Dentro del archivo, modifique el SELINUX línea para configurar su modo preferido. Por ejemplo, para habilitar el modo obligatorio:

SELINUX=enforcing

Aplicar los cambios de configuración

Para que los cambios surtan efecto, reinicie su sistema:

sudo reboot

Personalización de opciones de configuración adicionales de SELinux

SELinux ofrece varias opciones de personalización:

  • SETLOCALDEFS: Determina el uso de contextos de archivos definidos localmente. Para usar contextos predeterminados, configúrelo en 0. Modifique el /etc/selinux/config archiva en consecuencia:
SETLOCALDEFS=0
  • SELINUXTIPO: establece el tipo de política. El tipo de política común "dirigida" se centra en proteger servicios específicos del sistema. Para configurar esto, actualice el SELINUXTYPE línea en el archivo de configuración:
SELINUXTYPE=targeted

Ejemplo: configuración de SELinux para un servidor web

Considere configurar SELinux para permitir el tráfico HTTP y HTTPS en un servidor web Ubuntu. El semanage El comando se utiliza para la gestión de políticas.

Primero, instale el semanage utilidad:

sudo apt install policycoreutils-python-utils

Luego, permita el tráfico HTTP en el puerto 80:

sudo semanage port -a -t http_port_t -p tcp 80

Y tráfico HTTPS en el puerto 443:

sudo semanage port -a -t http_port_t -p tcp 443

Estos comandos actualizarán la política de SELinux, permitiendo que su servidor web reciba conexiones entrantes en los puertos 80 (HTTP) y 443 (HTTPS), garantizando un funcionamiento seguro del servicio web.

Verificación del modo SELinux

Comprobación del estado de SELinux después del reinicio

Después de reiniciar su sistema Ubuntu, es crucial confirmar el estado operativo de SELinux. Esta verificación garantiza que el sistema aplique correctamente los ajustes de configuración de SELinux.

Ejecute el siguiente comando para verificar el estado actual:

sestatus

Este comando proporciona detalles completos sobre SELinux, incluido su estado operativo actual, el modo en el que se ejecuta (aplicando, permisivo o deshabilitado) y la política que se utiliza. Haga una referencia cruzada de este resultado con su configuración en el /etc/selinux/config archivo para confirmar que SELinux está funcionando según lo previsto.

Solución de problemas comunes de SELinux

Restaurar contextos de archivos predeterminados

Los contextos de archivos incorrectos a menudo provocan denegaciones de acceso por parte de SELinux, lo que interrumpe la funcionalidad de la aplicación. Para rectificar esto, utilice el restorecon dominio. Por ejemplo, para abordar cuestiones en el /var/www/html directorio, ejecute:

sudo restorecon -Rv /var/www/html

Este comando restaura recursivamente el contexto predeterminado para todos los archivos y directorios dentro /var/www/html, con salida detallada que detalla los cambios.

Cambiar temporalmente al modo permisivo para solucionar problemas

¿No estás seguro de si SELinux está causando un problema específico? Cambie temporalmente al modo permisivo para diagnosticar. Este modo registra infracciones sin hacerlas cumplir. Activa el modo permisivo con:

sudo setenforce 0

Pruebe su aplicación ahora. Si los problemas cesan, probablemente se deban a las políticas de SELinux. Recuerde volver al modo de aplicación de la prueba posterior:

sudo setenforce 1

Revisión de registros de SELinux para diagnóstico de problemas

Los registros de SELinux son vitales para identificar violaciones de políticas. En Ubuntu, el registro principal de SELinux es /var/log/audit/audit.log. Para ver entradas recientes, utilice:

sudo tail /var/log/audit/audit.log

Busque "denegado" o "AVC" en los registros para identificar posibles infracciones.

Generando módulos de políticas personalizadas con audit2allow

¿Tiene problemas relacionados con las políticas? Utilizar audit2allow para analizar registros de auditoría y crear un módulo de política personalizado. Por ejemplo:

sudo grep 'denied' /var/log/audit/audit.log | audit2allow -M mycustommodule
sudo semodule -i mycustommodule.pp

El primer comando genera una política denominada "mycustommodule" a partir de las entradas "denegadas" en el registro de auditoría. El segundo instala esta política, lo que potencialmente resuelve el problema.

Gestión de valores booleanos de SELinux

Los booleanos de SELinux controlan funcionalidades específicas. Para enumerar todos los booleanos y sus estados, utilice:

sudo getsebool -a

Para modificar un booleano, como habilitar httpd_can_network_connect, ejecutar:

sudo setsebool -P httpd_can_network_connect 1

El -P El indicador garantiza la persistencia durante los reinicios.

Configuración de SELinux para aplicaciones web: permitir el tráfico HTTP y HTTPS

Para aplicaciones web como WordPress, abrir los puertos de red necesarios en SELinux es crucial. Habilite los puertos 80 (HTTP) y 443 (HTTPS) con:

sudo semanage port -a -t http_port_t -p tcp 80
sudo semanage port -a -t http_port_t -p tcp 443

Configuración SELinux para WordPress

Ajuste las políticas de SELinux para un funcionamiento perfecto de WordPress:

  • Conexiones de red para módulos y scripts HTTPD: Habilite esto para actualizaciones de complementos y temas:
sudo setsebool -P httpd_can_network_connect 1
  • Acceso de lectura y escritura en el directorio de WordPress: Asegúrese de que HTTPD pueda interactuar con archivos de WordPress:
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-content
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-config.php

Opciones de configuración de SELinux para solución de problemas adicionales

Personalice SELinux para diversos requisitos de software:

  • Acceso a directorios personalizados: Modificar contextos de archivos para directorios web personalizados, por ejemplo, /opt/myapp:
sudo chcon -R -t httpd_sys_content_t /opt/myapp
  • Acceso FTP para servidor web: Habilite el acceso FTP si es necesario:
sudo setsebool -P allow_ftpd_full_access 1
  • Funcionalidad de correo electrónico del servidor web: Si su aplicación necesita capacidades de envío de correo electrónico:
sudo setsebool -P httpd_can_sendmail 1

Estas configuraciones ilustran la flexibilidad de SELinux para satisfacer necesidades operativas y de seguridad específicas.

Conclusión

Este es un resumen de nuestra guía para instalar SELinux en Ubuntu 24.04, 22.04 o 20.04. Recorrimos el proceso de instalación, cubrimos algunos comandos básicos y exploramos algunos consejos de configuración clave. Recuerde, las actualizaciones periódicas y el monitoreo continuo son cruciales para mantener la seguridad de su sistema. Siéntase libre de experimentar con las políticas de SELinux para adaptarse mejor a las necesidades de su servidor, pero siempre haga una copia de seguridad de sus configuraciones antes de realizar cambios.

Joshua James
Sígueme
Últimas entradas de Joshua James (ver todo)