Comment installer et sécuriser phpMyAdmin sur Debian 9

introduction

Alors que de nombreux utilisateurs ont besoin des fonctionnalités d’un système de gestion de base de données tel que MariaDB, ils peuvent ne pas se sentir à l’aise d’interagir avec le système uniquement à partir de l’invite de MariaDB.

phpMyAdmin a été créé pour permettre aux utilisateurs d’interagir avec MariaDB via une interface Web. Dans ce guide, nous expliquerons comment installer et 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 Debian 9.

Conditions préalables

Avant de commencer à utiliser ce guide, vous devez suivre certaines étapes élémentaires.

Premièrement, supposons que votre serveur ait un utilisateur non * root * avec les privilèges + sudo +, ainsi qu’un pare-feu configuré avec + ufw +, comme décrit dans https://www.digitalocean.com/ community / tutorials / initial-server-setup-with-debian-9 [guide d’installation initiale du serveur pour Debian 9].

Nous allons également supposer que vous avez terminé l’installation de LAMP (Linux, Apache, MariaDB et PHP) sur votre serveur Debian 9. Si vous ne l’avez pas encore fait, suivez notre guide sur installing a LAMP empiler sur Debian 9 pour l’installer.

Enfin, il existe des considérations de sécurité importantes lors de l’utilisation de logiciels tels que phpMyAdmin, dans la mesure où:

  • Communique directement avec votre installation MariaDB

  • Gère l’authentification à l’aide des informations d’identification MariaDB

  • Exécute et renvoie les résultats pour des requêtes SQL arbitraires

Pour ces raisons, et parce qu’il s’agit d’une application PHP largement déployée et fréquemment attaquée, vous ne devez jamais exécuter phpMyAdmin sur des systèmes distants via une simple connexion HTTP. Si vous n’avez pas de domaine existant configuré avec un certificat SSL / TLS, vous pouvez suivre ce guide à l’adresse https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s- encrypt-on-debian-9 [sécurisant Apache avec Let’s Encrypt sur Debian 9]. Pour cela, vous devez enregistrer un nom de domaine, https: // www. .digitalocean.com / community / tutorials / an-introduction-to-digitalocean-dns [créer des enregistrements DNS pour votre serveur], et https://www.digitalocean.com/community/tutorials/how-to-install-the- apache-web-server-on-debian-9 # step-5-% E2% 80% 94-setup-up-virtual-hosts- (recommandé) [configurez un hôte virtuel Apache].

Une fois ces étapes terminées, vous êtes prêt à utiliser ce guide.

Étape 1 - Installer phpMyAdmin

Pour commencer, nous allons installer phpMyAdmin à partir des référentiels Debian par défaut.

Pour ce faire, mettez à jour l’index de paquet de votre serveur, puis utilisez le système de conditionnement + apt + pour extraire les fichiers et les installer sur votre système:

sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext

Cela vous posera quelques questions afin de configurer votre installation correctement.

  • Pour la sélection du serveur, choisissez + apache2 +

  • Sélectionnez + Oui + lorsqu’on lui demande s’il faut 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 phpMyAdmin Apache dans le répertoire + / etc / apache2 / conf-enabled / +, où il est lu automatiquement. La seule chose à faire est d’activer explicitement l’extension PHP + mbstring + qui permet de gérer les chaînes non-ASCII et de convertir les chaînes en différents encodages. Faites ceci en tapant:

sudo phpenmod mbstring

Ensuite, redémarrez Apache pour que vos modifications soient reconnues:

sudo systemctl restart apache2

phpMyAdmin est maintenant installé et configuré. Cependant, avant de pouvoir vous connecter et commencer à gérer vos bases de données MariaDB, vous devez vous assurer que vos utilisateurs MariaDB disposent des privilèges requis pour interagir avec le programme.

Étape 2 - Réglage de l’authentification et des privilèges de l’utilisateur

