Comment installer et sécuriser phpMyAdmin avec Apache sur un serveur CentOS 7

Introduction

Des systèmes de gestion de bases de données relationnelles tels que MySQL et MariaDB sont nécessaires pour une partie importante des sites Web et des applications. Cependant, tous les utilisateurs ne se sentent pas à l’aise d’administrer leurs données à partir de la ligne de commande.

Pour résoudre ce problème, un projet appelé phpMyAdmin a été créé afin d’offrir une alternative sous la forme d’une interface de gestion basée sur le web. Dans ce guide, nous allons montrer comment installer et sécuriser une configuration phpMyAdmin sur un serveur CentOS 7. Nous allons construire cette configuration sur le serveur web Apache, le serveur Web le plus populaire au monde.

Prérequis

Avant de commencer, il y a quelques exigences qui doivent être réglées.

Pour vous assurer que vous disposez d’une base solide sur laquelle construire ce système, vous devez parcourir notre guide de configuration initiale du serveur pour CentOS 7. Entre autres choses, cela vous guidera dans la configuration d’un utilisateur non root avec un accès sudo pour les commandes administratives.

La deuxième condition préalable à remplir pour démarrer sur ce guide est d’installer une pile LAMP (Linux, Apache, MariaDB et PHP) sur votre serveur CentOS 7. C’est la plate-forme que nous utiliserons pour servir notre interface phpMyAdmin (MariaDB est également le logiciel de gestion de base de données que nous souhaitons gérer). Si vous n’avez pas encore d’installation de LAMP sur votre serveur, suivez notre tutoriel sur l’installation de LAMP sur CentOS 7.

Lorsque votre serveur est dans un état de fonctionnement correct après avoir suivi ces guides, vous pouvez continuer avec le reste de cette page.

Première étape – Installez phpMyAdmin

Avec notre plate-forme LAMP déjà en place, nous pouvons commencer tout de suite à installer le logiciel phpMyAdmin. Malheureusement, phpMyAdmin n’est pas disponible dans le référentiel par défaut de CentOS 7.

Pour obtenir les paquets dont nous avons besoin, nous devrons ajouter un dépôt supplémentaire à notre système. Le dépôt EPEL (Paquets supplémentaires pour Linux d’entreprise) contient de nombreux paquets supplémentaires, y compris le paquet phpMyAdmin que nous recherchons.

Le référentiel EPEL peut être mis à la disposition de votre serveur en installant un package spécial appelé epel-release. Cela reconfigurera votre liste de dépôts et vous donnera accès aux packages EPEL.

Pour installer, il suffit de taper:

sudo yum install epel-release

Maintenant que le dépôt EPEL est configuré, vous pouvez installer le package phpMyAdmin à l’aide du système de packaging yum en tapant:

sudo yum install phpmyadmin

L’installation est maintenant terminée. L’installation comprenait un fichier de configuration Apache qui a déjà été mis en place. Nous devrons modifier cela un peu pour qu’il fonctionne correctement pour notre installation.

Ouvrez le fichier dans votre éditeur de texte maintenant afin que nous puissions apporter quelques modifications:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

À l’intérieur, nous voyons des blocs de répertoire avec une logique conditionnelle pour expliquer la stratégie d’accès pour notre répertoire. Il y a deux répertoires distincts qui sont définis, et dans ceux-ci, des configurations qui seront valides pour Apache 2.2 et Apache 2.4 (que nous exécutons).

Actuellement, cette configuration est configurée pour refuser l’accès à toute connexion qui n’est pas établie à partir du serveur lui-même. Puisque nous travaillons sur notre serveur à distance, nous devons modifier certaines lignes pour spécifier l’adresse IP de votre connexion à domicile.

Modifiez les lignes indiquant Require ip 127.0.0.1 ou Allow from 127.0.0.1 pour faire référence à l’adresse IP de votre connexion domestique. Si vous avez besoin d’aide pour trouver l’adresse IP de votre connexion domestique, consultez la section suivante. Il devrait y avoir quatre emplacements dans le fichier qui doivent être modifiés:

. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .

Lorsque vous avez terminé, redémarrez le serveur web Apache pour implémenter vos modifications en tapant:

sudo systemctl restart httpd.service

Avec cela, notre installation phpMyAdmin est maintenant opérationnelle. Pour accéder à l’interface, accédez au nom de domaine ou à l’adresse IP publique de votre serveur suivi de /phpMyAdmin, dans votre navigateur Web:

http://server_domain_or_IP/phpMyAdmin

 Écran de connexion phpMyAdmin

