====== phpMyAdmin ======
phpMyAdmin est une interface web permettant de manipuler vos bases de données MySQL (création, modification, suppression, etc). C'est un outil très pratique mais ça veut également dire donner un accès à vos bases de données depuis internet avec les risques qui vont avec.
Comme toute interface web, elle nécessite un serveur web pour fonctionner. Dans mon cas, j'utiliserai Apache2. Je ne traiterai pas la création et configuration du nom de domaine et partirai du principe que vous avez un nom de domaine, appelé domaine.fr ici, qui pointe vers votre serveur.
===== Installation =====
L'installation sous Debian est très simple vu que le logiciel se trouve dans les dépôts et s'installe en une commande :
sudo aptitude install phpmyadmin
Pour l'utiliser, il va falloir créer un super utilisateur. Tapez les lignes suivantes dans la console (choisissez un mot de passe robuste pour l'utilisateur) :
sudo mysql
USE mysql;
CREATE USER 'nom_utilisateur'@'localhost' IDENTIFIED BY 'motdepasse';
GRANT ALL PRIVILEGES ON *.* TO 'nom_utilisateur'@'localhost' WITH GRANT OPTION;
FLUSH privileges;
exit;
===== Sécuriser l'accès =====
Par défaut, phpMyAdmin est accessible à l'adresse https://domaine.fr/phpmyadmin avec domaine.fr le domaine pointant sur votre serveur ou son adresse IP. N'aimant pas que n'importe puisse tomber sur la page de connexion de phpMyAdmin , je préfère le rendre accessible uniquement via un nom de domaine spécifique.
On va commencer par désactiver la configuration Apache2 actuelle permettant l'accès à phpMyAdmin :
sudo a2disconf phpmyadmin
Créez un fichier de configuration pour le sous-domaine (mettre le sous-domaine de votre choix) :
sudo nano /etc/apache2/sites-available/sous.domaine.fr.conf
Copiez-y les lignes suivantes :
ServerName sous.domaine.fr
Redirect / https://sous.domaine.fr/
DocumentRoot /usr/share/phpmyadmin
ServerName sous.domaine.fr
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/phpmyadmin.access.log combined
ErrorLog ${APACHE_LOG_DIR}/phpmyadmin.error.log
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/domaine.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domaine.fr/privkey.pem
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
# limit libapache2-mod-php to files and directories necessary by pma
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
# Disallow web access to directories that don't need it
Require all denied
Require all denied
Require all denied
Vous pouvez également rajouter une double authentification en protégeant l'accès avec un identifiant/mot de passe pour plus de sécurité. Voir [[serveur_hebergement:apache2:proteger_une_page_web|ici]] comment faire.
Ensuite, on active le fichier de configuration :
sudo a2ensite sous.domaine.fr.conf
Et on recharge Apache2 :
sudo systemctl reload apache2
===== Sécurisons phpMyAdmin =====
On va sécuriser un peu plus phpMyAdmin. Ouvrez le fichier de configuration de phpMyAdmin :
sudo nano /etc/phpmyadmin/config.inc.php
Ajoutez les lignes suivantes :
$cfg['LoginCookieValidity'] = 1440;
$cfg['LoginCookieRecall'] = false;
$cfg['AllowUserDropDatabase'] = false;
$cfg['ShowServerInfo'] = false;
Petite explication de ces lignes :
* $cfg['LoginCookieValidity'] = 1440; : réduit la durée de validité de la session à 24 minutes. C'est la valeur par défaut dans PHP mais ça permet de s'assurer que la session expirera toujours après 24 minutes même si la valeur est modifiée dans la configuration de PHP
* $cfg['LoginCookieRecall'] = false; : le nom de l’utilisateur précédent n'apparait pas dans le panneau de connexion après une déconnexion automatique
* $cfg['AllowUserDropDatabase'] : interdit la suppression de bases de données depuis phpMyAdmin
* $cfg['ShowServerInfo'] = false; : masque les informations du serveur dans l'interface
Vous pouvez maintenant manipuler vos bases de données avec phpMyAdmin.