Lorsque vous avez installé phpMyAdmin sur votre serveur, il a automatiquement créé un utilisateur de base de données appelé + phpmyadmin + qui effectue certains processus sous-jacents pour le programme. Plutôt que de vous connecter sous cet utilisateur avec le mot de passe administratif que vous avez défini lors de l’installation, il est recommandé de vous connecter avec un autre compte.

Dans les nouvelles installations sur les systèmes Debian, l’utilisateur * root * MariaDB est configuré pour s’authentifier à l’aide du plugin + unix_socket + par défaut plutôt qu’avec un mot de passe. Cela permet une sécurité et une convivialité accrues dans de nombreux cas, mais peut également compliquer les choses lorsque vous devez autoriser un utilisateur externe à bénéficier de droits d’administration sur un programme (par exemple, phpMyAdmin). Étant donné que le serveur utilise le compte * root * pour des tâches telles que la rotation des journaux et le démarrage et l’arrêt du serveur, il est préférable de ne pas modifier les détails d’authentification du compte * root *. Etant donné que phpMyAdmin nécessite que les utilisateurs s’authentifient avec un mot de passe, vous devrez créer un nouveau compte MariaDB pour pouvoir accéder à l’interface.

Si vous avez suivi le didacticiel préalable sur https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mariadb-php-lp-lack-stack-debian9#step-2-%E2%80% 94-installation-mariadb [installation d’une pile LAMP] et créé un compte utilisateur MariaDB comme décrit à l’étape 2, vous pouvez simplement vous connecter à phpMyAdmin sous ce compte en utilisant le mot de passe que vous avez créé lors de sa configuration en visitant ce lien:

https:///phpmyadmin

Si vous n’avez pas créé d’utilisateur MariaDB, ou si vous souhaitez créer un autre utilisateur uniquement pour gérer des bases de données via phpMyAdmin, continuez avec cette section pour savoir comment en créer un.

Commencez par ouvrir le shell MariaDB:

sudo mariadb

À partir de là, créez un nouvel utilisateur et attribuez-lui un mot de passe fort:

CREATE USER ''@'localhost' IDENTIFIED BY '';

Ensuite, accordez à votre nouvel utilisateur les privilèges appropriés. Par exemple, vous pouvez accorder des privilèges utilisateur à toutes les tables de la base de données, ainsi que le pouvoir d’ajouter, de modifier et de supprimer des privilèges utilisateur, à l’aide de la commande suivante:

GRANT ALL PRIVILEGES ON *.* TO ''@'localhost' WITH GRANT OPTION;

Ensuite, quittez le shell MariaDB:

exit

Vous pouvez maintenant accéder à l’interface Web en visitant le nom de domaine ou l’adresse IP publique de votre serveur, suivi de + / phpmyadmin +:

https:///phpmyadmin

image: https: //assets.digitalocean.com/articles/phpmyadmin_1804/phpmyadmin_sammy_login_small.png [Écran de connexion phpMyAdmin]

Connectez-vous à l’interface avec le nom d’utilisateur et le mot de passe que vous avez configurés.

Lorsque vous vous connectez, vous verrez l’interface utilisateur, qui ressemblera à ceci:

image: https: //assets.digitalocean.com/articles/phpmyadmin_deb9/deb9_phpmyadmin_ui.png [interface utilisateur phpMyAdmin]

Maintenant que vous pouvez vous connecter et interagir avec phpMyAdmin, il ne reste plus qu’à renforcer la sécurité de votre système pour le protéger des attaques.

Étape 3 - Sécuriser votre instance phpMyAdmin

En raison de son omniprésence, phpMyAdmin est une cible populaire pour les attaquants, et vous devez également prendre des précautions supplémentaires pour empêcher les accès non autorisés. L’un des moyens les plus simples consiste à placer une passerelle devant toute l’application en utilisant les fonctionnalités d’authentification et d’authentification intégrées + .htaccess + d’Apache.

