Comment installer phpMyAdmin à partir de la source sur Debian 10

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

Conditions préalables

Avant de commencer avec ce guide, vous aurez besoin des éléments suivants:

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-10 [sécurisant Apache avec Let’s Encrypt sur Debian 10] pour en configurer un. Pour cela, vous devrez 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-linux- apache-mariadb-php-lamp-stack-on-debian-10 # step-4-% E2% 80% 94-créer un hôte virtuel-pour-votre-site Web [configurer un hôte virtuel Apache].

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

Étape 1 - Installer phpMyAdmin et les paquetages recommandés

Avant d’installer et de configurer phpMyAdmin, la documentation officielle https://docs.phpmyadmin.net/en/latest/require.html recommande de] installer quelques extensions PHP sur votre serveur pour activer certaines fonctionnalités et améliorer les performances.

Si vous avez suivi les prérequis LAMP stack tutorial, plusieurs des exemples suivants: ces modules auront été installés avec le paquet + php +. Cependant, il est recommandé d’installer également ces packages:

  • + php-mbstring +: une extension PHP utilisée pour gérer des chaînes non-ASCII et convertir des chaînes en différents encodages

  • + php-zip +: un module PHP qui supporte le téléchargement de fichiers '+ .zip + `vers phpMyAdmin

  • + php-gd +: un autre module PHP, celui-ci permet de prendre en charge la GD Graphics Library

Tout d’abord, mettez à jour l’index des paquets de votre serveur si vous ne l’avez pas fait récemment:

sudo apt update

Ensuite, utilisez + apt + pour extraire les fichiers et les installer sur votre système:

sudo apt install php-mbstring php-zip php-gd

Ensuite, nous pouvons installer phpMyAdmin. Au moment de la rédaction de ce document, phpMyAdmin n’est pas disponible à partir des référentiels Debian par défaut. Vous devrez donc télécharger le code source sur votre serveur à partir du site phpMyAdmin.

Pour ce faire, accédez à la page de téléchargements phpMyAdmin, faites défiler jusqu’au tableau contenant les liens de téléchargement de la dernière version stable et copiez le lien de téléchargement se terminant par `+ tar.gz + `. Ce lien pointe vers un fichier archive connu sous le nom de tarball qui, une fois extrait, créera un certain nombre de fichiers sur votre système. Au moment d’écrire ces lignes, la dernière version est la version 4.9.0.1.

Remplacez le lien dans la commande + wget + suivante par le lien de téléchargement que vous venez de copier, puis appuyez sur + ENTER +. Ceci lancera la commande et téléchargera l’archive sur votre serveur:

wget https://files.phpmyadmin.net/phpMyAdmin//phpMyAdmin--.tar.gz

Extrayez ensuite l’archive:

tar xvf phpMyAdmin--.tar.gz

Cela créera un certain nombre de nouveaux fichiers et répertoires sur votre serveur sous un répertoire parent nommé + phpMyAdmin - +.

Puis exécutez la commande suivante. Cela déplacera le répertoire + phpMyAdmin - + et tous ses sous-répertoires vers le répertoire + / usr / share / +, l’emplacement où phpMyAdmin s’attend à trouver ses fichiers de configuration par défaut. Il renommera également le répertoire en place simplement + phpmyadmin:

sudo mv phpMyAdmin--/ /usr/share/phpmyadmin

Avec cela, vous avez installé phpMyAdmin, mais vous devez effectuer plusieurs changements de configuration pour pouvoir accéder à phpMyAdmin via un navigateur Web.

Étape 2 - Configuration manuelle de phpMyAdmin

Lors de l’installation de phpMyAdmin avec un gestionnaire de paquets, comme c’est le cas dans un environnement Ubuntu, phpMyAdmin utilise par défaut le mode «Configuration zéro» qui effectue automatiquement plusieurs actions pour configurer le programme. Comme nous l’avons installé à partir des sources dans ce guide, nous devrons effectuer ces étapes manuellement.

Pour commencer, créez un nouveau répertoire où phpMyAdmin stockera ses fichiers temporaires:

sudo mkdir -p /var/lib/phpmyadmin/tmp

Définissez * www-data * - le profil utilisateur Linux que les serveurs Web tels qu’Apache utilisent par défaut pour les opérations normales sur les systèmes Ubuntu et Debian - en tant que propriétaire de ce répertoire:

sudo chown -R www-data:www-data /var/lib/phpmyadmin

