DOSSIER SPÉCIAL SERVEUR WEB PERSO
Sommaire
7/10


Un peu de sécurité
Restreindre l'accès à MySQL

On l'a vu, que ce soit votre serveur MySQL ou votre site PHPNuke, tous ont été installés avec des valeurs par défaut. Les noms d'utilisateurs et mots de passes sont donc connus de toutes les personnes qui ont déjà installé un serveur MySQL ou PHPNuke.
Vu que vous ne reculez devant rien pour sécuriser votre serveur web chéri, vous allez donc changer le nom d'utilisateur par défaut et son mot de passe sur votre serveur MySQL et vous allez aussi modifier en conséquence les fichiers de configuration de PHPNuke. Et toute cela sans douleur.
Allez sur votre page de PhpMyAdmin. Pour ce faire, cliquez-droit sur le petit logo « E » dans votre barre des tâches. Choisissez « Web local ». Dans le navigateur qui vient de s'ouvrir, cliquez sur le bouton « PhpMyAdmin ». Vous voici sur la page d'administration de votre serveur MySQL.
Tout en haut à gauche sur la page web, vous trouvez, sous « Accueil », la liste de vos bases. Cliquez sur « MySQL ». La partie droite de la page vient de se rafraîchir et vous voyez à présent la liste des tables. Chaque table est sur une ligne et différentes « actions » sont disponibles. Sur la ligne « user », cliquez sur « Afficher ».



Vous voyez alors, sur la nouvelle page, le contenu de la table « user ».


Comme vous le voyez, l'utilisateur « root », que vous utilisez pas défaut, n'a pas de mot de passe. L'utilisateur « root » apparaît d'ailleurs deux fois. En effet, sur la première ligne, il s'agit des droits de « root » lorsqu'il se connecte depuis la machine locale (localhost) sur le serveur de base de données et, pour la seconde ligne, ce sont les droits de « root » pour toutes les autres adresses, lorsque « root » se connecte depuis chez lui par exemple.
Lorsque que la colonne « User » est vide, elle est donne les valeurs par défaut pour tous les autres utilisateurs.
Les lettres Y ou N dans les colonnes suivantes donnent les droits : Yes et No. Vous voyez par exemple que, lorsqu'il est sur la machine locale, n'importe quel utilisateur peut faire ce qu'il veut (que des Y). Par contre, un utilisateur venant de l'extérieur, lui, n'a aucun droit.
Pour plus de sécurité, vous allez devoir changer les droits de l'utilisateur « root ». Pour cela, cliquez, dans la première ligne, sur « modifier »
Vous arrivez alors sur cette page :



Comme vous le voyez, il existe déjà un champ « Password » qui n'attend plus que vous pour le remplir. Mais attention, tout n'est pas si simple. Le serveur va enregistrer le mot de passe, mais pas « en clair », il va le crypter. Il faut donc indiquer au serveur que vous aller lui donner un mot de passe, pour qu'il le stocke correctement. La colonne « Fonction » est là pour ça. Cliquez sur la flèche du menu déroulant de la colonne « Fonction », dans la ligne « Password » et sélectionnez « Password ». Logique, non ? Une fois que vous avez précisé la bonne fonction, vous pouvez rentrer un mot de passe. Mettez ce que vous voulez et, comme de bien entendu, n'oubliez pas de le noter précieusement. Cliquez sur « Sauvegarder » en bas de la page pour valider votre opération.
Vous revenez alors sur la page de la table « User » de votre serveur MySQL. Comme vous pouvez le constater, la première ligne s'est complétée pour afficher le mot de passe. Vous ne pourrez pas lire votre mot de passe « en clair » car, comme vous le savez désormais, celui-ci est crypté. Vous devez donc lire quelque chose comme cela sur l'écran : « 63cc03f4770c6aaa ».
Vous avez donc spécifié un mot de passe pour l'utilisateur « root » lorsqu'il se connecte.
Il vous faut maintenant mettre à jour votre serveur pour qu'il prenne en compte les modifications. Pour cela, cliquez sur « MySQL » dans la colonne de gauche. La page de droite doit se rafraîchir. Rentrez la commande « flush privileges » dans le champ « Exécuter une ou des requêtes sur la base mysql » puis cliquez sur le bouton « Exécuter ». La page se rafraîchit. Vous venez de mettre à jour votre serveur MySQL.
Pour vérifier que tout fonctionne bien, vous pouvez lancer un nouveau navigateur et vous rendre sur http://localhost/mysql/.
Normalement, MySQL va vous refuser l'accès car vous n'avez pas spécifié de mot de passe. Pas de panique, voici comment vous devez vous y prendre.
Lancer le notepad ou tout autre éditeur de texte simple et ouvrez le fichier « config.inc.php » dans le dossier « phpmyadmin » du répertoire « EasyPhp ». Dans ce fichier, recherchez ce bloc de texte :

