Rappelons d'abord que phpMyAdmin est une application web et une interface qui permet de gérer les bases de données MySQL et MariaDB,
Comme nous l'avons vu et testé précédemment, phpMyAdmin est accessible via l'adresse IP du serveur et sans https, ce qui n'est pas forcement très bien en terme de sécurité.
L'idée est d'utiliser un sous-domaine en https afin de le sécuriser.
Voilà les manipulations à faire pour changer cela :
1°/ Désactiver l’accès via l’adresse par défaut.
sudo nano /etc/phpmyadmin/apache.conf
Commenter la ligne :
Alias /phpmyadmin /usr/share/phpmyadmin
=>
#Alias /phpmyadmin /usr/share/phpmyadmin
Sauvegarder le fichier.
Dans le répertoire /etc/apache2/sites-available/
créer un fichier .conf pour un nouveau site :
sudo nano mysqladmin.monsite.com.conf
<VirtualHost *:80>
ServerName mysqladmin.monsite.com
ServerAlias mysqladmin.monsite.com
DocumentRoot /usr/share/phpmyadmin
<Directory "/usr/share/phpmyadmin">
</Directory>
</VirtualHost>
sudo a2ensite mysqladmin.monsite.com
sudo systemctl restart apache2
Maintenant vous devriez pouvoir accéder à phpMyAdmin par :
http://mysqladmin.monsite.com
Maintenant il faut ajouter le https :
sudo certbot --apache
puis choisir le numéro de mysql.monsite.com dans la liste.
Maintenant l'accès s'effectue par :
https://mysqladmin.monsite.com
Vous pouvez ajouter une protection supplémentaire par mot de passe.
Pour cela modifier le fichier .conf avec la directive "AllowOverride All" comme ci-dessous :
<VirtualHost *:80>
ServerName mysqladmin.monsite.com
ServerAlias mysqladmin.monsite.com
DocumentRoot /usr/share/phpmyadmin
<Directory "/usr/share/phpmyadmin">
AllowOverride All
</Directory>
</VirtualHost>
Puis dans le répertoire de phpmyadmin :
sudo nano /usr/share/phpmyadmin/.htaccess
puis :
AuthUserFile /usr/share/phpmyadmin/.htpasswd
AuthName "Password Protected Area"
AuthType Basic
<limit GET POST>
require valid-user
</limit>
et enfin créer le mot de passe avec la commande :
sudo htpasswd -c /usr/share/phpmyadmin/.htpasswd username
puis redémarrer Apache afin de prendre en compte la modification :
sudo service apache2 restart