Configuración de método de autenticación SHA en MySQL

Introducción

A partir de MySQL versión 8 el encriptado (hashing) de contraseñas de los usuarios de las bases de datos ha sido cambiado por defecto a caching_sha2_password. Este método engloba tanto protocolos obsoletos (SHA 256), como protocolos actuales y futuros, combinados con la capacidad de almacenar en memoria rápida (caching) todo el mecanismo de encriptado y comparación válida de credenciales de los usuarios.

En una instalación nueva de MySQL 8 este es el método predeterminado, sin embargo, los servidores MySQL que han actualizado de versiones anteriores conservan el anterior método denominado mysql_native_password. Esta consideración evita que los antiguos usuarios pierdan conexión remota debido a que, por parte de los clientes, se debe actualizar y configurar el proceso de conexión y autenticación.

En Pandora FMS la conexión entre la Consola web y el PFMS server (entorno monolítico) se realiza mediante fichero de conexión tipo Unix (Unix socket-file) y protocolo de memoria compartida (shared-memory protocol), los cuales se consideran protegidos y seguros en un ambiente local, por lo que en este caso en particular es indistinto el protocolo utilizado para el cifrado, encriptado y transmisión de contraseñas y datos.

Ante toda esta situación, y a fin de mantener al día las buenas prácticas de seguridad, se recomienda cambiar el protocolo de cifrado de mysql_native_password a caching_sha2_password, para el usuario por defecto pandora, mediante este tutorial.

Requisitos previos

Se debe confirmar si se tiene instalada una versión igual o posterior a MySQL 8.0.4 con el siguiente comando (en su versión larga):

mysql --version

O en su versión corta:

mysql -V

Se obtendrá algo similar a esto:

mysql  Ver 8.0.39-30 for Linux on x86_64 (Percona Server (GPL), Release '30', Revision '41ebc5d9')

En este tema se utiliza un usuario llamado pandora y su contraseña Pandor4!.

Para cada caso particular es posible consultar dichos valores con:

cat /var/www/html/pandora_console/include/config.php | grep dbuser
cat /var/www/html/pandora_console/include/config.php | grep dbpass

Obteniendo un resultado similar al siguiente:


Procedimiento para todos los sistemas operativos

  • Detener el PFMS server.

Se debe ejecutar en una ventana terminal:

systemctl stop pandora_server
  • Comprobación de usuario activo.

Se debe comprobar si el usuario activo para conexión de base de datos (por defecto pandora) utiliza mysql_native_password. Para ello se inicia sesión en MySQL como root y se ejecuta la siguiente consulta:

SELECT USER, host, plugin FROM mysql.user WHERE USER = 'pandora';

Se obtendrá una respuesta similar a:

  • Cambiar tipo de contraseña.

Se cambia el método de autenticación y se define una contraseña con la siguiente sentencia:

ALTER USER 'pandora'@'%' IDENTIFIED WITH caching_sha2_password BY 'Pandor4!';
  • Comprobación del cambio.

Al ejecutar de nuevo:

SELECT USER, host, plugin FROM mysql.user WHERE USER = 'pandora';

Se debe obtener lo siguiente:

Una vez comprobado el cambio a nivel de servidor, se cierra la interfaz MySQL con la orden exit; y se procede al siguiente paso a nivel de cliente.

Configuración de cliente

Tal como se explica en la introducción, del lado del cliente se debe actualizar y configurar la conexión según el tipo de sistema operativo utilizado: EL 8 /EL 9 o Ubuntu.

EL8 / EL9

Se debe tener instalado el paquete mariadb-connector-c, el cual viene instalado por defecto en la mayoría de entornos EL8 y EL9.

Se comprueba que el fichero exista con:

ls -l /usr/lib64/mariadb/plugin/caching_sha2_password.so

Se obtendrá una respuesta positiva similar a la siguiente:

Siendo así, el siguiente paso es crear un enlace simbólico de ese fichero con el comando:

ln -s /usr/lib64/mariadb/plugin/caching_sha2_password.so /usr/lib64/mysql/plugin/caching_sha2_password.so

Se comprueba el enlace hecho con:

ls -l /usr/lib64/mysql/plugin/caching_sha2_password.so

Obteniendo la siguiente respuesta positiva:

Con todos los pasos realizados exitosamente, solamente resta el reiniciar el PFMS server.

Ubuntu

Se debe tener instalado el paquete libmariadb3. Dependiendo de la versión instalada puede no venir con el sistema operativo y debe instalarse con el comando:

apt-get install libmariadb3

Se comprueba que con la instalación del paquete se ha generado el fichero requerido, caching_sha2_password.so:

ls -l /usr/lib/x86_64-linux-gnu/libmariadb3/plugin/caching_sha2_password.so

Se debe crear la carpeta de destino /usr/lib64/mysql/plugin/, con el comando:

mkdir -p /usr/lib64/mysql/plugin/

Ahora se ha de crear el enlace simbólico:

ln -s /usr/lib/x86_64-linux-gnu/libmariadb3/plugin/caching_sha2_password.so /usr/lib64/mysql/plugin/caching_sha2_password.so

Con estos pasos el servidor podrá usar autenticación SHA2 para conectar a la base de datos. Se debe avanzar al siguiente paso (reiniciar Pandora FMS server) para finalizar la configuración.

Reiniciar PFMS server

Para reiniciar el Pandora FMS server se debe ejecutar:

systemctl restart pandora_server

Tras unos instantes se debe confirmar por Consola web el estado (menú Management → Servers → Manage servers):

Volver al índice de documentación de Pandora FMS