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 :
- un seul paramétrage bloque tous les Alias
- 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
- un petit
skip-networking
dans/etc/my.cnf
ne mange pas de pain