Les fichiers que vous avez extraits précédemment incluent un exemple de fichier de configuration que vous pouvez utiliser comme fichier de configuration de base. Faites une copie de ce fichier en le conservant dans le répertoire + / usr / share / phpmyadmin +, puis renommez-le + + config.inc.php +:

sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Ouvrez ce fichier en utilisant votre éditeur de texte préféré. Ici, nous allons utiliser + nano +:

sudo nano /usr/share/phpmyadmin/config.inc.php

phpMyAdmin utilise la méthode d’authentification + cookie + par défaut, qui vous permet de vous connecter à phpMyAdmin comme tout utilisateur MariaDB valide à l’aide de https://en.wikipedia.org/wiki/HTTP_cookie. Dans cette méthode, le mot de passe de l’utilisateur MariaDB est stocké et crypté avec l’algorithme Advanced Encryption Standard (AES) dans un cookie temporaire.

Historiquement, phpMyAdmin a utilisé à la place le code Blowfish, et cela est toujours reflété dans son fichier de configuration. Faites défiler jusqu’à la ligne commençant par + $ cfg ['blowfish_secret'] +. Il ressemblera à ceci:

/usr/share/phpmyadmin/config.inc.php

. . .
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
. . .

Entre les guillemets simples, entrez une chaîne de 32 caractères aléatoires. Ce n’est pas une phrase secrète dont vous devez vous rappeler, elle sera simplement utilisée en interne par l’algorithme AES:

/usr/share/phpmyadmin/config.inc.php

. . .
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
. . .