Pour ce faire, vous devez d’abord activer l’utilisation des substitutions de fichiers + .htaccess + en modifiant votre fichier de configuration Apache.

Editez le fichier lié qui a été placé dans votre répertoire de configuration Apache:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Ajoutez une directive + AllowOverride All + dans la section + <Directory / usr / share / phpmyadmin> + du fichier de configuration, comme suit:

/etc/apache2/conf-available/phpmyadmin.conf

<Directory /usr/share/phpmyadmin>
   Options FollowSymLinks
   DirectoryIndex index.php

   . . .

Lorsque vous avez ajouté cette ligne, enregistrez et fermez le fichier.

Pour implémenter les modifications que vous avez apportées, redémarrez Apache:

sudo systemctl restart apache2

Maintenant que vous avez activé l’utilisation + .htaccess + pour votre application, vous devez en créer un pour réellement mettre en œuvre une sécurité.

Pour que cela réussisse, le fichier doit être créé dans le répertoire de l’application. Vous pouvez créer le fichier nécessaire et l’ouvrir dans votre éditeur de texte avec les privilèges root en tapant:

sudo nano /usr/share/phpmyadmin/.htaccess

Dans ce fichier, entrez les informations suivantes:

/usr/share/phpmyadmin/.htaccess

Voici ce que chacune de ces lignes signifie:

  • + AuthType Basic +: Cette ligne spécifie le type d’authentification que vous implémentez. Ce type implémentera l’authentification par mot de passe à l’aide d’un fichier de mot de passe.

  • + AuthName +: Ceci définit le message pour la boîte de dialogue d’authentification. Vous devez conserver ce générique afin que les utilisateurs non autorisés ne reçoivent aucune information sur ce qui est protégé.

  • + AuthUserFile +: Ceci définit l’emplacement du fichier de mot de passe qui sera utilisé pour l’authentification. Cela devrait être en dehors des répertoires qui sont servis. Nous allons créer ce fichier sous peu.

  • + Require valid-user +: Ceci spécifie que seuls les utilisateurs authentifiés doivent avoir accès à cette ressource. C’est ce qui empêche les utilisateurs non autorisés d’entrer.

Lorsque vous avez terminé, enregistrez et fermez le fichier.

L’emplacement que vous avez sélectionné pour votre fichier de mots de passe était + / etc / phpmyadmin / .htpasswd +. Vous pouvez maintenant créer ce fichier et le transmettre à un utilisateur initial avec l’utilitaire + htpasswd +:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd

Vous serez invité à sélectionner et à confirmer un mot de passe pour l’utilisateur que vous créez. Ensuite, le fichier est créé avec le mot de passe haché que vous avez entré.

Si vous voulez entrer un utilisateur supplémentaire, vous devez le faire * sans * le drapeau + -c +, comme ceci:

sudo htpasswd /etc/phpmyadmin/.htpasswd

Maintenant, lorsque vous accédez à votre sous-répertoire phpMyAdmin, il vous sera demandé le nom de compte et le mot de passe supplémentaires que vous venez de configurer:

https:///phpmyadmin

image: https: //assets.digitalocean.com/articles/phpmyadmin_1404/apache_auth.png [mot de passe apache phpMyAdmin]

Après avoir entré l’authentification Apache, vous serez redirigé vers la page d’authentification phpMyAdmin habituelle pour saisir vos informations d’identification MariaDB. Cette configuration ajoute une couche de sécurité supplémentaire, ce qui est souhaitable car phpMyAdmin a déjà été vulnérable à des vulnérabilités.

Conclusion

Vous devriez maintenant avoir configuré et prêt à utiliser phpMyAdmin sur votre serveur Debian 9. En utilisant cette interface, vous pouvez facilement créer des bases de données, des utilisateurs, des tables, etc., et effectuer les opérations habituelles telles que la suppression et la modification de structures et de données.