Pages : 1
#1 Le 22/07/2020, à 12:31
- axel584
[Résolu] MariaDB sans mot de passe
Bonjour,
Je m'occupe d'une petite association et on a un serveur dédié, on utilise quelques outils maisons, du spip et du phpMyAdmin. On est plusieurs à s'occuper de la maintenance du serveur avec des compétences différentes et même si j'ai plutôt un profil développeur, je suis le seul à m'y connaitre en mysql/mariadb. Et depuis quelques temps, j'ai remarqué que notre serveur mariadb autorise les connexions sans mot de passe (et accepte n'importe quel mot de passe qu'on lui indique).
Je suis très inquiet par ce trou de sécurité et je n'arrive pas à comprendre d'où ça vient. Je fais du mysql depuis très longtemps sans vraiment rafraîchir mes connaissances. J'ai cru comprendre que dans les dernières versions, il y a avait un système d'authentification basé sur les comptes unix, mais je ne sais pas si le problème vient de là.
Question 1 : est-ce que ce système d'authentification basé sur les comptes unix est lié à une base de données ou bien à un utilisateur (en gros, est ce qu'un utilisateur X peut se connecter avec identifiant/mot de passe et un utilisateur Y à partir de son compte unix ?)
Question 2 : J'ai cru comprendre que ce système d'authentification par compte unix était préférable car plus sécurisé. Mais est-ce qu'il est compatible avec des applications comme spip ou phpMyAdmin ? Ou bien dans ces applications, faut il continuer à utiliser un système de connexion par identifiant/mot de passe.
Pour mon problème de connexion sans mot de passe, j'ai essayé de faire :
mysqladmin -u <identifiant> -p version
Et quelque soit le mot de passe indiqué, il m'affiche le numéro de version de la base
Si je lui passe un identifiant farfellu, il m'affiche également le numéro de version de la base.
Question 3 : si j'execute cette commande mysqladmin, vous me confirmez que si je n'indique pas un utilisateur existant ou un mot de passe correspondant à l'utilisateur, il devrait me renvoyer une erreur d'authentification ?
Une idée du problème ?
J'ai essayé de redémarré le service mariadb :
sudo systemctl stop mariadb
sudo systemctl start mariadb
Et j'ai toujours le même problème.
Merci pour votre aide,
Axel
Hors ligne
#2 Le 22/07/2020, à 12:56
- bruno
Re : [Résolu] MariaDB sans mot de passe
Bonjour,
Question 1 : les deux. Quelle que soit la méthode d’authentification choisie : unix_socket ou mysql_native_password les utilisateurs son définis dans la table user de la base mysql
Un exemple de requête pour voir les utilisateur et leur méthode d'authentification :
select user,plugin from mysql.user;
Les utilisateurs qui sont définis avec le plugin unix_socket peuvent se connecter à leur(s) base(s) depuis leur compte Unix sans fournir de mot de passe. Si ce type d'utilisateur se sert quand même des arguments -u et -p, n'importe quel mot de passe peu être saisi : ce que tu observes.
Question 2 : c'est plus sécurisé dans le sens où cela évite de stocker des mots de passe en clair dans les fichiers de configuration d'un CMS ou application web (SPIP, Wordpres, etc.). À condition d'avoir des utilisateurs Unix avec des droits suffisamment restreints et d'être capable de configurer son serveur web pour que chaque site web ait son propre utilisateur (celui qui interprète les script PHP).
À toi de voir s'il vaut mieux utiliser l'un ou l'autre système d'authentification. Je conseille de conserver l’authentification unix_socket pour le compte root car cela facilite et sécurise l'administration, la sauvegarde, et la maintenance des bases de données.
#3 Le 22/07/2020, à 12:59
- axel584
Re : [Résolu] MariaDB sans mot de passe
Merci beaucoup. J'ai effectué ta requête et tous les champs "plugin" sont vides, donc, ils devraient se connecter par identifiant/mot de passe.
Je verrai dans un deuxième temps pour passer le compte root en "unix_socket". Mais en attendant, il faut que je trouve pourquoi il accepte tous les mots de passe que je lui donne et comment changer ça.
Axel
Hors ligne
#4 Le 22/07/2020, à 13:15
- bruno
Re : [Résolu] MariaDB sans mot de passe
Effectivement si la colonne plugin est vide, il doit s'agir d'une connexion par mot de passe. Dans ce cas il faut également regarder la valeur de la colonne password pour les utilisateurs ou plugin n'est pas défini :
select user,password,plugin from mysql.user where plugin='';
Celle-ci doit contenir le mot de passe chiffré.
Si ce n'est pas le cas c'est probablement que quelqu'un à mis un mot de passe vide pour l'utilisateur en question.
#5 Le 22/07/2020, à 14:50
- axel584
Re : [Résolu] MariaDB sans mot de passe
Tous les comptes utilisateurs ont un mot de passe...
Mais quand je me connecte, je peux taper n'importe quoi comme identifiant et n'importe quoi comme mot de passe et il accepte ma connexion.... Je pense que c'est plutôt un problème dans la configuration de mariadb, mais je n'ai aucune idée d'où vient le problème.
Merci pour votre aide,
Axel
Hors ligne
#6 Le 22/07/2020, à 15:18
- bruno
Re : [Résolu] MariaDB sans mot de passe
Mais quand je me connecte, je peux taper n'importe quoi comme identifiant et n'importe quoi comme mot de passe et il accepte ma connexion....
Si tu es root au moment où tu lance ta commande c'est normal. Mais tu ne devrais pas pouvoir utiliser n'importe quel identifiant (uniquement root)
Il faut indiquer les commandes que tu tapes et leur retour complet.
Dernière modification par bruno (Le 22/07/2020, à 15:26)
#7 Le 22/07/2020, à 15:20
- axel584
Re : [Résolu] MariaDB sans mot de passe
Non, même sans être root... et le plus inquiétant, c'est que ça fonctionne pareil dans phpMyAdmin... Je tape n'importe quoi et je peux rentrer dans phpMyAdmin.
Hors ligne
#8 Le 22/07/2020, à 15:36
- bruno
Re : [Résolu] MariaDB sans mot de passe
J'ai modifié ma réponse précédente.
Dans ce cas ce n'est pas normal du tout ! Et je ne vois qu'une seule façon d'arriver à ce comportement : un utilisateur avec une colonne user vide (sans nom) et un mot de passe vide.
Il faudrait vérifier l'intégralité de la table user de la base mysql.
Donne au moins le retour complet de cette requête :
select user,host,password,plugin from mysql.user;
Dernière modification par bruno (Le 22/07/2020, à 16:39)
#9 Le 22/07/2020, à 16:59
- axel584
Re : [Résolu] MariaDB sans mot de passe
Oui, je confirme que ce n'est pas normal du tout.
Je n'ai pas de compte "vide", mais j'ai un compte sans mot de passe (ce qui n'est pas génial non plus en terme de sécurité)
Dernière modification par axel584 (Le 22/07/2020, à 17:07)
Hors ligne
#10 Le 22/07/2020, à 17:32
- bruno
Re : [Résolu] MariaDB sans mot de passe
Il manque le retour de la commande demandée.
#11 Le 22/07/2020, à 17:38
- axel584
Re : [Résolu] MariaDB sans mot de passe
Oui, j'ai voulu mettre ça dans une image, mais ça n'a pas fonctionné :
https://imgur.com/a/VOvkVQw
Je crois que j'ai trouvé une piste d'où vient le problème. J'ai essayé de modifier le mot de passe qui était vide avec la commande :
SET PASSWORD FOR axel@'localhost'=PASSWORD('SECRET');
Et j'obtiens l'erreur :
#1290 - The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement
Donc je pense que quelqu'un a changé la façon dont est lancé le serveur, mais je ne sais pas comment faire pour lancer le serveur sans cette option.
J'ai essayé de relancer le serveur avec :
sudo systemctl restart mariadb
Mais ça n'a rien changé.
Merci pour votre aide
Hors ligne
#12 Le 22/07/2020, à 17:56
- axel584
Re : [Résolu] MariaDB sans mot de passe
J'ai fini par trouver : il y avait un fichier /etc/mysql/conf.d/skip-grant-tables.cnf qui contenait :
[mysqld]
skip-grant-tables
Et en retirant ce fichier et en relançant le serveur, ça refonctionne.
Un grand merci pour votre aide et votre patience :-)
Hors ligne
#13 Le 22/07/2020, à 18:33
- bruno
Re : [Résolu] MariaDB sans mot de passe
Je n'y avais pas pensé parce que cette option ne doit être utilisée que manuellement à des fins de dépannage en cas de perte du mot de passe root et encore il y a d'autres moyens bien plus simples sous Debian/Ubuntu….
Pages : 1