GNU/Linux >> Tutoriales Linux >  >> Linux

Comprender la autenticación conectable de MySQL

MySQL admite una serie de mecanismos de autenticación que están disponibles a través de la autenticación conectable. MySQL utiliza una serie de algoritmos para cifrar las contraseñas almacenadas en la tabla de usuarios:

  • El complemento mysql_native_password implementa el formato de contraseña estándar, un hash de 41 bytes de ancho.
  • El complemento mysql_old_password implementa un formato antiguo que es menos seguro, con un ancho de 16 bytes.
  • El complemento sha256_password implementa el algoritmo hash SHA-256 ampliamente utilizado en informática segura.

El valor de la variable de sistema old_passwords especifica el algoritmo que PASSWORD() función utiliza para crear contraseñas, de la siguiente manera:

  • 0 :El algoritmo estándar, como se usa desde MySQL 4.1.1
  • 1 :El antiguo algoritmo, como se usaba antes de MySQL 4.1.1
  • 2 :El algoritmo SHA-256

Inicie el servidor con el complemento de autenticación predeterminado opción establecida en sha256_password para usar contraseñas SHA-256 para todos los usuarios nuevos, o use CREAR USUARIO con IDENTIFICADO CON sha256_password cláusula para especificar contraseñas SHA-256 para un usuario específico.

Complemento de autenticación de texto claro del lado del cliente

Algunos métodos de autenticación, como la autenticación PAM (Módulos de autenticación conectables), requieren que el cliente envíe una contraseña de texto sin formato al servidor para que el servidor pueda procesar la contraseña en su forma normal. La mysql_clear_password el complemento habilita este comportamiento.

La biblioteca cliente de MySQL incluye un complemento de autenticación Cleartext incorporado, mysql_clear_password. El complemento se usa para enviar una contraseña de texto sin formato al servidor:la contraseña generalmente se cifra. El complemento está habilitado por la variable de entorno LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN y especificando –enable-cleartext-plugin al ejecutar aplicaciones de cliente MySQL como mysql y mysqladmin. La opción MYSQL_ENABLE_CLEARTEXT_PLUGIN de la función C API mysql_options() también se puede usar para habilitar el complemento.

Complementos de autenticación cargables

Además de los complementos integrados predeterminados, MySQL proporciona varios complementos cargables:

  • El complemento de autenticación de prueba (test_plugin_server ) se autentica mediante autenticación de contraseña nativa o antigua, y está destinado a fines de prueba y desarrollo.
  • El complemento Socket Peer-Credential (auth_socket) permite a los usuarios conectarse a través del archivo de socket de UNIX solo si su nombre de usuario de Linux coincide con su cuenta de MySQL.
  • El complemento de autenticación PAM (authentication_pam) es un complemento de Enterprise Edition que le permite iniciar sesión mediante un mecanismo de autenticación externo. MySQL no almacena su contraseña, pero utiliza el mecanismo UNIX PAM (Módulos de autenticación conectables) para transmitir el nombre de usuario y la contraseña proporcionados por el cliente para la autenticación por parte del sistema operativo.

Puede desarrollar sus propios complementos de autenticación. El complemento de autenticación de prueba está diseñado para que los desarrolladores lo utilicen para crear sus propios complementos; su código fuente está disponible como parte de la distribución del código fuente de MySQL. Cargue un complemento de autenticación cargable iniciando el servidor con plugin-load opción en la línea de comando o en el archivo my.cnf, como en el siguiente ejemplo:

[mysqld] 
plugin-load=authentication_pam.so

Complemento de autenticación PAM

El complemento de autenticación PAM es un complemento de Enterprise Edition que autentica las cuentas de MySQL contra el sistema operativo. PAM define los servicios que configuran la autenticación. Estos se almacenan en /etc/pam.d . PAM busca en /etc/pam.d los servicios que autentica. Por ejemplo, para crear un servicio PAM llamado mysql-pam, cree el archivo /etc/pam.d/mysql-pam con el siguiente contenido:

#%PAM-1.0
auth     include  password-auth 
account  include  password-auth

Además de la autenticación de MySQL, PAM se integra con otros métodos de autenticación, incluidos LDAP y Active Directory, por lo que puede usar PAM para autenticar muchos servicios (incluido MySQL) en una sola tienda en su red. Para crear un usuario de MySQL que se asigne directamente a un usuario del sistema operativo, use una declaración como la siguiente:

CREATE USER bob@localhost
IDENTIFIED WITH authentication_pam AS 'mysql-pam';

Cuando bob inicia sesión, MySQL pasa el nombre de usuario y la contraseña que recibe del cliente a PAM, que se autentica contra el sistema operativo. El cliente deberá enviar la contraseña en texto claro. Habilite el complemento de autenticación de texto claro del lado del cliente para este propósito:

shell> mysql --enable-cleartext-plugin -ubob -p 
Enter password: bob’s_OS_password

Para habilitar los inicios de sesión basados ​​en grupos con el complemento de autenticación PAM, cree una cuenta de proxy anónima habilitada para PAM que no coincida con ningún usuario, pero que especifique un conjunto de asignaciones del grupo del sistema operativo al usuario de MySQL:

CREATE USER ''@'' IDENTIFIED WITH authentication_pam AS 'mysql-pam, sales=m_sales, finance=m_finance';

El ejemplo anterior supone que tiene grupos de sistema operativo de ventas y finanzas y usuarios de MySQL m_sales y m_finance. Luego debe otorgar el privilegio PROXY a la cuenta de proxy anónimo, otorgándole derechos para iniciar sesión como los usuarios de MySQL m_sales y m_finance:

GRANT PROXY ON m_sales@localhost TO ''@'';
GRANT PROXY ON m_finance@localhost TO ''@'';

Los usuarios que son miembros de los grupos de ventas y finanzas ahora pueden proporcionar sus credenciales de sistema operativo en el indicador de línea de comandos de mysql, que los registra como usuarios de MySQL m_sales o m_finance, respectivamente, otorgándoles todos los privilegios otorgados a esas cuentas. Por ejemplo, si Peter es miembro del grupo de ventas, podría iniciar sesión de la siguiente manera:

shell> mysql --enable-cleartext-plugin -upeter -p
Enter password: peter’s_OS_password
Welcome to the MySQL monitor. Commands end with ; or \g. 
...
mysql> SELECT CURRENT_USER(); 
+-------------------+
| CURRENT_USER()    | 
+-------------------+
| m_sales@localhost | 
+-------------------+ 
1 row in set (0.01 sec)
Guía para principiantes sobre la gestión de usuarios de MySQL
Comprender los privilegios de MySQL


Linux
  1. Instalar MariaDB o MySQL en Linux

  2. Pasos para instalar el complemento de monitoreo Percona MySQL para Zabbix

  3. Reparación de bases de datos MySQL InnoDB

  4. Copia de seguridad MySQL 1.1

  5. Comprender los privilegios de MySQL

Comprender los permisos de archivos de Linux

Cambiar el método de autenticación para el usuario raíz de MySQL en Ubuntu

Anatomía de un archivo de configuración de módulos de autenticación conectables (PAM) de Linux

Una introducción a los módulos de autenticación conectables (PAM) en Linux

Cómo mejorar la seguridad de los usuarios de Linux con la configuración del módulo de autenticación conectable

Comprender los procesos en Linux