Linux mejorado de seguridad con MariaDB

Linux mejorado de seguridad (SELinux) es un módulo del núcleo Linux que proporciona un marco para configurar el sistema de control de acceso obligatorio (MAC) para muchos recursos del sistema. Está habilitado por defecto en algunas distribuciones de Linux, incluyendo RHEL, CentOS, Fedora y otras distribuciones similares de Linux. SELinux evita que los programas accedan a archivos, directorios o puertos a menos que esté configurado para acceder a esos recursos.

Verificando Si SELinux Está Habilitado

Para verificar si SELinux está habilitado, ejecute el comando getenforce. Por ejemplo:

getenforce

Poner temporalmente mysqld En Modo Permisivo

Cuando está resolviendo problemas que cree que SELinux podría estar causando, puede ayudar poner temporalmentemysqld_t en modo permisivo. Esto se puede hacer ejecutando el comando semanage. Por ejemplo:

sudo semanage permissive -a mysqld_t

Si eso resolvió el problema, entonces significa que la política actual de SELinux es la culpable. Necesita ajustar la política o etiquetas de SELinux para MariaDB.

Crear y cargar la Política de SELinux del servidor

El servidor MariaDB viene con una política de SELinux que no se compila ni se carga de forma predeterminada. En muchos sistemas, la directiva se instala en /usr/share/mysql/policy/selinux/mariadb-server.fc. Para compilarlo y cargarlo, ejecute lo siguiente:

Configuración de contextos de archivo

SELinux utiliza contextos de archivo como una forma de determinar quién debería poder acceder a ese archivo.Los contextos de archivo

se administran con los comandos semanage fcontext y restorecon.

En muchos sistemas, la utilidad semanage se instala mediante el paquete policycoreutils-python, y la utilidad restorecon se instala mediante el paquete policycoreutils. Puede instalar con el siguiente comando:

sudo yum install policycoreutils policycoreutils-python

Un archivo o de un directorio en el contexto actual se puede comprobar mediante la ejecución de ls--context o --scontext opciones.

Establecer el contexto de archivo para el Directorio de datos

Si utiliza un directorio personalizado para datadir, es posible que deba establecer el contexto de archivo para ese directorio. El contexto del archivo SELinux para los archivos de datos MariaDB es mysqld_db_t. Puede determinar si este contexto de archivo está presente en su sistema y a qué archivos o directorios está asociado ejecutando el siguiente comando:

sudo semanage fcontext --list | grep mysqld_db_t

Si desea establecer el contexto de archivo para su directorio personalizado para su datadir, puede hacerlo ejecutando los comandos semanage fcontext y restorecon. Por ejemplo:

sudo semanage fcontext -a -t mysqld_db_t "/mariadb/data(/.*)?"sudo restorecon -Rv /mariadb/data

Si usted desea comprobar el archivo actual contexto, puede hacerlo mediante la ejecución de ls--context o --scontext opciones. Por ejemplo:

ls --directory --scontext /mariadb/data

Establecer el contexto de archivo para los Archivos de registro

Si utiliza un directorio personalizado para los archivos de registro, es posible que deba establecer el contexto de archivo para ese directorio. El contexto del archivo SELinux para los archivos de registro de MariaDB es mysqld_log_t. Puede determinar si este contexto de archivo está presente en su sistema y a qué archivos o directorios está asociado ejecutando el siguiente comando:

sudo semanage fcontext --list | grep mysqld_log_t

Si desea establecer el contexto de archivo para su directorio personalizado para archivos de registro, puede hacerlo ejecutando los comandos semanage fcontexty restorecon. Por ejemplo:

sudo semanage fcontext -a -t mysqld_log_t "/var/log/mysql(/.*)?"sudo restorecon -Rv /var/log/mysql

Si usted desea comprobar el archivo actual contexto, puede hacerlo mediante la ejecución de ls--context o --scontext opciones. Por ejemplo:

ls --directory --scontext /var/log/mysql

Establecer el contexto de archivo para los Archivos de opciones

Si utiliza un directorio personalizado para los archivos de opciones, es posible que deba establecer el contexto de archivo para ese directorio. El contexto del archivo SELinux para los archivos de opciones MariaDB es mysqld_etc_t. Puede determinar si este contexto de archivo está presente en su sistema y a qué archivos o directorios está asociado ejecutando el siguiente comando:

