Release 3 OVH & Sécuriser PhpMyAdmin et MySQL

Suite à une intervention d’un prestataire, je constate qu’il a utilisé les codes root de MySql pour se connecter à une base de donnée …. Après avoir créé un user dédié, je recherche à sécuriser MySQl et PhpMyAdmin :

Changer le mot de passe root de MySql

via le binaire mysqladmin qui permet de changer tous les mots de passe des users MySql :

mysqladmin -u root -p'ancienMdp' password 'newMdp'

Mais cette solution n’est pas bonne car Webmin, livré dans le Release 3, utilise le mot de passe root pour créer les bases de donnée … (c’est pas bien … mais c’est comme ça visiblement). Il faut donc remettre le mot de passe MySql donné lors de la livraison du serveur ….

Pour rappel, le fichier qui contient les mots de passe de tous les users Mysql est dans le fichier /home/mysql/mysql/user.MYD sur la Release 3

Bloquer les accès distants à MySQL

Dans le fichier /etc/my.cnf, ajouter la directive suivante dans la section :

skip-networking #bloquer le protocole TCP/IP pour MySql

Bloquer l’accès web PhpMyAdmin via le vhost

J’ai eu beau chercher dans tous les coins du serveur via les commandes suivantes où est stocké le vhost :

cd /
grep -Ri phpmyadmin ./* # chercher dans tous les fichiers la chaine phpmyadmin quelquesoit la casse
grep -Ri /home/ovh/www/phpMyAdmin ./*

Il ressort que les vhost sont tous stockés dans /etc/httpd/vhost et que chaque domaine dispose d’un alias d’accès à phpMyAdmin. Par contre impossible de trouver le vhost pour le nom de domaine technique du serveur …

Ajouter un deuxième mot de passe à l’accès web PhpMyAdmin via .htaccess

Se place dans le dossier contenant les sources de PhpMyAdmin :

cd /home/ovh/www/phpMyAdmin

Création du fichier .htaccess

cat > .htaccess
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /home/ovh/www/phpMyAdmin/.htpasswd
Require valid-user
Ctrl+C

Création du fichier .htpasswd

htpasswd -c .htpasswd username

Conclusions :

Cette dernière solution est la meilleure car :

  1. un seul paramétrage bloque tous les Alias
  2. vu que webmin utilise le compte root avec le mot de passe MySql de livraison (qui doit dupliqué quelquepart sous forme hashée ???), l’ajout d’un mot de passe via .htaccess semble être une solution de contournement efficace sans impact
  3. un petit skip-networking dans /etc/my.cnf ne mange pas de pain

Ailleurs sur le web de bons articles sur le sujet