Pour vous connecter, utilisez une paire nom d’utilisateur/mot de passe d’un utilisateur MariaDB valide. L’utilisateur root et le mot de passe administratif MariaDB sont un bon choix pour commencer. Vous pourrez alors accéder à l’interface d’administration:

 Interface d'administration phpMyAdmin

Trouvez votre adresse IP

Vous devrez connaître l’adresse IP de l’ordinateur que vous utilisez pour accéder à vos bases de données afin de compléter l’étape ci-dessus. Il s’agit d’une mesure de sécurité afin que les personnes non autorisées ne puissent pas se connecter à votre serveur.

Remarque: Ce n’est pas l’adresse IP de votre VPS, c’est l’adresse IP de votre ordinateur domestique ou professionnel.

Vous pouvez découvrir comment le grand Web voit votre adresse IP en visitant l’un de ces sites dans votre navigateur Web:

  • Quelle est Mon Adresse IP ?
  • Quelle est Mon adresse IP ?
  • Mon adresse IP

Comparez quelques sites différents et assurez-vous qu’ils vous donnent tous la même valeur. Utilisez cette valeur dans le fichier de configuration ci-dessus.

Deuxième étape – Sécurisez votre instance phpMyAdmin

L’instance phpMyAdmin installée sur notre serveur devrait être complètement utilisable à ce stade. Cependant, en installant une interface Web, nous avons exposé notre système MySQL au monde extérieur.

Même avec l’écran d’authentification inclus, c’est tout un problème. En raison de la popularité de phpMyAdmin combinée à la grande quantité de données auxquelles il donne accès, de telles installations sont des cibles courantes pour les attaquants.

Nous allons mettre en œuvre deux stratégies simples pour réduire les chances que notre installation soit ciblée et compromise. Nous allons changer l’emplacement de l’interface de /phpMyAdmin à autre chose pour contourner certaines des tentatives de force brute du bot automatisé. Nous allons également créer une passerelle d’authentification supplémentaire au niveau du serveur Web qui doit être passée avant même d’accéder à l’écran de connexion phpMyAdmin.

Modification de l’emplacement d’accès de l’Application

Pour que notre serveur Web Apache fonctionne avec phpMyAdmin, notre fichier de configuration Apache phpMyAdmin utilise un alias pour pointer vers l’emplacement du répertoire des fichiers.

Pour modifier l’URL d’accès à notre interface phpMyAdmin, il suffit de renommer l’alias. Ouvrez le fichier de configuration phpMyAdmin Apache maintenant:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

Vers le haut du fichier, vous verrez deux lignes qui ressemblent à ceci:

Alias /phpMyAdmin /usr/share/phpMyAdminAlias /phpmyadmin /usr/share/phpMyAdmin

Ces deux lignes sont nos alias, ce qui signifie que si nous accédons au nom de domaine ou à l’adresse IP de notre site, suivi de /phpMyAdmin ou /phpmyadmin, le contenu nous sera servi à /usr/share/phpMyAdmin.

Nous voulons désactiver ces alias spécifiques car ils sont fortement ciblés par les robots et les utilisateurs malveillants. Au lieu de cela, nous devrions décider de notre propre alias. Cela devrait être facile à retenir, mais pas facile à deviner. Il ne doit pas indiquer le but de l’emplacement de l’URL. Dans notre cas, nous irons avec /nothingtosee.

Pour appliquer les modifications prévues, nous devons supprimer ou commenter les lignes existantes et ajouter les nôtres:

# Alias /phpMyAdmin /usr/share/phpMyAdmin# Alias /phpmyadmin /usr/share/phpMyAdminAlias /nothingtosee /usr/share/phpMyAdmin

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

Pour implémenter les modifications, redémarrez le service Web:

sudo systemctl restart httpd.service

Maintenant, si vous allez à l’emplacement précédent de votre installation phpMyAdmin, vous obtiendrez une erreur 404:

http://server_domain_or_IP/phpMyAdmin

 Erreur phpMyAdmin 404

Cependant, votre interface phpMyAdmin sera disponible au nouvel emplacement que nous avons sélectionné:

http://server_domain_or_IP/nothingtosee

 Écran de connexion phpMyAdmin

Configuration d’une porte d’authentification de serveur Web

La prochaine fonctionnalité que nous voulions pour notre installation était une invite d’authentification qu’un utilisateur devait passer avant de voir l’écran de connexion phpMyAdmin.

Heureusement, la plupart des serveurs Web, y compris Apache, fournissent cette fonctionnalité en mode natif. Il nous suffira de modifier notre fichier de configuration Apache pour utiliser un fichier d’autorisation.