sudo semanage fcontext --list | grep mysqld_etc_t

Si desea establecer el contexto de archivo para su directorio personalizado para archivos de opciones, puede hacerlo ejecutando los comandos semanage fcontexty restorecon. Por ejemplo:

sudo semanage fcontext -a -t mysqld_etc_t "/etc/mariadb(/.*)?"sudo restorecon -Rv /etc/mariadb

Si usted desea comprobar el archivo actual contexto, puede hacerlo mediante la ejecución de ls--context o --scontext opciones. Por ejemplo:

ls --directory --scontext /etc/mariadb

Que permite el acceso al Contexto del archivo Tmpfs

Si desea montar su tmpdir en un sistema de archivos tmpfs o si desea utilizar un tmpfs sistema de archivos en /run/shm, entonces es posible que deba permitir que mysqld_t tenga acceso a un par de contextos de archivos relacionados con tmpfs. Por ejemplo:

Solución de problemas de SELinux

Es posible que deba solucionar problemas relacionados con SELinux en casos como:

  • MariaDB está utilizando un puerto no predeterminado.
  • MariaDB está leyendo o escribiendo en algunos archivos (datadir,archivos de registro, archivos de opciones, etc.) ubicado en rutas no predeterminadas.
  • MariaDB está utilizando un complemento que requiere acceso a recursos que las instalaciones predeterminadas no utilizan.

Errores de permisos del sistema de archivos

Si los permisos del sistema de archivos para algún directorio MariaDB se ven bien, pero el registro de errores de MariaDB todavía tiene errores que se ven similares a los siguientes:

A continuación, marque /var/log/audit/audit.log de SELinux para entradas de registro que se ven similares a los siguientes:

Si ve alguna entrada similar a esta, lo más probable es que necesite ajustar los contextos de archivo para algunos archivos o directorios. Consulte Configuración de contextos de archivo para obtener más información sobre cómo hacerlo.

SELinux y MariaDB En un puerto diferente

Los puertos TCP y UDP también están habilitados para el permiso de enlace. Si está utilizando un puerto diferente, o algunos puertos Galera, configure SELinux para que pueda usar esos puertos:

sudo semanage port -a -t mysqld_port_t -p tcp 3307 

Generando políticas de SELinux con audit2allow

En algunos casos, un sistema MariaDB puede necesitar políticas no estándar. Es posible crear estas políticas a partir del registro de auditoría de SELinux utilizando la utilidad audit2allow. El semanage y semodule utilidades también será necesario.

En muchos sistemas, el audit2allow y semanage utilidades instaladas por el policycoreutils-python el paquete, y el semodule utilidad se instala por el policycoreutils paquete. Puede instalar con el siguiente comando:

sudo yum install policycoreutils policycoreutils-python

Se puede utilizar el siguiente proceso para generar una política a partir del registro de auditoría:

  • Eliminar las auditorías de la política:
sudo semodule -DB
  • Poner temporalmente mysqld_t en modo permisivo. Por ejemplo:
sudo semanage permissive -a mysqld_t
  • Inicio MariaDB.
  • Haga lo que esté causando errores en SELinux.
  • Utilice el registro de auditoría generado para crear una política:
sudo grep mysqld /var/log/audit/audit.log | audit2allow -M mariadb_localsudo semodule -i mariadb_local.pp
  • Pull mysqld_t fuera del modo permisivo. Por ejemplo:
sudo semanage permissive -d mysqld_t
  • Restaurar dontaudits para la política:
sudo setmodule -B

El mismo procedimiento puede ser utilizado si MariaDB se inicia, pero SELinux impide funcionar correctamente. Por ejemplo, SELinux puede impedir que el complemento PAM autentique a los usuarios. La solución es la misma: habilitar auditoría, cambiar a permisiva, hacer, lo que SELinux no le permitió, crear una política a partir del registro de auditoría.

Cuando descubra los permisos necesarios de SELinux, informe de los permisos necesarios al seguimiento de errores de su sistema operativo para que todos los usuarios puedan beneficiarse de su trabajo (por ejemplo, Red Hat Bugzilla https://bugzilla.redhat.com/).

Deja una respuesta

Tu dirección de correo electrónico no será publicada.