Introduction
Alors que de nombreux utilisateurs ont besoin des fonctionnalités d’un système de gestion de base de données comme 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 que les utilisateurs puissent interagir avec MySQL via une interface Web. Dans ce guide, nous allons discuter de la façon d’installer et de 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.
Prérequis
Avant de commencer à utiliser ce guide, vous devez avoir terminé certaines étapes de base.
Tout d’abord, nous supposerons que vous utilisez un utilisateur non root avec les privilèges sudo, comme décrit dans les étapes 1 à 4 de la configuration initiale du serveur d’Ubuntu 16.04.
Nous allons également supposer que vous avez terminé une installation LAMP (Linux, Apache, MySQL et PHP) sur votre serveur Ubuntu 16.04. Si ce n’est pas encore terminé, vous pouvez suivre ce guide sur l’installation d’une pile de LAMPES sur Ubuntu 16.04.
Enfin, il y a des considérations de sécurité importantes lors de l’utilisation de logiciels comme phpMyAdmin, car il:
- Communique directement avec votre installation MySQL
- Gère l’authentification à l’aide des informations d’identification MySQL
- Exécute et renvoie des résultats pour des requêtes SQL arbitraires
Pour ces raisons, et comme il s’agit d’une application PHP largement déployée qui est fréquemment ciblée pour des attaques, vous ne devez jamais exécuter phpMyAdmin sur des systèmes distants via une connexion HTTP simple. Si vous n’avez pas de domaine existant configuré avec un certificat SSL / TLS, vous pouvez suivre ce guide sur la sécurisation d’Apache avec Let’s Encrypt sur Ubuntu 16.04.
Une fois que vous avez terminé ces étapes, vous êtes prêt à commencer avec ce guide.
Première étape – Installez phpMyAdmin
Pour commencer, nous installerons phpMyAdmin à partir des dépôts Ubuntu par défaut.
Nous pouvons le faire en mettant à jour notre index de paquets local, puis en utilisant le système d’emballage 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 correctement votre installation.
Avertissement : Lorsque la première invite apparaît, apache2 est mis en surbrillance, mais n’est pas sélectionné. Si vous n’appuyez pas sur Espace pour sélectionner Apache, le programme d’installation ne déplacera pas les fichiers nécessaires lors de l’installation. Appuyez sur Espace, Onglet, puis sur Entrée pour sélectionner Apache.
- Pour la sélection du serveur, choisissez apache2.
- Sélectionnez oui lorsqu’on vous demande s’il faut utiliser
dbconfig-common
pour configurer la base de données - Le mot de passe de l’administrateur de votre base de données vous sera demandé
- Il vous sera ensuite demandé de choisir et de confirmer un mot de passe pour l’application
phpMyAdmin
elle-même
Le processus d’installation ajoute en fait le fichier de configuration Apache phpMyAdmin dans le répertoire /etc/apache2/conf-enabled/
, où il est automatiquement lu.
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://domain_name_or_IP/phpmyadmin
Vous pouvez maintenant vous connecter à l’interface en utilisant le nom d’utilisateur root
et le mot de passe administratif que vous avez configuré lors de l’installation de MySQL.
Lorsque vous vous connectez, vous verrez l’interface utilisateur, qui ressemblera à ceci:
Deuxième étape – Sécurisez votre instance phpMyAdmin
Nous avons pu rendre notre interface phpMyAdmin opérationnelle assez facilement. Cependant, nous n’avons pas encore terminé. 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’une des façons les plus simples de le faire est de placer une passerelle devant l’ensemble de l’application. Nous pouvons le faire en utilisant les fonctionnalités d’authentification et d’autorisation intégrées d’Apache .htaccess
.
Configurez Apache pour autoriser.remplacements htaccess
Tout d’abord, nous devons activer l’utilisation des remplacements de fichiers .htaccess
en éditant 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:
<Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All . . .
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éez un.fichier htaccess
Maintenant que nous avons activé l’utilisation de .htaccess
pour notre application, nous devons en créer un pour implémenter réellement 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:
AuthType BasicAuthName "Restricted Files"AuthUserFile /etc/phpmyadmin/.htpasswdRequire valid-user
Passons en revue la signification de chacune de ces lignes:
-
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
: Définit le message de la boîte de dialogue d’authentification. Vous devez conserver ce générique afin que les utilisateurs non autorisés n’obtiennent aucune information sur ce qui est protégé. -
AuthUserFile
: 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
: Spécifie que seuls les utilisateurs authentifiés doivent avoir accès à cette ressource. C’est ce qui empêche réellement 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 notre fichier de mot de passe était « /etc/phpmyadmin/.htpasswd
”. Nous pouvons maintenant créer ce fichier et lui transmettre un utilisateur initial avec l’utilitaire htpasswd
:
- sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
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 souhaitez entrer un utilisateur supplémentaire, vous devez le faire sans l’indicateur -c
, comme ceci :
- sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Maintenant, lorsque vous accédez à votre sous-répertoire phpMyAdmin, vous serez invité à saisir le nom de compte et le mot de passe supplémentaires que vous venez de configurer:
https://domain_name_or_IP/phpmyadmin
Après avoir entré l’authentification Apache, vous serez redirigé vers la page d’authentification phpMyAdmin standard pour entrer vos autres informations d’identification. Cela ajoutera une couche de sécurité supplémentaire puisque phpMyAdmin a souffert de vulnérabilités dans le passé.
Conclusion
Vous devriez maintenant avoir phpMyAdmin configuré et prêt à être utilisé 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 comme la suppression et la modification des structures et des données.