6° Sécurisation phpMyAdmin

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

ServerName mysqladmin.monsite.com
ServerAlias mysqladmin.monsite.com
DocumentRoot /usr/share/phpmyadmin

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 :

ServerName mysqladmin.monsite.com
ServerAlias mysqladmin.monsite.com
DocumentRoot /usr/share/phpmyadmin
        
AllowOverride All        

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

require valid-user

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