Ensuite, faites défiler le commentaire «+ / *» utilisé pour manipuler avec le stockage * / + `. Cette section inclut certaines directives qui définissent un utilisateur de la base de données MariaDB nommé * pma * qui effectue certaines tâches administratives dans phpMyAdmin. Selon la documentation officielle, ce compte utilisateur spécial n’est pas nécessaire dans les cas où un seul utilisateur accédera à phpMyAdmin, mais il est recommandé dans scénarios multi-utilisateurs.

Supprimez les commentaires des directives + controluser + et + + controlpass + en supprimant les barres obliques précédentes. Puis mettez à jour la directive + controlpass + pour qu’elle pointe vers un mot de passe sécurisé de votre choix. Si vous ne le faites pas, le mot de passe par défaut restera en place et des utilisateurs inconnus pourraient facilement accéder à votre base de données via l’interface phpMyAdmin.

Après avoir apporté ces modifications, cette section du fichier ressemblera à ceci:

/usr/share/phpmyadmin/config.inc.php

. . .
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '';
. . .

Au-dessous de cette section, vous trouverez une autre section précédée d’un commentaire intitulé + / * Storage database and tables * / +. Cette section inclut un certain nombre de directives qui définissent le stockage de configuration phpMyAdmin, une base de données et plusieurs tables utilisées par le p * administratif *. * utilisateur de base de données. Ces tables permettent d’activer un certain nombre de fonctionnalités de phpMyAdmin, notamment les signets, les commentaires, la génération de PDF, etc.

Supprimez la mise en commentaire de chaque ligne de cette section en supprimant les barres obliques au début de chaque ligne pour donner l’apparence suivante:

/usr/share/phpmyadmin/config.inc.php

. . .
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
. . .

Ces tables n’existent pas encore, mais nous les créerons sous peu.

Enfin, faites défiler vers le bas du fichier et ajoutez la ligne suivante. Ceci configurera phpMyAdmin pour utiliser le répertoire + / var / lib / phpmyadmin / tmp + que vous avez créé précédemment en tant que répertoire temporaire. phpMyAdmin utilisera ce répertoire temporaire comme cache de modèles, ce qui permettra un chargement plus rapide des pages:

/usr/share/phpmyadmin/config.inc.php

. . .

Enregistrez et fermez le fichier après avoir ajouté cette ligne. Si vous avez utilisé + nano +, vous pouvez le faire en appuyant sur + CTRL + X +, + Y +, puis + ENTER +.

Ensuite, vous devrez créer la base de données de stockage et les tables phpMyAdmin. Lorsque vous avez installé phpMyAdmin à l’étape précédente, il était accompagné d’un fichier nommé + create_tables.sql +. Ce fichier SQL contient toutes les commandes nécessaires à la création de la base de données de stockage de la configuration et des tables nécessaires au bon fonctionnement de phpMyAdmin.

Exécutez la commande suivante pour utiliser le fichier + create_tables.sql afin de créer la base de données de stockage de la configuration et les tables:

sudo mariadb < /usr/share/phpmyadmin/sql/create_tables.sql

Ensuite, vous devrez créer l’utilisateur administratif * pma *. Ouvrez l’invite MariaDB:

sudo mariadb

À l’invite, exécutez la commande suivante pour créer l’utilisateur * pma * et accordez-lui les autorisations appropriées. Assurez-vous de changer ++ pour l’aligner sur le mot de passe que vous avez défini dans le fichier + config.inc.php +:

GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY '';

Si vous n’en avez pas encore créé, vous devez également créer un utilisateur MariaDB habituel dans le but de gérer les bases de données via phpMyAdmin, car il est recommandé de vous connecter en utilisant un autre compte que l’utilisateur * pma *. Vous pouvez créer un utilisateur disposant de privilèges sur toutes les tables de la base de données, ainsi que du pouvoir d’ajouter, de modifier et de supprimer des privilèges d’utilisateur, à l’aide de cette commande. Quels que soient les privilèges que vous attribuez à cet utilisateur, veillez également à lui attribuer un mot de passe fort:

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

Ensuite, quittez le shell MariaDB:

exit

phpMyAdmin est maintenant complètement installé et configuré sur votre serveur. Cependant, votre serveur Apache ne sait pas encore comment servir l’application. Pour résoudre ce problème, nous allons créer un fichier de configuration Apache.

Étape 3 - Configurer Apache pour servir phpMyAdmin

Lors de l’installation de phpMyAdmin à partir des référentiels par défaut, le processus d’installation crée automatiquement un fichier de configuration Apache et le place dans le répertoire + / etc / apache2 / conf-enabled / +. Comme nous avons installé phpMyAdmin à partir des sources, nous devrons toutefois créer et activer ce fichier manuellement.

Créez un fichier nommé + phpmyadmin.conf + dans le répertoire + / etc / apache2 / conf-available / +:

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

Ajoutez ensuite le contenu suivant au fichier

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

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

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

   <IfModule mod_php5.c>
       <IfModule mod_mime.c>
           AddType application/x-httpd-php .php
       </IfModule>
       <FilesMatch ".+\.php$">
           SetHandler application/x-httpd-php
       </FilesMatch>

       php_value include_path .
       php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
       php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
       php_admin_value mbstring.func_overload 0
   </IfModule>
   <IfModule mod_php.c>
       <IfModule mod_mime.c>
           AddType application/x-httpd-php .php
       </IfModule>
       <FilesMatch ".+\.php$">
           SetHandler application/x-httpd-php
       </FilesMatch>

       php_value include_path .
       php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
       php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
       php_admin_value mbstring.func_overload 0
   </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
   <IfModule mod_authz_core.c>
       <IfModule mod_authn_file.c>
           AuthType Basic
           AuthName "phpMyAdmin Setup"
           AuthUserFile /etc/phpmyadmin/htpasswd.setup
       </IfModule>
       Require valid-user
   </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
   Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
   Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
   Require all denied
</Directory>

C’est le fichier de configuration par défaut Apache phpMyAdmin trouvé sur les installations Ubuntu, bien qu’il convienne également pour une installation Debian.

Enregistrez et fermez le fichier, puis activez-le en tapant:

sudo a2enconf phpmyadmin.conf

Rechargez ensuite le service + apache2 + pour appliquer les modifications de configuration:

sudo systemctl reload apache2

Ensuite, vous pourrez accéder à l’écran de connexion phpMyAdmin en accédant à l’URL suivante de votre navigateur Web:

https:///phpmyadmin

L’écran de connexion suivant s’affiche:

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

Connectez-vous à l’interface avec le nom d’utilisateur et le mot de passe MariaDB que vous avez configurés. Une fois connecté, vous verrez l’interface utilisateur, qui ressemblera à ceci:

image: https: //assets.digitalocean.com/articles/phpmyadmin_deb10/phpmyadmin_ui_deb10.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 4 - 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


   <IfModule mod_php5.c>
   . . .

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 le contenu suivant:

/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 + / usr / share / phpmyadmin / .htpasswd +. Vous pouvez maintenant créer ce fichier et le transmettre à un utilisateur initial avec l’utilitaire + htpasswd +:

sudo htpasswd -c /usr/share/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_deb10/pma_deb10_apache_auth.png [mot de passe phpMyAdmin apache]

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