Logo MariaDB

MariaDB: Cómo instalar el plugin ed25519

 
 

Índice General

  1. Introducción
  2. Instalación el plugin
  3. ¿Cómo utilizar el plugin ed25519?

 

  1. Introducción (Volver al índice General)
    MySQL ha utilizado la autenticación basada en el algoritmo SHA-1 desde su versión 4.1. Con MariaDB 5.2, este complemento (plugin) de autenticación pasó a llamarse mysql_native_password. A lo largo de los años, a medida que las computadoras se volvían más rápidas, comenzaron a desarrollarse nuevos ataques contra el algoritmo SHA-1, y hoy en día, SHA-1 ya no se considera tan seguro como lo era en 2001, es por eso que se creó el complemento (plugin) de autenticación ed25519.

    El plugin de autenticación ed25519 utiliza el algoritmo de firma digital de curva elíptica (ECDSA, Elliptic Curve Digital Signature Algorithm), para almacenar de forma segura las contraseñas de los usuarios y autenticar a los usuarios. El algoritmo ed25519 es el mismo que utiliza OpenSSH, se basa en la curva elíptica de Edwars y el código creado por el equipo de Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, and Bo-Yin Yang.

    Desde la perspectiva del usuario, el plugin de autenticación ed25519 aún proporciona autenticación convencional basada en contraseña.

  2.  

  3. Instalación el plugin (Volver al índice General)
    Aunque la librería compartida del plugin se distribuye con MariaDB de forma predeterminada como auth_ed25519.so o auth_ed25519.dll, según el sistema operativo, MariaDB no instala el plugin de forma predeterminada.

    Hay dos métodos que se pueden utilizar para instalar el complemento con MariaDB.

       

    • Método 1 (Volver al índice General)
      Con este método no es necesario reiniciar el servidor, se instala el plugin dinámicamente ejecutando alguno de los siguientes comandos INSTALL SONAME o INSTALL PLUGIN. Por ejemplo:

      MariaDB [(none)]> INSTALL SONAME 'auth_ed25519';

      o también:

      MariaDB [(none)]> INSTALL PLUGIN ed25519 SONAME 'auth_ed25519.so';

      También podemos instalarlo omitiendo la extensión de la librería:

      MariaDB [(none)]> INSTALL PLUGIN ed25519 SONAME 'auth_ed25519';

      Nota: Si volvemos a instalar el plugin, se nos avisará que ya está instalado:

      MariaDB [(none)]> INSTALL PLUGIN ed25519 SONAME 'auth_ed25519';
      ERROR 1968 (HY000): Plugin 'ed25519' already installed

      Para la desinstalación del plugin, si hemos utilizado este método, ejecutaríamos la siguiente sentencia:

      MariaDB [(none)]> UNINSTALL SONAME 'auth_ed25519';
    •  

    • Método 2 (Volver al índice General)
      Con este método, le decimos al servidor que cargue el plugin cuando se inicie y lo podemos hacer de dos formas:

      1. Podemos instalar el plugin proporcionando las opciones –plugin-load o –plugin-load-add como un argumento de línea de comandos para mysqld.
        • La opción –plugin-load restablece la lista de carga de plugins y esto puede causar problemas inesperados.
          $ sudo mysqld --plugin-load=auth_ed25519
        • La opción –plugin-load-add no restablece la lista de carga de plugins, por lo que su uso es mucho más seguro.
          $ sudo mysqld --plugin-load-add=auth_ed25519

        Para la desinstalación del plugin, en esta forma, solamente tendremos que dejar de proporcionar las opciones anteriores como argumento a mysqld.

      2. Podemos instalar el plugin especificándolo en un grupo de opciones en un archivo de opciones. En este caso, tendremos que editar el archivo de configuración de MariaDB. En nuestro ejemplo, debido a que estamos trabajando con Debian 10, editaremos el archivo /etc/mysql/mariadb.conf.d/50-server.cnf:
        $ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

        y añadir en el grupo de opciones [mariadb] la línea que activa el plugin:

        [mariadb]
        ...
        plugin_load_add = auth_ed25519
        ...

        Para la desinstalación del plugin, en esta forma, solamente tendremos que eliminar la línea que activa el plugin del grupo de opciones [mariadb].

      En ambas formas, para que surtan efecto los cambios, si utilizamos systemd como sistema de inicio, tendremos que reiniciar el servicio utilizando una de las dos siguientes ordenes:

      $ sudo systemctl restart mysql.service

      o también:

      $ sudo systemctl restart mariadb.service

     

  4. ¿Cómo utilizar el plugin ed25519? (Volver al índice General)
    Una vez hemos instalado el plugin, ya podremos crear usuarios que utilicen el plugin ed25519 como método de autenticación y veremos también como cambiar el método de autenticación de los usuarios ya creados, por ejemplo el del root.

     
     

       

    • Crear usuarios nuevos (Volver al índice General)
         

      • En versiones de MariaDB 10.4 y posteriores (Volver al índice General)
        En MariaDB 10.4 y posteriores podremos crear cuentas de usuarios ejecutando las siguientes intrucciones:

        • Crear una cuenta de usuario utilizando la instrucción CREATE USER, proporcionando la cláusula IDENTIFIED VIA seguida del nombre del plugin, que es ed25519, y proporcionando la cláusula USING seguida de la función PASSWORD(), pasándole la contraseña sin formato como argumento.

          Veamos un ejemplo:

          MariaDB [mysql]> CREATE USER nombreusuario@hostname IDENTIFIED VIA ed25519 USING PASSWORD('clavesecreta');
        • Si SQL_MODE no tiene NO_AUTO_CREATE_USER habilitado, se podrán crear las cuentas de usuario mediante la sentencia GRANT.

          Veamos un ejemplo:

          MariaDB [mysql]> GRANT SELECT ON db.* TO nombreusuario@hostname IDENTIFIED VIA ed25519 USING PASSWORD('clavesecreta');
      •  

      • En versiones de MariaDB 10.3 y anteriores (Volver al índice General)
        En MariaDB 10.3 y anteriores, la función PASSWORD() y la instrucción SET PASSWORD no funcionan con el plugin de autenticación ed25519. En su lugar, tendremos que usar la UDF (User-Defined Functions) que viene con el plugin de autenticación para calcular el hash de la contraseña.

        Para crear la función que calcula el hash, a la que llamaremos ed25519_password, podemos ejecutar la siguiente sentencia:

        MariaDB [mysql]> CREATE FUNCTION ed25519_password RETURNS STRING SONAME "auth_ed25519.so";

        Una vez creada la función ed25519_password, podemos calcular el hash de una contraseña ejecutando la siguiente sentencia:

        MariaDB [mysql]> SELECT ed25519_password('clavesecreta');
        +---------------------------------------------+
        | ed25519_password('clavesecreta')            |
        +---------------------------------------------+
        | cSwdRRV6IKuo82ajqvJVnHdYsyIY9eK//YuzfT9sE3Y |
        +---------------------------------------------+
        1 row in set (0.000 sec)

        Ahora que tenemos el hash de la contraseña, ya podemos usarlo para crear la cuenta de usuario.

        • Para crear una cuenta de usuario utilizando la instrucción CREATE USER, especificaremos el nombre del plugin en la cláusula IDENTIFIED VIA, mientras proporcionamos el hash de la contraseña como argumento de la cláusula USING.

          Veamos un ejemplo:

          MariaDB [mysql]> CREATE USER username@hostname IDENTIFIED VIA ed25519 USING 'cSwdRRV6IKuo82ajqvJVnHdYsyIY9eK//YuzfT9sE3Y';
        • Si SQL_MODE no tiene NO_AUTO_CREATE_USER habilitado, se podrán crear las cuentas de usuario mediante la sentencia GRANT.

          Veamos un ejemplo:

          MariaDB [mysql]> GRANT SELECT ON db.* TO usuario1@localhost IDENTIFIED VIA ed25519 USING 'cSwdRRV6IKuo82ajqvJVnHdYsyIY9eK//YuzfT9sE3Y';

       

    • Modificar usuarios existentes (Volver al índice General)
         

      • En versiones de MariaDB 10.4 y posteriores (Volver al índice General)
        En MariaDB 10.4 y posteriores podremos modificar cuentas de usuarios ejecutando las siguientes intrucciones:

        • Podemos cambiar la contraseña de una cuenta de un usuario ejecutando la instrucción SET PASSWORD seguida de la función PASSWORD() y proporcionando la contraseña de texto sin formato como argumento.

          Veamos un ejemplo:

          MariaDB [mysql]> SET PASSWORD =  PASSWORD('nueva_contraseña')
        • También podemos cambiar la contraseña de la cuenta de un usuario con la declaración ALTER USER. Tendremos que especificar el nombre del plugin en la cláusula IDENTIFIED VIA mientras proporcionamos la contraseña de texto sin formato como argumento de la función PASSWORD() en la cláusula USING.

          Veamos un ejemplo:

          MariaDB [mysql]> ALTER USER nombreusuario@hostname IDENTIFIED VIA ed25519 USING PASSWORD('nueva_contraseña');
      •  

      • En versiones de MariaDB 10.3 y anteriores (Volver al índice General)
        En MariaDB 10.3 y anteriores, la función PASSWORD() y la instrucción SET PASSWORD no funcionan con el plugin de autenticación ed25519. En su lugar, tendremos que usar la UDF (User-Defined Functions) que viene con el plugin de autenticación para calcular el hash de la contraseña.

        Para crear la función que calcula el hash, a la que llamaremos ed25519_password, podemos ejecutar la siguiente sentencia:

        MariaDB [mysql]> CREATE FUNCTION ed25519_password RETURNS STRING SONAME "auth_ed25519.so";

        Una vez creada la función ed25519_password, podemos calcular el hash de una contraseña ejecutando la siguiente sentencia:

        MariaDB [mysql]> SELECT ed25519_password('nueva_contraseña');
        +---------------------------------------------+
        | ed25519_password('nueva_contraseña')        |
        +---------------------------------------------+
        | jUwEOHC1BWzdodw62dZBsBpPRTHd9aAJFpQwC56l8ng |
        +---------------------------------------------+
        1 row in set (0.001 sec)

        Ahora que tenemos el hash de la contraseña, ya podemos usarlo para modificar la cuenta de usuario.

        Podemos cambiar la contraseña de la cuenta de usuario con la declaración ALTER USER. Tendremos que especificar el nombre del plugin en la cláusula IDENTIFIED VIA mientras proporcionamos el hash de la contraseña como parámetro de la cláusula USING.

        Veamos un ejemplo:

        MariaDB [mysql]> ALTER USER nombreusuario@hostname IDENTIFIED VIA ed25519 USING 'jUwEOHC1BWzdodw62dZBsBpPRTHd9aAJFpQwC56l8ng';
  5. Sobre este tema hay mucho de que hablar, pero creo que es un buen primer paso para mejorar la seguridad de nuestro sistema gestor de bases de datos (SGBD) MariaDB.

 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
 
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Últimas publicaciones de

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.