Installer et sécuriser phpMyAdmin sur CentOS 8

phpMyAdmin est un outil gratuit et open-source pour gérer les serveurs MySQL et MariaDB via une interface Web. Avec phpMyAdmin, tu peux créer et gérer des bases de données et des utilisateurs, exécuter des déclarations SQL, importer et exporter des données, et effectuer des activités liées aux bases de données telles que la création, la suppression, les tables, les colonnes, les index, les permissions et bien d’autres choses encore. phpMyAdmin est l’un des outils d’administration les plus populaires et les plus utilisés, notamment pour les services d’hébergement Web.

Caractéristiques

  • Fournit une interface web simple et conviviale.
  • Importe des données depuis CSV et SQL.
  • Prend en charge la plupart des fonctionnalités de MySQL, notamment la création, la copie, le dépôt, le renommage, la suppression et la modification des bases de données, des tables, des champs et des index.
  • Permet d’exporter des données vers différents formats tels que PDF, CSV, SQL, XML et bien d’autres.
  • Gère plusieurs serveurs.
  • Créer des requêtes complexes à l’aide de Query-by-example (QBE).

Dans ce tutoriel, nous allons te montrer comment installer et sécuriser phpMyAdmin sur un serveur CentOS 8.

Exigences

  • Un serveur exécutant CentOS 8.
  • Un mot de passe root est configuré sur le serveur.

Installer le serveur LAMP

Tout d’abord, tu dois installer Apache, MariaDB, PHP et d’autres bibliothèques PHP sur ton serveur. Tu peux tous les installer avec la commande suivante :

dnf install httpd mariadb-server php php-pdo php-pecl-zip php-json php-common php-fpm php-mbstring php-cli php-mysqlnd php-json php-mbstring wget unzip

Une fois que tous les paquets sont installés, démarre le service Apache et MariaDB et active leur démarrage après le redémarrage du système avec la commande suivante :

systemctl start httpd
systemctl start mariadb
systemctl enable httpd
systemctl enable mariadb

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer MariaDB

Par défaut, MariaDB n’est pas sécurisée. Tu devras donc d’abord la sécuriser. Tu peux le faire en exécutant le script mysql_secure_installation :

mysql_secure_installation

Réponds à toutes les questions comme indiqué ci-dessous :

Set root password? [Y/n] Y
New password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Une fois que tu as terminé, tu devrais voir la sortie suivante :

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

À ce stade, ton installation MariaDB est sécurisée.

Installer phpMyAdmin

Par défaut, phpMyAdmin n’est pas disponible dans le référentiel par défaut de CentOS 8. Tu devras donc télécharger la dernière version de phpMyAdmin depuis leur site officiel. Tu peux le télécharger à l’aide de la commande suivante :

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip

Une fois téléchargé, décompresse le fichier téléchargé avec la commande suivante :

unzip phpMyAdmin-4.9.2-all-languages.zip

Ensuite, déplace le contenu extrait dans le répertoire /usr/share comme indiqué ci-dessous :

mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin

Ensuite, change le répertoire en /usr/share/phpmyadmin et renomme le fichier config.sample.inc.php :

cd /usr/share/phpmyadmin
mv config.sample.inc.php config.inc.php

Ensuite, ouvre le fichier avec ton éditeur de texte préféré comme indiqué ci-dessous :

nano config.inc.php

Change la ligne suivante :

$cfg['blowfish_secret'] = 'your-secret-password';

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, importe le fichier create_tables.sql avec la commande suivante :

mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p

Indique ton mot de passe root lorsque tu es invité à importer la table.

Ensuite, crée un répertoire tmp pour phpmyadmin et donne les autorisations appropriées :

mkdir /usr/share/phpmyadmin/tmp
chown -R apache:apache /usr/share/phpmyadmin
chmod 777 /usr/share/phpmyadmin/tmp

Configurer Apache pour phpMyAdmin

Ensuite, tu devras créer un fichier de configuration d’hôte virtuel Apache pour phpMyAdmin. Tu peux le créer avec la commande suivante :

nano /etc/httpd/conf.d/phpmyadmin.conf

Ajoute les lignes suivantes :

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny> 
      Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpmyadmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

Enregistre et ferme le fichier lorsque tu as terminé. Ensuite, redémarre le service Apache avec la commande suivante :

systemctl restart httpd

Tu peux vérifier l’état d’Apache avec la commande suivante :

systemctl status httpd

Tu devrais voir la sortie suivante :

? httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           ??php-fpm.conf
   Active: active (running) since Wed 2019-12-18 01:07:52 EST; 6s ago
     Docs: man:httpd.service(8)
 Main PID: 5636 (httpd)
   Status: "Started, listening on: port 80"
    Tasks: 213 (limit: 25044)
   Memory: 28.7M
   CGroup: /system.slice/httpd.service
           ??5636 /usr/sbin/httpd -DFOREGROUND
           ??5639 /usr/sbin/httpd -DFOREGROUND
           ??5640 /usr/sbin/httpd -DFOREGROUND
           ??5641 /usr/sbin/httpd -DFOREGROUND
           ??5642 /usr/sbin/httpd -DFOREGROUND

