Parmi tous les utilisateurs qui ont besoin des fonctionnalités d'un système de gestion de base de données comme MySQL/MariaDB certains peuvent sentir le besoin d'interagir avec le système autrement que depuis l'invite de commande en SQL.
phpMyAdmin a justement été créé pour permettre aux utilisateurs d'interagir en SQL via une interface web. Dans ce guide, nous discuterons de la manière d'installer et de sécuriser phpMyAdmin afin que vous puissiez l'utiliser en toute sécurité pour gérer vos bases de données sur un système Ubuntu ou Debian.
Prérequis
Pour suivre ce guide, il vous faudra :
Un serveur Ubuntu. Un utilisateur de préférence non-root avec des privilèges administratifs et un pare-feu configuré. Pour configurer ceci, suivez notre guide de configuration initiale du serveur pour Ubuntu.
Une pile LAMP (Linux, Apache, MySQL et PHP) installée sur votre serveur Ubuntu. Si cela n'est pas encore fait, vous pouvez suivre ce guide sur l'installation d'une pile LAMP sur Ubuntu 22.04.
De plus, il y a des considérations de sécurité importantes lors de l'utilisation de logiciels comme phpMyAdmin, car il :
Communique directement avec votre installation MySQL
Gère l'authentification en utilisant les identifiants MySQL
Exécute et renvoie les résultats pour des requêtes SQL arbitraires
Pour ces raisons, et parce que c'est une application PHP largement déployée qui est fréquemment ciblée par des attaques, vous ne devriez jamais exécuter phpMyAdmin sur des systèmes distants via une connexion HTTP simple sans sécurité.
Si vous n'avez pas déjà un domaine configuré avec un certificat SSL/TLS, vous pouvez suivre ce guide sur la sécurisation d'Apache avec Let’s Encrypt sur Ubuntu 22.04. Cela nécessitera d'enregistrer un nom de domaine, de créer des enregistrements DNS pour votre serveur et de configurer un hôte virtuel Apache.
Étape 1 — Installation de phpMyAdmin
Vous pouvez utiliser APT (le gestionnaire de packages Linux) pour installer phpMyAdmin à partir des dépôts officiels d'Ubuntu.
En tant qu'utilisateur sudo non-root, mettez à jour l'index des paquets de votre serveur si vous ne l'avez pas fait récemment :
Ensuite, vous pouvez installer le paquet phpmyadmin. Avec ce paquet, la documentation officielle recommande également d'installer quelques extensions PHP sur votre serveur pour activer certaines fonctionnalités et améliorer les performances.
Si vous avez suivi le tutoriel de la pile LAMP en prérequis, plusieurs de ces modules auront déjà été installés avec le paquet php. Cependant, il est recommandé d'installer également ces paquets :
php-mbstring: Un module pour gérer les chaînes non-ASCII et convertir les chaînes dans différents encodages
php-zip: Cette extension prend en charge le téléchargement de fichiers .zip vers phpMyAdmin
php-gd: Active le support pour la bibliothèque graphique GD
php-json: Fournit à PHP le support pour la sérialisation JSON
php-curl: Permet à PHP d'interagir avec différents types de serveurs utilisant différents protocoles
Exécutez la commande suivante pour installer ces paquets sur votre système. Notez cependant que le processus d'installation vous demande de faire quelques choix pour configurer correctement phpMyAdmin. Nous passerons en revue ces options sous peu :
Voici les options que vous devez choisir lorsqu'elles vous sont proposées pour configurer correctement votre installation :
Pour la sélection du serveur, choisissez apache2
Sélectionnez Oui lorsqu'on vous demande si vous souhaitez utiliser dbconfig-common pour configurer la base de données.
On vous demandera ensuite de choisir et de confirmer un mot de passe d'application MySQL pour phpMyAdmin.
Le processus d'installation ajoute le fichier de configuration Apache de phpMyAdmin dans le répertoire /etc/apache2/conf-enabled/, où il est automatiquement lu. Pour terminer la configuration d'Apache et PHP pour travailler avec phpMyAdmin, la seule tâche restante dans cette section du tutoriel est d'activer explicitement l'extension PHP mbstring, ce que vous pouvez faire en tapant :
Ensuite, redémarrez Apache pour que vos modifications soient prises en compte :
phpMyAdmin est maintenant installé et configuré pour fonctionner avec Apache. Cependant, avant de pouvoir vous connecter et commencer à interagir avec vos bases de données MySQL, vous devrez vous assurer que vos utilisateurs MySQL ont les privilèges nécessaires pour interagir avec le programme.
Étape 2 — Authentification et privilèges
Lorsque vous avez installé phpMyAdmin sur votre serveur, cela a automatiquement créé un utilisateur de base de données appelé phpmyadmin qui exécute certains processus sous-jacents pour le programme. Plutôt que de vous connecter en tant que cet utilisateur avec le mot de passe administrateur que vous avez défini lors de l'installation, il est recommandé de vous connecter en tant qu'utilisateur dédié à la gestion des bases de données via l'interface phpMyAdmin.
Configuration de l'accès pour un utilisateur MySQL dédié
Alternativement, certains peuvent estimer que cela convient mieux à leur flux de travail ainsi qu'à la sécurité de se connecter à phpMyAdmin avec un utilisateur dédié.
Pour ce faire, ouvrez à nouveau le shell MySQL :
Si vous avez activé l'authentification par mot de passe pour votre utilisateur root, comme décrit dans la section précédente, vous devrez exécuter la commande suivante et entrer votre mot de passe lorsqu'il vous sera demandé pour vous connecter :
De là, créez un nouvel utilisateur et donnez-lui un mot de passe solide :
Note : Encore une fois, selon la version de PHP que vous avez installée, vous voudrez peut-être définir votre nouvel utilisateur pour s'authentifier avec mysql_native_password au lieu de caching_sha2_password.
Ensuite, accordez à votre nouvel utilisateur les privilèges appropriés. Par exemple, vous pourriez accorder à l'utilisateur des privilèges sur toutes les tables de la base de données, ainsi que le pouvoir d'ajouter, de modifier et de supprimer des privilèges utilisateur, avec cette commande :
Après cela, quittez le shell MySQL :
Vous pouvez maintenant accéder à l'interface web en visitant le nom de domaine de votre serveur ou l'adresse IP publique suivie de /phpmyadmin :
Connectez-vous à l'interface, soit en tant que root, soit avec le nouvel identifiant et mot de passe que vous venez de configurer.
Lors de la connexion, vous serez redirigé vers l'interface utilisateur de phpMyAdmin.
Étape 3 - Sécurisation de l'accès web
En raison de sa grande utilisation, phpMyAdmin est souvent ciblé par les attaquants. Il est donc primordial de renforcer sa sécurité pour éviter tout accès non autorisé. Une méthode consiste à utiliser les fonctionnalités d'authentification et d'autorisation .htaccess intégrées à Apache.
Pour cela, il est d'abord nécessaire d'activer les surcharges de fichiers .htaccess en modifiant le fichier de configuration Apache de phpMyAdmin.
Ouvrez le fichier phpmyadmin.conf situé dans votre répertoire de configuration Apache avec votre éditeur de texte préféré. Ici, nous utilisons nano :
Ajoutez la directive AllowOverride All dans la section <Directory /usr/share/phpmyadmin>, comme ci-dessous :
Enregistrez et fermez le fichier une fois la ligne ajoutée. Si vous avez utilisé nano, appuyez sur CTRL + X, puis Y et ENTRÉE.
Pour appliquer les modifications, redémarrez Apache :
Il est maintenant temps de créer un fichier .htaccess pour renforcer la sécurité.
Dans le répertoire de l'application, créez et ouvrez ce fichier avec les privilèges root :
Ajoutez-y les informations suivantes :
Ces directives signifient respectivement :
Type d'authentification à utiliser.
Message affiché dans la boîte de dialogue d'authentification.
Emplacement du fichier contenant les mots de passe.
Seuls les utilisateurs authentifiés peuvent accéder à la ressource.
Une fois terminé, enregistrez et fermez le fichier.
Créez maintenant le fichier .htpasswd en y ajoutant un utilisateur initial :
Si vous souhaitez ajouter un autre utilisateur, faites-le sans le flag -c :
Redémarrez Apache pour activer l'authentification via .htaccess :
Désormais, en accédant à votre sous-répertoire phpMyAdmin, une authentification supplémentaire vous sera demandée. La connexion se fera toujours à partir de :
Après avoir fourni l'authentification Apache, vous serez dirigé vers la page d'authentification habituelle de phpMyAdmin pour saisir vos identifiants MySQL.
Cette couche de sécurité supplémentaire est essentielle car phpMyAdmin a été exposé à des vulnérabilités par le passé.
Conclusion
Votre phpMyAdmin devrait maintenant être configuré et prêt à l'emploi sur votre serveur Ubuntu 22.04. Grâce à cette interface, vous pouvez gérer vos bases de données, utilisateurs et tables, ainsi qu'effectuer les opérations courantes.
Commentaires