* Server(s) configuration
*/
// The $cfgServers array starts with $cfgServers[1]. Do not use $cfgServers[0].
// You can disable a server config entry by setting host to ''.
$cfgServers[1]['host'] = 'localhost'; // MySQL hostname
$cfgServers[1]['port'] = ''; // MySQL port - leave blank for default port
$cfgServers[1]['adv_auth'] = FALSE; // Use advanced authentication?
$cfgServers[1]['stduser'] = ''; // MySQL standard user (only needed with advanced auth)
$cfgServers[1]['stdpass'] = ''; // MySQL standard password (only needed with advanced auth)
$cfgServers[1]['user'] = 'root'; // MySQL user (only needed with basic auth)
$cfgServers[1]['password'] = ''; // MySQL password (only needed with basic auth)
$cfgServers[1]['only_db'] = ''; // If set to a db-name, only this db is accessible
$cfgServers[1]['verbose'] = ''; // Verbose name for this host - leave blank to show the hostname
$cfgServers[1]['bookmarkdb'] = ''; // Bookmark db - leave blank for no bookmark support
$cfgServers[1]['bookmarktable'] = ''; // Bookmark table - leave blank for no bookmark support


Dans ce bloc, vous allez pouvoir spécifier quel est le mot de passe requis pour l'utilisateur « root ». La ligne à modifier est la ligne en rouge. Entre les deux guillemets, vous allez entrer le mot de passe que vous avez choisi pour votre base de données. Si votre mot de passe était « toto », vous allez donc modifier la ligne ainsi :

$cfgServers[1]['password'] = 'toto'; // MySQL password (only needed with basic auth)

Après avoir fait la modification, vous pouvez sauvegarder le fichier et aller vérifier que tout fonctionne bien sur http://localhost/mysql/
Tout cela peut vous paraître un peu complexe. Au fond, la démarche est tout à fait simple. Vous disposez d'un espace de stockage : votre serveur MySQL. Vous ne voulez pas que tout le monde puisse venir y faire mumuse alors vous le protégez avec un mot de passe et, ensuite, vous montrez patte blanche en incluant le mot de passe dans un fichier de configuration.

Vous aurez à répéter cette démarche lorsque vous travaillerez en ligne, avec le serveur MySQL de votre hébergeur. Vous aurez la possibilité de créer des bases et des tables sur le serveur, mais il faudra pour cela vous authentifier. Quand vous voudrez utiliser PhpMyAdmin, une authentification par le web suffira. Mais pour des applications en PHP comme PHPNuke ou SPIP, il faudra que vous éditiez un fichier de configuration similaire à celui de MySQL pour que le serveur sache que le programme est autorisé à l'utiliser.
C'est d'ailleurs ce que nous allons faire pour PHPNuke qui, étant donné le changement de mot de passe, ne doit plus fonctionner du tout. Vous pouvez vérifier en allant à cette adresse : http://localhost/phpnuke.

Configurer un accès à MySQL