phpMyAdmin est un outil logiciel open source utilisé pour gérer les bases de données MySQL/MariaDB. Il fournit un moyen simple d'interagir avec MySQL via un navigateur Web. phpMyAdmin est très utile pour les utilisateurs qui ne sont pas à l'aise avec l'administration de leurs données depuis la ligne de commande, il est donc essentiel pour tout administrateur système de sécuriser phpMyAdmin contre différents types d'attaques.
Dans ce tutoriel, nous allons vous montrer comment installer et sécuriser phpMyAdmin sur CentOS 8.
Prérequis
- Un nouveau VPS CentOS 8 sur la plate-forme cloud d'Atlantic.net.
- Un mot de passe root configuré sur votre serveur.
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant CentOS 8 comme système d'exploitation avec au moins 1 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois que vous êtes connecté à votre serveur CentOS 8, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
dnf update -y
Étape 2 – Installer Apache, MariaDB et PHP
Avant de commencer, installez Apache, MariaDB, PHP et les autres extensions PHP requises avec la commande suivante :
dnf install httpd mariadb-server php php-cli php-json php-mbstring php-pdo php-pecl-zip php-mysqlnd -y
Après avoir installé tous les packages, vous pouvez passer à l'étape suivante.
Étape 3 - Définir le mot de passe racine MariaDB
Tout d'abord, démarrez le service MariaDB et activez-le au démarrage avec la commande suivante :
systemctl start mariadb systemctl enable mariadb
Ensuite, définissez le mot de passe root MySQL à l'aide du script suivant :
mysql_secure_installation
Ce script définira le mot de passe root MySQL, supprimera les utilisateurs anonymes, interdira la connexion root à distance et supprimera la base de données de test et l'accès à celle-ci, comme indiqué ci-dessous :
Entrez le mot de passe actuel pour root (entrez pour aucun):
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
Étape 4 - Installer phpMyAdmin
Tout d'abord, téléchargez la dernière version de phpMyAdmin dans le répertoire racine Web d'Apache à l'aide de la commande suivante :
cd /var/www/html wget https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-all-languages.zip
Une fois téléchargé, décompressez le fichier téléchargé avec la commande suivante :
unzip phpMyAdmin-4.9.4-all-languages.zip
Ensuite, renommez le répertoire extrait en phpmyadmin comme indiqué ci-dessous :
mv phpMyAdmin-4.9.4-all-languages phpmyadmin
Ensuite, changez la propriété du répertoire phpmyadmin en utilisateur apache :
chown -R apache:apache /var/www/html/phpmyadmin
Ensuite, renommez le fichier config.sample.inc.php :
cd /var/www/html/phpmyadmin mv config.sample.inc.php config.inc.php
Ensuite, éditez le fichier et définissez votre mot de passe sécurisé :
nano config.inc.php
Trouvez la ligne ci-dessous et mettez-la à jour avec votre mot de passe sécurisé, comme indiqué ci-dessous :
$cfg['blowfish_secret'] = 'your-secure-password';
Enregistrez et fermez le fichier. Ensuite, importez les tables pour phpMyAdmin avec la commande suivante :
mysql < sql/create_tables.sql -u root -p
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Étape 5 - Configurer Apache pour phpMyAdmin
Créez ensuite un fichier de configuration d'hôte virtuel Apache pour phpMyAdmin :
nano /etc/httpd/conf.d/phpmyadmin.conf
Ajoutez les lignes suivantes :
Alias /phpmyadmin /var/www/html/phpmyadmin <Directory /var/www/html/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 /var/www/html/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. Ensuite, démarrez le service Apache et autorisez-le à démarrer après le redémarrage du système avec la commande suivante :
systemctl start httpd systemctl enable httpd
Maintenant, ouvrez votre navigateur Web et visitez l'URL http://your-server-ip/phpmyadmin. Vous devriez voir l'interface Web de phpMyAdmin dans l'écran suivant :
Connectez-vous avec vos informations d'identification MySQL créées précédemment.
Étape 6 - Sécuriser phpMyAdmin
Dans cette section, nous vous montrerons différentes manières de sécuriser votre interface web phpMyAdmin.
Modifier l'emplacement d'accès à phpMyAdmin
C'est une bonne idée de changer l'URL d'accès de votre interface phpMyAdmin. Vous pouvez le changer en éditant le fichier phpmyadmin.conf :
nano /etc/httpd/conf.d/phpmyadmin.conf
Recherchez la ligne suivante :
Alias /phpmyadmin /var/www/html/phpmyadmin
Remplacez-le par la ligne suivante :
Alias /securelocation /var/www/html/phpmyadmin
Enregistrez et fermez le fichier, puis redémarrez le service Apache pour appliquer les modifications :
systemctl restart httpd
Vous pouvez maintenant accéder à l'interface phpMyAdmin en utilisant l'URL http://your-server-ip/securelocation.
Autoriser phpMyAdmin à partir d'une IP spécifique
C'est toujours une bonne idée de n'autoriser l'accès à phpMyAdmin qu'à partir d'une adresse IP spécifique.
Pour cela, ouvrez le fichier phpmyadmin.conf :
nano /etc/httpd/conf.d/phpmyadmin.conf
Recherchez les lignes suivantes :
<RequireAny> Require all granted </RequireAny>
Remplacez-le par ce qui suit :
<RequireAny> Require ip your-client-ip-address Require ip ::1 </RequireAny>
Enregistrez et fermez le fichier, puis redémarrez le service Apache pour appliquer les modifications :
systemctl restart httpd
Votre interface phpMyAdmin n'est désormais accessible qu'à partir d'une adresse IP spécifiée.
Protection par mot de passe de l'interface phpMyAdmin
Vous pouvez également ajouter une couche supplémentaire de protection par mot de passe sur phpMyAdmin en configurant une authentification de base.
Commencez par créer un fichier d'authentification à l'aide de la commande suivante :
htpasswd -c /etc/httpd/.htpasswd phpadmin
Fournissez un mot de passe sécurisé comme indiqué ci-dessous :
New password: Re-type new password: Adding password for user phpadmin
Ensuite, créez le fichier .htaccess dans le répertoire phpmyadmin :
nano /var/www/html/phpmyadmin/.htaccess
Ajoutez les lignes suivantes :
AuthType basic AuthName "Authentication Required" AuthUserFile /etc/httpd/.htpasswd Require valid-user
Enregistrez et fermez le fichier lorsque vous avez terminé.
Ensuite, modifiez le fichier phpmyadmin.conf et configurez Apache pour utiliser le fichier .htpasswd.
nano /etc/httpd/conf.d/phpmyadmin.conf
Ajoutez les lignes suivantes sous la ligne "AddDefaultCharset UTF-8":
AllowOverride All
Enregistrez le fichier, puis redémarrez le service Apache pour appliquer les modifications :
systemctl restart httpd
Étape 7 - Tester phpMyAdmin
À ce stade, l'interface phpMyAdmin est sécurisée avec une couche supplémentaire de protection par mot de passe. Pour le tester, ouvrez votre navigateur Web et tapez l'URL http://your-server-ip/securelocation. Il vous sera demandé de fournir les identifiants de connexion que nous avons créés précédemment :
Tapez votre nom d'utilisateur et votre mot de passe et cliquez sur OK bouton. Vous allez être redirigé vers la page de connexion de phpMyAdmin :
Indiquez votre nom d'utilisateur et votre mot de passe MySQL, puis cliquez sur Go bouton. Vous devriez voir votre interface Web phpMyAdmin dans l'écran suivant :
Conclusion
Dans le guide ci-dessus, nous avons appris comment installer et sécuriser phpMyAdmin sur CentOS 8. Votre interface phpMyAdmin est maintenant sécurisée avec une protection supplémentaire par mot de passe. Vous pouvez utiliser cette méthode pour sécuriser un serveur dans le cadre d'un plan d'hébergement VPS Atlantic.Net.
En savoir plus sur nos services d'hébergement VPS et nos serveurs privés virtuels.