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):