GNU/Linux >> Tutoriels Linux >  >> Cent OS

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, vous pouvez créer et gérer des bases de données et des utilisateurs, exécuter des instructions SQL, importer et exporter des données et effectuer des activités de base de données telles que la création, la suppression de tables, de colonnes, d'index, d'autorisations et bien d'autres. phpMyAdmin est l'un des outils d'administration les plus populaires et les plus utilisés, en particulier pour les services d'hébergement Web.

Fonctionnalités

  • Fournit une interface Web simple et conviviale.
  • Importer des données depuis CSV et SQL.
  • Prend en charge la plupart des fonctionnalités de MySQL, notamment créer, copier, supprimer, renommer, supprimer et modifier des bases de données, des tables, des champs et des index.
  • Vous permet d'exporter des données vers différents formats tels que PDF, CSV, SQL, XML et bien d'autres.
  • Gestion de plusieurs serveurs.
  • Créer des requêtes complexes à l'aide de Query-by-example (QBE).

Dans ce tutoriel, nous allons vous 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, vous devrez installer Apache, MariaDB, PHP et d'autres bibliothèques PHP sur votre serveur. Vous pouvez 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 tous les packages installés, démarrez les services Apache et MariaDB et autorisez-les à démarrer 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 vous avez terminé, vous pouvez passer à l'étape suivante.

Configurer MariaDB

Par défaut, MariaDB n'est pas sécurisée. Vous devrez donc d'abord le sécuriser. Vous pouvez le faire en exécutant le script mysql_secure_installation :

mysql_secure_installation

Répondez à 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 vous avez terminé, vous devriez 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, votre installation de 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. Vous devrez donc télécharger la dernière version de phpMyAdmin depuis leur site officiel. Vous pouvez le télécharger avec 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écompressez le fichier téléchargé avec la commande suivante :

unzip phpMyAdmin-4.9.2-all-languages.zip

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

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

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

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

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

nano config.inc.php

Modifiez la ligne suivante :

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

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, importez le create_tables.sql avec la commande suivante :

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

Fournissez votre mot de passe root lorsque vous êtes invité à importer la table.

Ensuite, créez un répertoire tmp pour phpmyadmin et donnez les permissions 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, vous devrez créer un fichier de configuration d'hôte virtuel Apache pour phpMyAdmin. Vous pouvez le créer avec la commande suivante :

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

Ajoutez 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>

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service Apache avec la commande suivante :

systemctl restart httpd

Vous pouvez vérifier l'état d'Apache avec la commande suivante :

systemctl status httpd

Vous devriez voir le résultat suivant :

? 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. Vous devrez donc configurer SELinux pour que phpMyAdmin fonctionne correctement.

Tout d'abord, installez le package policycoreutils-python-utils pour gérer un environnement SELinux avec la commande suivante :

dnf install policycoreutils-python-utils

Ensuite, activez 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(/.*)?"

Parcourez maintenant tous les fichiers de votre répertoire phpmyadmin en exécutant la commande suivante :

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

Ensuite, vous devrez créer une règle de pare-feu pour autoriser le service HTTP à partir de réseaux externes. Vous pouvez 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 si cela fonctionne ou non.

Ouvrez votre navigateur Web et tapez l'URL http://your-server-ip/phpmyadmin. Vous serez redirigé vers la page suivante :

Sécuriser phpMyAdmin

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

Autoriser phpMyAdmin à partir d'une adresse IP spécifique

Tout d'abord, vous devrez configurer votre phpMyAdmin pour qu'il soit accessible uniquement depuis l'adresse IP de votre connexion domestique.

Vous pouvez le configurer en éditant le fichier /etc/httpd/conf.d/phpmyadmin.conf :

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

Recherchez les lignes suivantes :

     <RequireAny>
       Require all granted
     </RequireAny>

Et remplacez-les par ce qui suit :

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

Enregistrez et fermez le fichier lorsque vous avez terminé.

Configurer une couche d'authentification supplémentaire

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

Pour ce faire, créez 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 vous sera demandé de fournir votre mot de passe administrateur comme indiqué ci-dessous :

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

Ensuite, vous devrez configurer Apache pour utiliser le fichier .htpasswd. Vous pouvez le faire en éditant le fichier /etc/httpd/conf.d/phpmyadmin.conf.

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

Ajoutez 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

Enregistrez le fichier et redémarrez le service Apache pour que les modifications prennent effet :

systemctl restart httpd

Accéder à phpMyAdmin

Maintenant, votre instance phpMyAdmin est sécurisée avec une couche de sécurité supplémentaire. Ouvrez votre navigateur Web et tapez l'URL http://your-server-ip/phpmyadmin. Il vous sera demandé de saisir les identifiants de connexion de l'utilisateur que vous avez précédemment créé comme indiqué ci-dessous :

Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur, puis cliquez sur le bouton OK. Vous allez être redirigé vers la page de connexion de phpMyAdmin :

Maintenant, fournissez vos identifiants de connexion d'utilisateur administratif MySQL et cliquez sur le bouton Go. Vous devriez voir la page suivante :

Conclusion

Toutes nos félicitations! vous avez installé et sécurisé avec succès phpMyAdmin sur le serveur CentOS 8. Vous pouvez désormais créer des bases de données, des utilisateurs, des tables et les gérer à partir de l'interface Web. N'hésitez pas à me demander si vous avez des questions.


Cent OS
  1. Installez MariaDB 10.0 sur CentOS 6

  2. Comment installer et sécuriser MariaDB sur Debian 11

  3. Installer MariaDB sur CentOS 6.4

  4. Installez Magento sur CentOS 7, avec Nginx, PHP-FPM et MariaDB

  5. Comment installer et sécuriser MongoDB 4 dans CentOS 8

2 façons d'installer MariaDB sur CentOS 7

Installation et configuration de PhpMyAdmin avec Nginx sur CentOS 7

Comment installer et configurer Cacti sur CentOS 7

Comment installer phpMyAdmin sur CentOS 8

Comment installer et sécuriser phpMyAdmin sur CentOS 8

Comment installer et configurer MariaDB dans CentOS / RHEL 7