Dec 18 01:07:52 centos8 systemd[1]: Stopped The Apache HTTP Server.
Dec 18 01:07:52 centos8 systemd[1]: Starting The Apache HTTP Server...
Dec 18 01:07:52 centos8 httpd[5636]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::200:d0>
Dec 18 01:07:52 centos8 httpd[5636]: Server configured, listening on: port 80
Dec 18 01:07:52 centos8 systemd[1]: Started The Apache HTTP Server.

Configurer SELinux et le pare-feu

Par défaut, SELinux est activé dans CentOS 8. Tu devras donc configurer SELinux pour que phpMyAdmin fonctionne correctement.

Tout d’abord, installe le paquet policycoreutils-python-utils pour gérer un environnement SELinux avec la commande suivante :

dnf install policycoreutils-python-utils

Ensuite, active l’accès au répertoire /usr/share/phpmyadmin avec la commande suivante :

semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/phpmyadmin/'
semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?"

Récupère maintenant tous les fichiers de ton répertoire phpmyadmin en exécutant la commande suivante :

restorecon -Rv '/usr/share/phpmyadmin/'

Ensuite, tu devras créer une règle de pare-feu pour autoriser le service HTTP depuis les réseaux externes. Tu peux l’autoriser avec la commande suivante :

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

phpMyAdmin est maintenant installé et configuré. Il est maintenant temps de vérifier s’il fonctionne ou non.

Ouvre ton navigateur Web et tape l’URL http://your-server-ip/phpmyadmin. Tu seras redirigé vers la page suivante :

Connexion à PHPMyAdmin

Sécuriser phpMyAdmin

À ce stade, l’instance de phpMyAdmin fonctionne correctement. Cependant, sécuriser ton instance phpMyAdmin du monde extérieur est une tâche importante pour toi. Dans cette section, nous allons te montrer comment sécuriser ton instance phpMyAdmin.

Autoriser phpMyAdmin depuis une IP spécifique

Tout d’abord, tu dois configurer ton phpMyAdmin pour qu’il soit accessible uniquement depuis l’adresse IP de ta connexion domestique.

Tu peux le configurer en modifiant le fichier /etc/httpd/conf.d/phpmyadmin.conf :

nano /etc/httpd/conf.d/phpmyadmin.conf

Trouve les lignes suivantes :

     <RequireAny>
       Require all granted
     </RequireAny>

Et, remplace-les par les lignes suivantes :

<RequireAny>
    Require ip your-home--connection-ip-address
    Require ip ::1
</RequireAny>

Sauvegarde et ferme le fichier lorsque tu as terminé.

Configurer une couche d’authentification supplémentaire

C’est une bonne idée de protéger ton répertoire phpmyadmin par un mot de passe en configurant une authentification de base.

Pour ce faire, crée un nouveau fichier d’authentification à l’aide de l’outil htpasswd comme indiqué ci-dessous :

mkdir /etc/phpmyadmin
htpasswd -c /etc/phpmyadmin/.htpasswd admin

Il te sera demandé de fournir ton mot de passe d’administrateur comme indiqué ci-dessous :

New password: 
Re-type new password: 
Adding password for user admin

Ensuite, tu devras configurer Apache pour qu’il utilise le fichier .htpasswd. Tu peux le faire en modifiant le fichier /etc/httpd/conf.d/phpmyadmin.conf.

nano /etc/httpd/conf.d/phpmyadmin.conf

Ajoute les lignes suivantes sous la ligne « AddDefaultCharset UTF-8 » :

    Options  +FollowSymLinks +Multiviews +Indexes
    AllowOverride None
    AuthType basic
    AuthName "Authentication Required"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user

Sauvegarde le fichier et redémarre le service Apache pour que les modifications prennent effet :

systemctl restart httpd

Accède à phpMyAdmin

Maintenant, ton instance de phpMyAdmin est sécurisée par une couche supplémentaire de sécurité. Ouvre ton navigateur Web et tape l’URL http://your-server-ip/phpmyadmin. Il te sera demandé de saisir les informations de connexion de l’utilisateur que tu as précédemment créé, comme indiqué ci-dessous :

Sécurisé phpMyAdmin

Indique ton nom d’utilisateur et ton mot de passe admin, puis clique sur le bouton OK. Tu seras redirigé vers la page de connexion de phpMyAdmin :

Connecte-toi comme utilisateur root à phpMyAdmin

Maintenant, donne tes identifiants de connexion de l’utilisateur administratif de MySQL et clique sur le bouton Go. Tu devrais voir la page suivante :

Tableau de bord de la base de données phpMyAdmin

Conclusion

Félicitations ! Tu as réussi à installer et à sécuriser phpMyAdmin sur le serveur CentOS 8. Tu peux maintenant créer des bases de données, des utilisateurs, des tables et les gérer à partir de l’interface Web. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...