Nous savons déjà comment installer phpMyAdmin avec la pile LAMP sur Ubuntu 20.04 . Aujourd'hui, voyons comment installer phpMyAdmin avec la pile LEMP sur l'édition Ubuntu 20.04 LTS. Et puis nous discuterons également de quelques pratiques de sécurité qui aideront à protéger phpmyadmin des 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 (pile 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 phpmyadmin
Dans la fenêtre suivante, vous serez invité à 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. Apache et lighthttpd ne sont listés ici. Doncne sélectionnez pas n'importe quel serveur Web et laissez-le vide. Choisissez OK et appuyez sur ENTER pour continuer :
PhpMyAdmin nécessite une base de données installée et configurée avant de pouvoir être utilisé. Vous pouvez le faire avec dbconfig-command.
Choisissez Oui pour configurer la base de données pour phpmyadmin avec dbconfig-common :
Vous devez fournir un mot de passe pour que phpmyadmin s'enregistre auprès du serveur de base de données MySQL. Si le mot de passe n'est pas donné, un mot de passe aléatoire sera généré.
Saisissez un mot de passe fort et appuyez sur ENTER pour continuer :
Entrez à nouveau le mot de passe :
Au moment d'écrire ce guide, lorsque j'ai essayé de définir le mot de passe pour phpmyadmin, l'erreur suivante s'affiche :
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.
Cette erreur se produit parce que nous avons activé le VALIDATE PASSWORD composant tel que décrit dans la section intitulée "2.2 Modifier la méthode d'authentification pour l'utilisateur racine MySQL" dans le guide d'installation de la pile LEMP joint 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 phymyadmin. Cliquez sur OK pour fermer le message d'erreur ci-dessus et choisissez "abandonner" pour annuler l'installation de phpmyadmin.
Connectez-vous maintenant à l'invite Mysql en exécutant la commande suivante :
$ mysql -u root -p
Depuis l'invite mysql, utilisez 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 pourrez l'activer plus tard. Tapez ensuite "exit" pour quitter l'invite Mysql.
mysql> exit
Essayez maintenant d'installer à nouveau phpmyadmin en utilisant la commande :
$ sudo apt install phpmyadmin
Choisissez "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 Validate Password. Pour ce faire, connectez-vous à votre invite Mysql :
$ mysql -u root -p
Depuis l'invite mysql, utilisez 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> exit
Créez maintenant un lien symbolique pour configurer le serveur Web Nginx afin qu'il exécute phpmyadmin à l'aide de la commande :
$ sudo ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadmin
Cette commande créera un lien symbolique nommé "phpmyadmin" sous le répertoire racine de Nginx. Ce lien symbolique pointe en fait vers le répertoire /usr/share/phpmyadmin, où les fichiers réels sont stockés.
Fait! Nous avons installé avec succès PhpMyAdmin avec la pile LEMP.
Accéder au tableau de bord phpMyAdmin
Ouvrez votre navigateur Web et accédez à "http://IP-Address/phpmyadmin" depuis la barre d'adresse.
Vous devriez voir la page de connexion phpmyadmin. Saisissez l'utilisateur de la base de données et son mot de passe :
Vous serez satisfait du tableau de bord phpMyAdmin.
À partir de là, 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 mysql root utilisateur 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 phpMyAdmin.
Pour ce faire, connectez-vous au shell mysql à l'aide de la commande :
$ mysql -u root -p
Entrez votre mot de passe root mysql. Vous serez maintenant dans le shell mysql.
Saisissez 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.
Donnez ensuite les privilèges appropriés au 'phpmyadminuser' en utilisant la commande :
mysql> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadminuser'@'localhost' WITH GRANT OPTION;
Quittez enfin le shell mysql :
mysql> exit
Nous avons maintenant créé un utilisateur dédié pour gérer les bases de données via l'interface web phpmyadmin. Allons-y et accédons au tableau de bord phpmyadmin.
Ouvrez le navigateur Web et accédez à "http://IP-Address/phpayadmin. Entrez l'utilisateur de la base de données nouvellement créé et son mot de passe. Félicitations ! Vous êtes connecté avec un utilisateur dédié au tableau de bord Web phpMyAdmin.
Sécuriser phpMyAdmin
Cette section fournit quelques conseils pour sécuriser l'installation de PhpMyAdmin. Veuillez noter que les étapes suivantes ne suffisent pas à elles seules à protéger phpMyAdmin à 100 %. Cependant, ils ralentiront au moins toute tentative d'un auteur de pénétrer dans votre tableau de bord phpmyadmin.
Désactiver la connexion racine MySQL au tableau de bord phpmyadmin
Autoriser l'utilisateur root mysql à accéder au tableau de bord phpMyAdmin n'est pas sûr, en particulier lors de la gestion de 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 mysql root pour accéder au tableau de bord phpmyadmin afin de minimiser les attaques.
Généralement, phpmyadmin est installé sous /usr/share/phpmyadmin/ répertoire et ses fichiers de configuration sont stockés dans /etc/phpmyadmin répertoire.
Modifier le fichier de configuration phpmyadmin :
$ sudo nano /etc/phpmyadmin/config.inc.php
Ajoutez/modifiez les paramètres suivants :
[...] $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['AllowRoot'] = FALSE; [...]
Enregistrez et fermez le fichier.
Redémarrez le serveur Web Nginx à l'aide de la commande :
$ sudo systemctl restart nginx
Essayez maintenant de vous connecter à phpmyadmin en tant qu'utilisateur root. Vous obtiendrez le message Accès refusé message d'erreur :
Modifier l'URL de l'interface Web de phpmyadmin
C'est la tactique la plus courante suivie par les bots pour accéder à phpmyadmin. Vous pouvez empêcher cela en changeant l'URL en quelque chose de difficile à deviner. La modification de l'URL phpmyadmin évitera aux bots ou aux scripts automatisés d'effectuer des analyses d'URL et des attaques par force brute.
Rappelez-vous 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/ostechnix
Assurez-vous que le nom contient des caractères aléatoires et qu'il est 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 recevra le message d'erreur suivant :
Parce que nous avons changé l'URL. La nouvelle URL de phpmyadmin est http://IP-Address/ostechnix.
Protéger la page de connexion phpMyAdmin par mot de passe
Nous pouvons ajouter une couche de sécurité supplémentaire en limitant l'accès à la page de connexion phpmyadmin avec la méthode d'authentification HTTP de base. Ce qui signifie - 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/mot de passe supplémentaire avant d'accéder à la page de connexion réelle de phpMyAdmin.
Tout d'abord, nous devons générer un fichier de mot de passe en utilisant htpasswd utilitaire. L'utilitaire htpasswd fait partie des apache2-utils emballer. Alors installons-le à l'aide de la commande :
$ sudo apt install apache2-utils
Maintenant, créez un fichier de mot de passe chiffré avec la commande :
$ sudo htpasswd -c /etc/nginx/.htpasswd ostechnix
Remplacez "ostechnix" par un nom d'utilisateur de votre choix. Entrez un mot de passe fort deux fois pour générer le fichier de mots de passe.
Pour afficher le contenu du fichier nouvellement généré, utilisez la commande "cat" comme ci-dessous :
$ cat /etc/nginx/.htpasswd
Vous 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 Nginx. Si vous avez suivi notre tutoriel d'installation LEMP 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/default
Ajoutez les lignes suivantes, sous "location" bloquer :
[...] location /ostechnix { auth_basic "Restricted Zone"; auth_basic_user_file /etc/nginx/.htpasswd; } [...]
Rappelez-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 à l'aide de la commande :
$ sudo nginx -t
Exemple de résultat :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Si vous ne voyez aucune erreur, redémarrez le service nginx pour que les modifications prennent effet.
$ sudo systemctl restart nginx
Essayez maintenant d'accéder à votre URL phpMyAdmin depuis votre navigateur. Vous serez invité à saisir un nom d'utilisateur et un mot de passe :
Entrez le nom d'utilisateur et le mot de passe corrects qui seront créés précédemment à l'aide de l'utilitaire "htpasword". Vous allez maintenant être redirigé vers la page de connexion réelle de phpMyAdmin, où vous pouvez entrer l'utilisateur de la base de données et son mot de passe pour vous connecter au tableau de bord Web de phpMyAdmin.