Ouvrez à nouveau le fichier de configuration Apache phpMyAdmin dans votre éditeur de texte:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

Dans le bloc de répertoire /usr/share/phpMyAdmin, mais en dehors de l’un des blocs à l’intérieur, nous devons ajouter une directive override. Cela ressemblera à ceci:

. . .<Directory /usr/share/phpMyAdmin/> AllowOverride All <IfModule mod_authz_core.c> . . .</Directory>. . .

Cela nous permettra de spécifier des détails de configuration supplémentaires dans un fichier appelé .htaccess situé dans le répertoire phpMyAdmin lui-même. Nous utiliserons ce fichier pour configurer notre authentification par mot de passe.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Redémarrez le service Web pour implémenter cette modification:

sudo systemctl restart httpd.service

Créer un.fichier htaccess

Maintenant que nous avons la directive override dans notre configuration, Apache recherchera un fichier appelé .htaccess dans le répertoire /usr/share/phpMyAdmin. S’il en trouve un, il utilisera les directives contenues dans pour compléter ses données de configuration précédentes.

Notre prochaine étape consiste à créer le fichier .htaccess dans ce répertoire. Utilisez votre éditeur de texte pour le faire maintenant:

sudo nano /usr/share/phpMyAdmin/.htaccess

Dans ce fichier, nous devons entrer les informations suivantes:

AuthType BasicAuthName "Admin Login"AuthUserFile /etc/httpd/pma_passRequire valid-user

Passons en revue ce que chacune de ces lignes signifie:

  • AuthType de Base: Cette ligne spécifie le type d’authentification que nous implémentons. Ce type implémentera l’authentification par mot de passe à l’aide d’un fichier de mot de passe.
  • AuthName : Définit le message de la boîte de dialogue d’authentification. Vous devez garder ce générique afin que les utilisateurs non autorisés n’acquièrent pas de connaissances sur ce qui est protégé.
  • AuthUserFile : Définit l’emplacement du fichier de mot de passe réel qui sera utilisé pour l’authentification. Cela devrait être en dehors des répertoires qui sont servis. Nous allons créer ce fichier dans un instant.
  • Nécessite un utilisateur valide: Cela spécifie que seuls les utilisateurs authentifiés doivent avoir accès à cette ressource. C’est ce qui empêche réellement les utilisateurs non autorisés d’entrer.

Lorsque vous avez terminé de saisir ces informations, enregistrez et fermez le fichier.

Créer le fichier de mot de passe pour l’authentification

Maintenant que nous avons spécifié l’emplacement de notre fichier de mot de passe à l’aide de la directive AuthUserFile dans notre fichier .htaccess, nous devons créer et remplir le fichier de mot de passe.

Cela peut être accompli en utilisant un utilitaire Apache appelé htpasswd. Nous appelons la commande en lui transmettant l’emplacement où nous souhaitons créer le fichier et le nom d’utilisateur pour lequel nous souhaitons entrer les détails d’authentification:

sudo htpasswd -c /etc/httpd/pma_pass username

L’indicateur -c indique que cela créera un fichier initial. L’emplacement du répertoire est le chemin et le nom de fichier qui seront utilisés pour le fichier. Le nom d’utilisateur est le premier utilisateur que nous aimerions ajouter. Vous serez invité à entrer et à confirmer un mot de passe pour l’utilisateur.

Si vous souhaitez ajouter des utilisateurs supplémentaires à authentifier, vous pouvez appeler à nouveau la même commande sans l’indicateur -c et avec un nouveau nom d’utilisateur:

sudo htpasswd /etc/httpd/pma_pass seconduser

Avec notre fichier de mot de passe créé, une passerelle d’authentification a été implémentée et nous devrions maintenant voir une invite de mot de passe la prochaine fois que nous visiterons notre site:

http://server_domain_or_IP/nothingtosee

 Page d'authentification Apache

Une fois que vous avez entré vos informations d’identification, vous serez redirigé vers la page de connexion normale de phpMyAdmin. Cette couche de protection supplémentaire aidera à garder vos journaux MySQL propres des tentatives d’authentification en plus de l’avantage de sécurité supplémentaire.

Conclusion

Vous pouvez désormais gérer vos bases de données MySQL à partir d’une interface Web raisonnablement sécurisée. Cette interface utilisateur expose la plupart des fonctionnalités disponibles à partir de l’invite de commande MySQL. Vous pouvez afficher des bases de données et des schémas, exécuter des requêtes et créer de nouveaux ensembles de données et structures.

You might also like

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.