Comment installer et sécuriser phpMyAdmin sur Ubuntu 16.04

introduction

Alors que de nombreux utilisateurs ont besoin des fonctionnalités d’un système de gestion de base de données tel que MySQL, ils peuvent ne pas se sentir à l’aise d’interagir avec le système uniquement à partir de l’invite MySQL.

  • phpMyAdmin * a été créé pour permettre aux utilisateurs d’interagir avec MySQL via une interface Web. Dans ce guide, nous expliquerons comment installer et sécuriser phpMyAdmin afin que vous puissiez l’utiliser en toute sécurité pour gérer vos bases de données à partir d’un système Ubuntu 16.04.

Conditions préalables

Avant de commencer à utiliser ce guide, vous devez suivre certaines étapes élémentaires.

Premièrement, supposons que vous utilisez un utilisateur non root avec les privilèges sudo, comme décrit aux étapes 1 à 4 de la https://digitalocean.com/community/articles/initial-server-setup-with-ubuntu- 16-04 [configuration initiale du serveur d’Ubuntu 16.04].

Nous allons également supposer que vous avez terminé l’installation de LAMP (Linux, Apache, MySQL et PHP) sur votre serveur Ubuntu 16.04. Si cela n’est pas encore terminé, vous pouvez suivre ce guide à l’adresse https://digitalocean.com/community/articles/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04. [installer une pile LAMP sur Ubuntu 16.04].

Enfin, il existe des considérations de sécurité importantes lors de l’utilisation de logiciels tels que phpMyAdmin, car:

  • Communique directement avec votre installation MySQL

  • Gère l’authentification à l’aide des informations d’identification MySQL

  • Exécute et renvoie les résultats pour des requêtes SQL arbitraires

Pour ces raisons, et parce qu’il s’agit d’une application PHP largement déployée et fréquemment attaquée, vous ne devez jamais exécuter phpMyAdmin sur des systèmes distants via une simple connexion HTTP. Si vous n’avez pas de domaine existant configuré avec un certificat SSL / TLS, vous pouvez suivre ce guide à l’adresse https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s- encrypt-on-ubuntu-16-04 [sécuriser Apache avec Let’s Encrypt sur Ubuntu 16.04].

Une fois ces étapes terminées, vous êtes prêt à utiliser ce guide.

Première étape - Installer phpMyAdmin

Pour commencer, nous allons installer phpMyAdmin à partir des référentiels Ubuntu par défaut.

Nous pouvons le faire en mettant à jour notre index de paquetage local puis en utilisant le système de conditionnement + apt + pour extraire les fichiers et les installer sur notre système:

sudo apt-get update
sudo apt-get install phpmyadmin php-mbstring php-gettext

Cela vous posera quelques questions afin de configurer votre installation correctement.

  • Pour la sélection du serveur, choisissez * apache2 *.

  • Sélectionnez * yes * quand on vous demandera s’il faut utiliser + dbconfig-common + pour configurer la base de données.

  • Vous serez invité à saisir le mot de passe de votre administrateur de base de données.

  • Il vous sera ensuite demandé de choisir et de confirmer un mot de passe pour l’application + phpMyAdmin +

Le processus d’installation ajoute en fait le fichier de configuration phpMyAdmin Apache dans le répertoire + / etc / apache2 / conf-enabled / +, où il est lu automatiquement.

La seule chose à faire est d’activer explicitement les extensions PHP + mcrypt + et + mbstring +, ce que nous pouvons faire en tapant:

sudo phpenmod mcrypt
sudo phpenmod mbstring

Ensuite, vous devrez redémarrer Apache pour que vos modifications soient reconnues:

sudo systemctl restart apache2

Vous pouvez maintenant accéder à l’interface Web en visitant le nom de domaine ou l’adresse IP publique de votre serveur suivi de + / phpmyadmin +:

https:///phpmyadmin

image: https: //assets.digitalocean.com/articles/phpmyadmin_1604/small_login_screen.png [écran de connexion phpMyAdmin]

Vous pouvez maintenant vous connecter à l’interface en utilisant le nom d’utilisateur + root + et le mot de passe administratif que vous avez défini lors de l’installation de MySQL.

Lorsque vous vous connectez, vous verrez l’interface utilisateur, qui ressemblera à ceci:

image: https: //assets.digitalocean.com/articles/phpmyadmin_1604/small_user_interface.png [interface utilisateur phpMyAdmin]

Deuxième étape - Sécurisez votre instance phpMyAdmin

