Changer le nom de l’utilisateur root MySQL

I. Présentation

Par défaut, MySQL créé, lors de son installation, un super-utilisateur nommé "root". Cet utilisateur a tous les droits sur toutes les bases de données du serveur. Si un utilisateur doit être ciblé lors d'une attaque sur un service MySQL, c'est bien celui-ci. En effet, si on arrive à avoir les identifiants de cet utilisateur (login et mot de passe), on aura un accès total à toutes les bases de données. Dés le départ, un attaquant peut démarrer une attaque avec 50% des informations requises : le nom de l'utilisateur ("root").

Pour rendre plus difficile et plus lente la tâche d'un attaquant, nous allons modifier le nom de cet utilisateur pour que l'utilisateur "root" n'existe plus. Ainsi, en plus de devoir trouver un mot de passe, l'attaquant devra commencer par trouver l'identifiant du super-utilisateur de notre service MySQL.

II. Voir les utilisateurs existants

Nous allons commencer par vérifier quel utilisateur est présent sur notre service MySQL. On se connecte pour cela en "root" (en ligne de commande dans notre cas), puis nous allons exécuter la commande suivante :

select user,host from mysql.user;

MySQLChangeRoot01

On voit donc ici que l'utilisateur "root" est présent trois fois. Cela est du au fait qu'il est enregistré pour se connecter depuis plusieurs hôtes différents : "127.0.0.1", "localhost" et "linux1". Il s'agit ici de la même machine mais c'est comme ça que les utilisateurs "root" sont créés par défaut dans MySQL. Nous allons donc utiliser une commande pour simplement modifier le nom de ces trois utilisateurs.

III. Changer le nom de l'utilisateur root

Nous allons utiliser la commande "RENAME" pour renommer ces utilisateurs, nous supposons par exemple ici que le nouvel utilisateur sera "secureroot";

RENAME USER "root"@"localhost" TO "secureroot"@"localhost";
RENAME USER "root"@"127.0.0.1" TO "secureroot"@"127.0.0.1"; 
RENAME USER "root"@"linux1" TO "secureroot"@"linux1";

Note: Ici "linux1" est le nom de mon serveur, il sera spécifique à chacun des serveurs sur lequel pour travaillerez.

Nous pourrons alors effectuer une connexion en tant que "root":

mysql -u root -p

MySQLChangeRoot02

L'utilisateur root n'existe donc plus du tout et nous ne pourrons plus nous connecter sur notre serveur avec cet utilisateur. L'attaquant devra donc, avant de tenter une attaque, trouver le nouveau nom de notre super-utilisateur.

Maintenant si nous nous connectons en tant que "secureroot", nous pourrons nous connecter :

mysql -u secureroot -p

On vérifiera alors à nouveau notre table d'utilisateur :

MySQLChangeRoot03

Nous voyons donc bien que l'utilisateur "root" n'existe plus.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 526.Voir tous les posts

One thought on “Changer le nom de l’utilisateur root MySQL

  • Quand je me suis connecté avec le nouveau ‘user’, ça m’a demandé le mot de passe et j’ai entré l’ancien mot de passe et ça a refusé. Comment vais-je faire pour me connecter alors?

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.