GNU/Linux >> Tutoriels Linux >  >> Linux

Comprendre l'authentification enfichable MySQL

MySQL prend en charge un certain nombre de mécanismes d'authentification disponibles via l'authentification enfichable. MySQL utilise un certain nombre d'algorithmes pour chiffrer les mots de passe stockés dans la table des utilisateurs :

  • Le plug-in mysql_native_password implémente le format de mot de passe standard, un hachage de 41 octets.
  • Le plug-in mysql_old_password implémente un ancien format moins sécurisé, d'une largeur de 16 octets.
  • Le plug-in sha256_password implémente l'algorithme de hachage SHA-256 largement utilisé dans l'informatique sécurisée.

La valeur de la variable système old_passwords spécifie l'algorithme que le PASSWORD() la fonction utilise pour créer des mots de passe, comme suit :

  • 0  :L'algorithme standard, tel qu'il est utilisé depuis MySQL 4.1.1
  • 1  :L'ancien algorithme, tel qu'il était utilisé avant MySQL 4.1.1
  • 2  :L'algorithme SHA-256

Démarrez le serveur avec le plugin d'authentification par défaut option définie sur sha256_password pour utiliser des mots de passe SHA-256 pour tous les nouveaux utilisateurs, ou utilisez CREATE USER avec IDENTIFIED WITH sha256_password clause pour spécifier les mots de passe SHA-256 pour un utilisateur spécifique.

Plug-in d'authentification en texte clair côté client

Certaines méthodes d'authentification, telles que l'authentification PAM (Pluggable Authentication Modules), exigent que le client envoie un mot de passe en texte brut au serveur afin que le serveur puisse traiter le mot de passe sous sa forme normale. Le mysql_clear_password plugin permet ce comportement.

La bibliothèque cliente MySQL comprend un plug-in d'authentification Cleartext intégré, mysql_clear_password. Le plugin est utilisé pour envoyer un mot de passe en texte brut au serveur - Le mot de passe est généralement haché. Le plugin est activé par la variable d'environnement LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN et en spécifiant –enable-cleartext-plugin lors de l'exécution d'applications client MySQL telles que mysql et mysqladmin. L'option MYSQL_ENABLE_CLEARTEXT_PLUGIN de la fonction API C mysql_options() peut également être utilisée pour activer le plugin.

Plug-ins d'authentification chargeables

En plus des plugins intégrés par défaut, MySQL fournit plusieurs plugins chargeables :

  • Le plug-in Test d'authentification (test_plugin_server ) s'authentifie à l'aide d'une authentification par mot de passe natif ou ancien, et est destiné à des fins de test et de développement.
  • Le plug-in Socket Peer-Credential (auth_socket) permet aux utilisateurs de se connecter via le fichier socket UNIX uniquement si leur nom d'utilisateur Linux correspond à leur compte MySQL.
  • Le plug-in d'authentification PAM (authentication_pam) est un plug-in Enterprise Edition qui vous permet de vous connecter à l'aide d'un mécanisme d'authentification externe. MySQL ne stocke pas votre mot de passe, mais utilise le mécanisme UNIX PAM (Pluggable Authentication Modules) pour transmettre le nom d'utilisateur et le mot de passe fournis par le client pour l'authentification par le système d'exploitation.

Vous pouvez développer vos propres plugins d'authentification. Le plugin Test Authentication est destiné à être utilisé par les développeurs pour créer leurs propres plugins; son code source est disponible dans le cadre de la distribution du code source MySQL. Chargez un plugin d'authentification chargeable en démarrant le serveur avec le plugin-load en ligne de commande ou dans le fichier my.cnf, comme dans l'exemple suivant :

[mysqld] 
plugin-load=authentication_pam.so

Plug-in d'authentification PAM

Le plug-in PAM Authentication est un plug-in Enterprise Edition qui authentifie les comptes MySQL par rapport au système d'exploitation. PAM définit les services qui configurent l'authentification. Ceux-ci sont stockés dans /etc/pam.d . PAM recherche dans /etc/pam.d les services qu'il authentifie. Par exemple, pour créer un service PAM appelé mysql-pam, créez le fichier /etc/pam.d/mysql-pam avec le contenu suivant :

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

En plus de l'authentification MySQL, PAM s'intègre à d'autres méthodes d'authentification, notamment LDAP et Active Directory, de sorte que vous pouvez utiliser PAM pour authentifier de nombreux services (y compris MySQL) auprès d'un seul magasin de votre réseau. Pour créer un utilisateur MySQL qui correspond directement à un utilisateur du système d'exploitation, utilisez une instruction telle que la suivante :

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

Lorsque bob se connecte, MySQL transmet le nom d'utilisateur et le mot de passe qu'il reçoit du client à PAM, qui s'authentifie auprès du système d'exploitation. Le client doit envoyer le mot de passe en clair. Activez le plug-in d'authentification Cleartext côté client à cette fin :

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

Pour activer les connexions basées sur les groupes avec le plug-in d'authentification PAM, créez un compte proxy anonyme compatible PAM qui ne correspond à aucun utilisateur, mais spécifie un ensemble de mappages du groupe de système d'exploitation à l'utilisateur MySQL :

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

L'exemple précédent suppose que vous disposez de groupes de systèmes d'exploitation commerciaux et financiers et d'utilisateurs MySQL m_sales et m_finance. Vous devez ensuite accorder le privilège PROXY au compte proxy anonyme, en lui donnant le droit de se connecter en tant qu'utilisateurs MySQL m_sales et m_finance :

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

Les utilisateurs membres des groupes de vente et de finance peuvent désormais fournir les informations d'identification de leur système d'exploitation à l'invite de la ligne de commande mysql, qui les connecte respectivement en tant qu'utilisateurs MySQL m_sales ou m_finance, leur donnant tous les privilèges accordés à ces comptes. Par exemple, si Pierre est membre du groupe des ventes, il peut se connecter comme suit :

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)
Guide du débutant sur la gestion des utilisateurs MySQL
Comprendre les privilèges MySQL


Linux
  1. Installer MariaDB ou MySQL sur Linux

  2. Étapes pour installer le plugin de surveillance Percona MySQL pour Zabbix

  3. Comprendre YAML pour Ansible

  4. Comprendre le bureau Linux ?

  5. Sauvegarde MySQL 1.1

Comprendre les autorisations de fichiers Linux

Modifier la méthode d'authentification pour l'utilisateur racine MySQL dans Ubuntu

Anatomie d'un fichier de configuration Linux Pluggable Authentication Modules (PAM)

Une introduction aux modules d'authentification enfichables (PAM) sous Linux

Comment améliorer la sécurité des utilisateurs Linux avec les paramètres du module d'authentification enfichable

Comprendre les processus sous Linux