Nous avons pu mettre en place notre interface phpMyAdmin assez facilement. Cependant, nous n’avons pas encore fini. En raison de son omniprésence, phpMyAdmin est une cible populaire pour les attaquants. Nous devrions prendre des mesures supplémentaires pour empêcher tout accès non autorisé.

L’un des moyens les plus simples consiste à placer une passerelle devant toute l’application. Nous pouvons le faire en utilisant les fonctionnalités d’authentification et d’autorisation intégrées à Apache + .htaccess +.

Configurer Apache pour autoriser les substitutions .htaccess

Premièrement, nous devons activer l’utilisation des substitutions de fichiers + .htaccess + en modifiant notre fichier de configuration Apache.

Nous allons éditer le fichier lié qui a été placé dans notre répertoire de configuration Apache:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Nous devons ajouter une directive + AllowOverride All + dans la section + <Directory / usr / share / phpmyadmin> + du fichier de configuration, comme ceci:

/etc/apache2/conf-available/phpmyadmin.conf

<Directory /usr/share/phpmyadmin>
   Options FollowSymLinks
   DirectoryIndex index.php

   . . .

Lorsque vous avez ajouté cette ligne, enregistrez et fermez le fichier.

Pour implémenter les modifications que vous avez apportées, redémarrez Apache:

sudo systemctl restart apache2

Créer un fichier .htaccess

Maintenant que nous avons activé l’utilisation + .htaccess pour votre application, nous devons en créer un pour réellement mettre en œuvre une sécurité.

Pour que cela réussisse, le fichier doit être créé dans le répertoire de l’application. Nous pouvons créer le fichier nécessaire et l’ouvrir dans notre éditeur de texte avec les privilèges root en tapant:

sudo nano /usr/share/phpmyadmin/.htaccess

Dans ce fichier, nous devons entrer les informations suivantes:

/usr/share/phpmyadmin/.htaccess

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Voyons ce que chacune de ces lignes signifie:

  • + AuthType Basic +: Cette ligne spécifie le type d’authentification que nous implémentons. Ce type implémentera l’authentification par mot de passe à l’aide d’un fichier de mot de passe.

  • + AuthName +: Ceci définit le message pour la boîte de dialogue d’authentification. Vous devez conserver ce générique afin que les utilisateurs non autorisés ne reçoivent aucune information sur ce qui est protégé.

  • + AuthUserFile +: Ceci définit l’emplacement du fichier de mot de passe qui sera utilisé pour l’authentification. Cela devrait être en dehors des répertoires qui sont servis. Nous allons créer ce fichier sous peu.

  • + Require valid-user +: Ceci spécifie que seuls les utilisateurs authentifiés doivent avoir accès à cette ressource. C’est ce qui empêche les utilisateurs non autorisés d’entrer.

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Créez le fichier .htpasswd pour l’authentification

L’emplacement que nous avons sélectionné pour votre fichier de mots de passe était «` + / etc / phpmyadmin / .htpasswd` ». Nous pouvons maintenant créer ce fichier et le transmettre à un utilisateur initial avec l’utilitaire + htpasswd +:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd

Vous serez invité à sélectionner et à confirmer un mot de passe pour l’utilisateur que vous créez. Ensuite, le fichier est créé avec le mot de passe haché que vous avez entré.

Si vous voulez entrer un utilisateur supplémentaire, vous devez le faire * sans * le drapeau + -c +, comme ceci:

sudo htpasswd /etc/phpmyadmin/.htpasswd

Maintenant, lorsque vous accédez à votre sous-répertoire phpMyAdmin, vous serez invité à indiquer le nom de compte et le mot de passe supplémentaires que vous venez de configurer:

https:///phpmyadmin

image: https: //assets.digitalocean.com/articles/phpmyadmin_1404/apache_auth.png [mot de passe apache phpMyAdmin]

Après avoir entré l’authentification Apache, vous serez redirigé vers la page d’authentification phpMyAdmin habituelle pour entrer vos autres informations d’identification. Cela ajoutera une couche de sécurité supplémentaire depuis que phpMyAdmin a souffert de vulnérabilités dans le passé.

Conclusion

Vous devriez maintenant avoir configuré et prêt à utiliser phpMyAdmin sur votre serveur Ubuntu 16.04. En utilisant cette interface, vous pouvez facilement créer des bases de données, des utilisateurs, des tables, etc., et effectuer les opérations habituelles telles que la suppression et la modification de structures et de données.