Installer phpMyAdmin avec la pile LEMP sur Ubuntu 20.04 LTS
Nous savons déjà comment installer phpMyAdmin avec une pile LAMP sur Ubuntu 20.04. Aujourd'hui, voyons comment installer phpMyAdmin avec une pile LEMP sur l'édition Ubuntu 20.04 LTS. Ensuite, nous discuterons également de quelques pratiques de sécurité qui aideront à sécuriser phpMyAdmin contre les menaces courantes. Tout d'abord, assurez-vous d'avoir configuré la pile LEMP sur Ubuntu 20.04 comme décrit dans le lien suivant.
- Installer Nginx, MySQL, PHP (Stack LEMP) sur Ubuntu 20.04 LTS
Après avoir installé la pile LEMP, installez et sécurisez phpMyAdmin comme décrit dans les sections suivantes.
Installer phpMyAdmin avec la pile LEMP sur Ubuntu 20.04 LTS
Exécutez la commande suivante pour installer phpMyAdmin depuis le Terminal :
$ sudo apt install phpmyadminDans la fenêtre suivante, il vous sera demandé de sélectionner le serveur web qui doit être automatiquement configuré pour exécuter phpMyAdmin. Comme vous pouvez le voir dans la capture d'écran ci-dessous, Nginx n'est pas disponible dans la liste des serveurs web. Seuls Apache et lighthttpd sont listés ici. Donc ne sélectionnez pas de serveur web et laissez simplement vide. Choisissez OK et appuyez sur ENTRÉE pour continuer :
sélectionnez le serveur web qui doit être configuré automatiquement pour exécuter phpMyAdmin
PhpMyAdmin nécessite qu'une base de données soit installée et configurée avant de pouvoir être utilisée. Vous pouvez le faire avec la commande dbconfig.
Choisissez Oui pour configurer la base de données pour phpmyadmin avec dbconfig-common :
Configurer la base de données pour phpmyadmin avec dbconfig-common
Vous devez fournir un mot de passe pour phpmyadmin afin de vous enregistrer auprès du serveur de base de données MySQL. Si aucun mot de passe n'est donné, un mot de passe aléatoire sera généré.
Entrez un mot de passe fort et appuyez sur ENTRÉE pour continuer :
Entrez le mot de passe de l'application MySQL pour phpMyAdmin
Entrez à nouveau le mot de passe :
Saisissez à nouveau le mot de passe de l'application MySQL pour phpmyadmin
Au moment de rédiger ce guide, lorsque j'ai essayé de définir le mot de passe pour phpmyadmin, il a généré l'erreur suivante :
An error occurred while installing the database:
mysql said: ERROR 1819 (HY000) at line 1: Your password does not satisfy
the current policy requirements . Your options are:
* abort - Causes the operation to fail; you will need to downgrade,
reinstall, reconfigure this package, or otherwise manually intervene
to continue using it. This will usually also impact your ability to
install other packages until the installation failure is resolved.
* retry - Prompts once more with all the configuration questions
(including ones you may have missed due to the debconf priority
setting) and makes another attempt at performing the operation.
* retry (skip questions) - Immediately attempts the operation again,
skipping all questions. This is normally useful only if you have
solved the underlying problem since the time the error occurred.
* ignore - Continues the operation ignoring dbconfig-common errors.
This will usually leave this package without a functional database.mysql a dit : ERREUR 1819 (HY000) à la ligne 1 : Votre mot de passe ne respecte pas les exigences de la politique actuelle
Cette erreur se produit parce que nous avons activé le composant VALIDATE PASSWORD comme décrit dans la section intitulée "2.2 Changer la méthode d'authentification pour l'utilisateur root de MySQL" dans le guide d'installation de la pile LEMP ci-dessus.
Pour résoudre ce problème, vous devez désactiver temporairement le composant Valider le mot de passe et le réactiver après avoir défini le mot de passe pour phpmyadmin. Cliquez sur OK pour fermer le message d'erreur ci-dessus et choisissez "annuler" pour annuler l'installation de phpmyadmin.
Annuler l'installation de phpmyadmin
Connectez-vous maintenant à l'invite Mysql en exécutant la commande suivante :
$ mysql -u root -pDepuis l'invite mysql, exécutez la commande suivante pour désactiver le plugin Validate Password :
mysql> UNINSTALL COMPONENT "file://component_validate_password";Veuillez noter que la commande ci-dessus désactivera uniquement le plugin, mais ne le supprimera pas. Vous pouvez l'activer plus tard. Ensuite, tapez « exit » pour quitter l'invite Mysql.
mysql> exitDésactiver le plugin Valider le mot de passe dans MySQL
Essayez maintenant d'installer phpmyadmin à nouveau en utilisant la commande :
$ sudo apt install phpmyadminChoisissez « Oui » et appuyez sur ENTRÉE pour configurer la base de données pour phpmyadmin avec dbconfig-common. Cette fois, l'installation de phpmyadmin fonctionnera sans aucun problème.
Une fois phpmyadmin installé, réactivez le plugin Valider le mot de passe. Pour ce faire, connectez-vous à votre invite Mysql :
$ mysql -u root -pDepuis l'invite mysql, exécutez la commande suivante pour désactiver le plugin Validate Password :
mysql> INSTALL COMPONENT "file://component_validate_password";Tapez exit pour quitter l'invite mysql.
mysql> exitActivez le plugin Valider le mot de passe dans MySQL
Créez maintenant un lien symbolique pour configurer le serveur web Nginx afin d'exécuter phpmyadmin en utilisant la commande :
$ sudo ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadminCette commande créera un lien symbolique nommé « phpmyadmin » dans le répertoire racine de Nginx. Ce lien symbolique pointe en réalité vers le répertoire /usr/share/phpmyadmin, où les fichiers réels sont stockés.
Terminé ! Nous avons installé PhpMyAdmin avec succès avec la pile LEMP.
Accéder au tableau de bord phpMyAdmin
Ouvrez votre navigateur web et allez à "http://IP-Address/phpmyadmin" depuis la barre d'adresse.
Vous devriez voir la page de connexion de phpMyAdmin. Entrez l'utilisateur de la base de données et son mot de passe :
Page de connexion Phpmyadmin
Vous serez satisfait du tableau de bord phpMyAdmin.
tableau de bord phpMyAdmin
À partir d'ici, vous pouvez créer, supprimer et gérer des bases de données.
Créer un utilisateur dédié pour accéder au tableau de bord phpMyAdmin
Une fois phpMyAdmin installé, un utilisateur de base de données nommé 'phpmyadmin' sera automatiquement créé avec le mot de passe administrateur que vous avez défini lors de l'installation. Vous pouvez vous connecter au tableau de bord phpMyAdmin en utilisant l'utilisateur 'phpmyadmin' ou l'utilisateur mysql root comme indiqué ci-dessus. Cependant, il est recommandé de créer un utilisateur dédié pour gérer les bases de données via l'interface web de phpMyAdmin.
Pour ce faire, connectez-vous au shell MySQL en utilisant la commande :
$ mysql -u root -pEntrez votre mot de passe root mysql. Vous serez maintenant dans le shell mysql.
Entrez la commande suivante pour créer un nouvel utilisateur dédié pour phpmyadmin :
mysql> CREATE USER 'phpmyadminuser'@'localhost' IDENTIFIED BY 'Password123#@!';Ici, phpmyadmin est le nouvel utilisateur pour accéder au tableau de bord phpmyadmin. Le mot de passe pour phpmyadminuser est Password123#@!. Remplacez ces valeurs par les vôtres.
Ensuite, donnez les privilèges appropriés à 'phpmyadminuser' en utilisant la commande :
mysql> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadminuser'@'localhost' WITH GRANT OPTION;Quittez enfin le shell MySQL :
mysql> exitCréer un nouvel utilisateur pour phpMyAdmin
Nous avons maintenant créé un utilisateur dédié pour gérer les bases de données via l'interface web de phpmyadmin. Allons de l'avant et accédons au tableau de bord de phpmyadmin.
Ouvrez un navigateur web et rendez-vous sur "http://IP-Address/phpmyadmin". Entrez le nouvel utilisateur de base de données créé ainsi que son mot de passe. Félicitations ! Vous vous êtes connecté avec un utilisateur dédié au tableau de bord web de phpMyAdmin.
Utilisateur dédié pour accéder au tableau de bord phpMyAdmin
Sécuriser phpMyAdmin
Cette section fournit quelques conseils pour sécuriser l'installation de PhpMyAdmin. Veuillez noter que les étapes suivantes à elles seules ne peuvent pas garantir une protection à 100 % de phpMyAdmin. Cependant, elles ralentiront au moins toute tentative d'un intrus de s'introduire dans votre tableau de bord phpMyAdmin.
Désactiver la connexion root MySQL au tableau de bord phpMyAdmin
Permettre à l'utilisateur root de mysql d'accéder au tableau de bord de phpMyAdmin n'est pas sûr, surtout lors de la gestion des bases de données sur le réseau. C'est pourquoi nous avons créé un utilisateur dédié dans la section précédente. Puisque nous avons déjà un utilisateur dédié, nous pouvons désactiver en toute sécurité la connexion root de mysql pour accéder au tableau de bord de phpMyAdmin afin de minimiser les attaques.
Généralement, phpmyadmin est installé sous le répertoire /usr/share/phpmyadmin/ et ses fichiers de configuration sont stockés dans le répertoire /etc/phpmyadmin.
Modifier le fichier de configuration de phpmyadmin :
$ sudo nano /etc/phpmyadmin/config.inc.phpAjouter/modifier les paramètres suivants :
[...]
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['AllowRoot'] = FALSE;
[...]Modifier le fichier de configuration de phpMyAdmin
Enregistrez et fermez le fichier.
Redémarrez le serveur web Nginx en utilisant la commande :
$ sudo systemctl restart nginxEssayez maintenant de vous connecter à phpMyAdmin en tant qu'utilisateur root. Vous obtiendrez le message d'erreur Accès refusé :
Désactiver la connexion root MySQL au tableau de bord phpMyAdmin
Changer l'URL de l'interface web de phpMyAdmin
C'est la tactique la plus courante utilisée par les bots pour accéder à phpmyadmin. Vous pouvez éviter cela en changeant l'URL en quelque chose de difficile à deviner. Changer l'URL de phpmyadmin empêchera les bots ou les scripts automatisés d'effectuer des scans d'URL et des attaques par force brute.
Souviens-toi que nous avons créé un lien symbolique appelé « phpmyadmin » sous le répertoire racine de Nginx ?
$ ls -l /var/www/html/
total 8
-rw-r--r-- 1 root root 612 Jun 2 07:15 index.nginx-debian.html
-rw-r--r-- 1 root root 20 Jun 2 07:35 info.php
lrwxrwxrwx 1 root root 22 Jun 2 08:14 phpmyadmin -> /usr/share/phpmyadmin/Ici, phpmyadmin est le lien symbolique qui pointe vers le répertoire /usr/share/phpmyadmin.
Nous allons changer le nom du lien symbolique en utilisant la commande :
$ sudo mv /var/www/html/phpmyadmin /var/www/html/ostechnixAssurez-vous que le nom contient des caractères aléatoires et soit très difficile à deviner.
À partir de maintenant, chaque fois que quelqu'un essaiera d'accéder à la page phpmyadmin en naviguant vers l'URL http://IP-Address/phpmyadmin, il/elle recevra le message d'erreur suivant :
Changer l'URL de l'interface web de phpMyAdmin
Parce que nous avons changé l'URL. La nouvelle URL pour phpmyadmin est http://IP-Address/ostechnix.
Sécurisez phpmyadmin en changeant l'URL par défaut de l'interface web de phpmyadmin
Protéger par mot de passe la page de connexion de phpMyAdmin
Nous pouvons ajouter une couche supplémentaire de sécurité en restreignant l'accès à la page de connexion phpmyadmin avec la méthode d'authentification HTTP de base. Cela signifie que nous activons la protection par mot de passe pour la page de connexion phpmyadmin, de sorte que les utilisateurs devront entrer un nom d'utilisateur et un mot de passe supplémentaires avant d'accéder à la véritable page de connexion phpMyAdmin.
Tout d'abord, nous devons générer un fichier de mot de passe en utilisant l'utilitaire htpasswd. L'utilitaire htpasswd fait partie du package apache2-utils. Donc, installons-le en utilisant la commande :
$ sudo apt install apache2-utilsMaintenant, créez un fichier de mot de passe chiffré avec la commande :
$ sudo htpasswd -c /etc/nginx/.htpasswd ostechnixRemplacez « ostechnix » par un nom d'utilisateur de votre choix. Entrez un mot de passe fort deux fois pour générer le fichier de mot de passe.
Pour afficher le contenu du fichier nouvellement généré, utilisez la commande « cat » comme ci-dessous :
$ cat /etc/nginx/.htpasswdVous verrez une sortie comme ci-dessous :
ostechnix:$apr1$Us9YABHL$CMPDIuHaOB2lK/DVIzA2C/Ensuite, nous devons mentionner le chemin du fichier de mot de passe ci-dessus dans notre fichier de configuration par défaut de Nginx. Si vous avez suivi notre tutoriel d'installation LEMP ci-joint ci-dessus, la configuration par défaut de Nginx devrait être /etc/nginx/sites-available/default.
Modifiez le fichier de configuration Nginx par défaut :
$ sudo nano /etc/nginx/sites-available/defaultAjoutez les lignes suivantes sous le bloc "location" :
[...]
location /ostechnix {
auth_basic "Restricted Zone";
auth_basic_user_file /etc/nginx/.htpasswd;
}
[...]Configurer Nginx pour l'authentification HTTP de base
Souvenez-vous que nous avons changé l'URL de phpMyAdmin (http://IP-Address/ostechnix) à l'étape précédente ? C'est pourquoi j'ai mentionné le nom du bloc comme « ostechnix » dans le bloc ci-dessus. Remplacez-le par le vôtre. Enregistrez et fermez le fichier.
Vérifiez le fichier de configuration Nginx pour toute erreur de syntaxe en utilisant la commande :
$ sudo nginx -tExemple de sortie :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulSi vous ne voyez aucune erreur, redémarrez le service nginx pour que les modifications prennent effet.
$ sudo systemctl restart nginxEssayez maintenant d'accéder à votre URL phpMyAdmin depuis votre navigateur. Il vous sera demandé de saisir un nom d'utilisateur et un mot de passe :
Protéger par mot de passe la page de connexion de phpMyAdmin
Entrez le nom d'utilisateur et le mot de passe corrects qui auront été créés précédemment en utilisant l'utilitaire "htpasswd". Vous serez maintenant redirigé vers la page de connexion réelle de phpMyAdmin, où vous pourrez entrer l'utilisateur de la base de données et son mot de passe pour vous connecter au tableau de bord web de phpMyAdmin.

















