Jump to content

Configurer / Sécuriser les utilisateurs MySQL


Calypso

Recommended Posts

 

Niveau requis  Débutant

Temps estimé : 5 minutes

 

 

 

Bonjour à vous,

 

Vous avez installé des Files mais vous êtes perdu au niveau de la gestion de MySQL ? Alors ce tutoriel est fait pour vous !

 

Pré-requis:

  • Il vous faut seulement une machine (un dédié ou une machine virtuelle par exemple) sous FreeBSD, Débian avec MySQL d'installé. Généralement, il est déjà installé.

 

I. MySQL, j'y comprends vraiment rien ...

 

 

Pour faire simple, MySQL est un système de gestion de base de données.

 

Il permet principalement de stocker des données sur un serveur (MySQL Server).

 

Dans le cadre de Metin2, le jeu y stocke toutes sortes d'informations comme la liste des GMs, la liste des comptes, les items, les joueurs, etc...

 

Information. Il existe de nombreux systèmes de gestion de bases de données. MySQL étant le plus utilisé. On peut communiquer avec notre base de données MySQL en utilisant le langage SQL.S

 

Pour accéder à la base de données MySQL (c'est-à-dire à votre serveur MySQL), un système d'authentification par utilisateur a été mis en place. Cela permet de gérer les accès et les permissions à celui-ci.

 

L'avantage ici, est que l'on peut créer un un utilisateur accessible uniquement en localhost (donc uniquement sur la machine où le serveur MySQL se trouve). Cela a un énorme avantage en sécurité et en rapidité (la connexion est moins longue). Pour un serveur Metin2, on crée généralement un utilisateur MySQL propre au serveur.

 

On peut ensuite créer un utilisateur propre à une personne X (avec des permissions restreintes) et un autre pour une personne Y.

 

 

II. Créer un utilisateur MySQL

Révélation

1. Nous allons créer un utilisateur MySQL accessible seulement en localhost pour notre serveur.

 

2. Sur PuTTY (ou sur votre machine virtuelle), exécutez la commande suivante:

mysql -u root -p

On va vous demander un mot de passe, ne mettez rien et appuyez directement sur Entrée.

 

102308Capture.PNG

 

Attention ! On se connecte ici à l'utilisateur root accessible seulement en localhost. Lors de l'installation de MySQL, un mot de passe a peut être été défini pour ce utilisateur. Il faut donc mettre celui-ci dans Enter password.

 

3. Une fois dans cette console, on peut créer l'utilisateur MySQL avec cette commande:

 

GRANT ALL PRIVILEGES ON *.* TO 'NOM_DE_LUTILISATEUR_ICI'@'localhost' IDENTIFIED BY 'LE_MOT_DE_PASSE_QUE_VOUS_VOULEZ_ICI';

 

Vous pouvez choisir le nom d'utilisateur et le mot de passe que vous souhaitez. Il faudra utiliser ces identifiants dans les fichiers CONFIG de votre serveur.

 

On retrouve bien le localhost qui indique que seulement les connexions venant de la machine sont acceptées.

 

GRANT ALL PRIVILEGES ON *.* permet de donner tous les privilèges sur toutes les base de données

 

Avertissement ! Dans ce tutoriel, pour vous faire comprendre le principe, on donne tous les privilèges à l'utilisateur. Cependant, par sécurité, il est plus raisonnable de restreindre ces privilèges.

 

5. On peut ensuite reprendre cette commande pour créer un utilisateur MySQL propre à nous, pour pouvoir s'y connecter via Navicat par exemple:

 

GRANT ALL PRIVILEGES ON *.* TO 'VOTRE_NOM_DUTILISATEUR_ICI'@'%' IDENTIFIED BY 'UN_MOT_DE_PASSE_ICI';

 

On remarquera qu'à la place de localhost, j'ai mis %. Cela veut dire que n'importe quel host peut se connecter à la base de données. Ceci inclut n'importe quelle IP, par exemple l'IP de votre routeur internet, ou même depuis un site internet distant.

 

6 .  Vos utilisateurs sont créés, il ne vous manque plus qu'à rafraîchir les privilèges avec la commande:

 

flush privileges;

 

7. Faites ensuite la commande quit pour fermer la console MySQL.

 

Attention ! Si lorsque vous essayez de vous connecter à Navicat, vous tombez sur cette erreur:

103631Capture.PNG

C'est parce que MySQL bloque par défaut (question de sécurité) les connexions extérieures au serveur. 

 

8. Si vous n'avez pas cette erreur, vous avez terminé le tutoriel.

 

Pour les autres, il vous modifier la configuration de MySQL. Éditez le fichier /usr/etc/local/mysql/my.cnf ( FreeBSD ) puis mettez un # devant la ligne bind-address pour mettre en commentaire la ligne

C'est cette ligne qui indique à votre serveur MySQL d'accepter seulement les connexions locales.

 

090449Capture.PNG

 

Sauvegardez le fichier. Redémarrez le serveur MySQL avec la commande service mysql-server restart (sur PuTTY ou votre machine virtuelle).

 

Succès ! Vous savez maintenant configurer un utilisateur MySQL pour votre serveur ! 

 

 

III. Sécuriser MySQL

Révélation

Il existe plusieurs astuces pour sécuriser son serveur MySQL, les voici.

 

A. Les utilisateurs local

Révélation

 

Plus vous créé d'utilisateurs MySQL accessibles depuis l'extérieur, plus votre serveur MySQL est vulnérable.

 

C'est pour cela que votre serveur Metin2 (dans les configs), se connectent à MySQL en localhost.

 

Prenons exemple sur la ligne qui permet de créer un user :


GRANT ALL PRIVILEGES ON *.* TO 'NOM_DE_LUTILISATEUR_ICI'@'localhost' IDENTIFIED BY 'LE_MOT_DE_PASSE_QUE_VOUS_VOULEZ_ICI';

 

On voit qu'après le @, il est indiqué localhost. Cela indique que l'on peut se connecter à l'utilisateur seulement en local. Si je remplace localhost par %, l'utilisateur est accessible même depuis l'extérieur et pour tout le monde.

 

Prenez souvent cette habitude de créer des utilisateurs accessible seulement en local pour vos services tel que votre site web, serveur metin2, etc ... Vous aurez moins de soucis.

 

Information. Habitué par utiliser seulement MySQL en ligne de commande ? Alors ne créé aucun utilisateur accessible depuis l'extérieur et fait toutes les interactions avec MySQL en local.

 

 

B. Restriction IP

Révélation

Pour plus de sécurité, vous pouvez faire en sorte que l'on puise se connecter à l'utilisateur depuis une seule IP.

 

Prenons exemple avec la ligne qui permet de créer un user :


GRANT ALL PRIVILEGES ON *.* TO 'NOM_DE_LUTILISATEUR_ICI'@'localhost' IDENTIFIED BY 'LE_MOT_DE_PASSE_QUE_VOUS_VOULEZ_ICI';

 

On voit qu'après le @, il est indiqué localhost. Cela indique que l'on peut se connecter à l'utilisateur seulement en local. Si je remplace localhost par %, l'utilisateur est accessible même depuis l'extérieur et pour tout le monde.

 

Mais si par exemple, je remplace localhost par mon IP, et bien je pourrai connecter avec cet utilisateur seulement avec mon IP.

Cela permet de limiter les risques.

 

Astuce ! Vous pouvez obtenir votre IP depuis un site comme mon-ip.net.
Attention ! Il va s'en dire que le mot de passe doit lui aussi être costaud. Evitez les mots de passes du genre : alexandre728. Privilégiez une suite de lettres minuscules / majuscules, des chiffres et des caractères spéciaux.

 

 

 

Pour continuer:

  • Vous trouverez de nombreux partages et tutoriels sur Funky-Emu dans les sections Tutoriels et partages.
  • Une catégorie support est disponible. Si vous avez un problème ou une question, n'hésitez pas à poster une demande !

 

  • Like 12
Link to post
  • 3 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.