Question Est-il possible de laisser le mot de passe root MySQL vierge?


Un utilisateur root sans mot de passe constitue-t-il une faille de sécurité si mon serveur MySQL n'accepte que les connexions provenant de localhost?

Je suis conscient que la sagesse commune dit que l'utilisateur root devrait être protégé par un mot de passe, mais quelles sont les implications de le laisser vide? Les utilisateurs de Linux autres que mes propres connexions à MySQL ne m'inquiètent pas et je ne prévois pas d'autoriser l'accès réseau à la base de données.

Edit: Qu'est-ce qui différencie MySQL de SQLite, qui n'est pas protégé par mot de passe? De quel type de scénarios de déploiement parle-t-on? Si un attaquant parvient à accéder au serveur, qu'est-ce qui l'empêche de réinitialiser simplement le mot de passe?

Veuillez garder à l'esprit que je n'essaie pas de défendre quoi que ce soit ici, je veux simplement que les gens s'informent de manière éclairée sur le sujet.


5
2017-07-05 02:58


origine


Ce que vous planifiez est sans importance pour un attaquant, ils ont des plans différents - suivez les conseils de @ womble. La raison pour laquelle c'est la sagesse commune est parce que c'est une très bonne idée :-) - Rory Alsop
Bien sûr que c'est bon. Lorsque les pirates pénètrent dans votre ordinateur par un autre moyen, ils ne penseront jamais à essayer les paramètres par défaut pour accéder aux bases de données. Vous pouvez donc les conserver en toute sécurité. - John Gardeniers
@JohnGardeniers: Le problème avec le sarcasme est que les personnes qui doivent suivre le conseil le plus souvent ne le reconnaissent pas ... - womble♦


Réponses:


Oui, je considérerais cela comme une vulnérabilité de sécurité assez fondamentale. Laissez-moi illustrer cela par une histoire.

Il y a très, très longtemps, dans ma jeunesse et mes connaissances, j'ai configuré un serveur pour tester en interne divers éléments que je testais. Il était assis sur mon bureau, n’était connecté à aucun réseau (c’était il y a longtemps, avant que tout eu être sur un réseau pour pouvoir faire n'importe quoi). Quand j'étais en dehors du bureau, quelqu'un d'autre avait besoin d'une machine et prenait ma machine de test (cela ne me dérangeait pas; j'utilisais la machine parce qu'elle pouvait être utilisée à d'autres fins si nécessaire). Puisqu'il utilisait déjà le système d'exploitation requis, ils l'ont simplement connecté au réseau et installé ce dont ils avaient besoin.

Le problème était que j’avais configuré toutes sortes de comptes de test sur cette boîte, avec des mots de passe faciles à deviner (comme le très utile test). Même il y a très longtemps, les scélérats ne manquaient pas et n'auraient rien de mieux à faire que des comptes avec devinette de mot de passe. Cela ne leur a pas pris beaucoup de temps pour trouver cette machine, deviner un mot de passe et utiliser leur méthode néfaste.

La morale de l'histoire? Les exigences changent. Même si vous ne vous attendez pas à le faire maintenant, il y a une chance raisonnable que son rôle change au cours de la vie de la machine - le résultat le plus probable, je suppose, serait que d'autres utilisateurs aient accès à la machine. (soit légitimement, soit via un exploit au niveau de l'application). Les chances que vous vous souveniez de définir un mot de passe root MySQL lorsque cela est nécessaire sont ... minces, au mieux.

Ma recommandation serait de prendre les 10 secondes nécessaires pour définir un mot de passe root MySQL et le déposer dans ~root/.my.cnf. Le coût en une fois est bien inférieur au coût d'un compromis multiplié par la probabilité d'un compromis.


27
2017-07-05 03:08





Exactement. Vous ne vous souciez pas des utilisateurs de Linux autres que les vôtres qui se connectent à MySQL, et vous ne le serez jamais tant qu'ils n'auront pas tout jeté dans MySQL.

Maintenant, sérieusement, vous devriez ajouter un mot de passe. Considérez que si quelqu'un tente d'accéder à votre serveur, il devra compromettre un mot de passe utilisateur du serveur, puis le mot de passe root de MySQL. Si vous n'avez pas de mot de passe MySQL, il est plus facile de le pirater.

De plus, aucun programme n'est exempt de bugs. Pensez simplement que si un bogue dans MySQL considère chaque connexion comme "locale", vous allez avoir de gros problèmes.


1
2017-07-05 03:14