====== 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.