Installation et sécurisation de PhpMyAdmin sous Debian Wheezy

La première étape consiste à installer les paquets nécessaires:

apt-get install phpmyadmin

Puis à éditer le fichier suivant:

pico /etc/apache2/apache2.conf

pour y ajouter à la fin la ligne suivante:

Include /etc/phpmyadmin/apache.conf

Redémarrer ensuite Apache:

service apache2 restart

PhpMyAdmin est maintenant installé et accessible via: http://votre.serveur.url/phpmyadmin

Passons à la partie sécurisation. Nous allons tout d'abord le protéger avec un fichier htaccess:

Editer le fichier suivant:

pico /etc/phpmyadmin/apache.conf

pour y ajouter AllowOverride All sous DirectoryIndex, de façon à ce qu'il ressemble à ceci

<Directory /usr/share/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php
        AllowOverride All
        [...]

Créons ensuite le fichier htaccess

/usr/share/phpmyadmin/.htaccess

contenant les données suivantes:

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

Créons maintenant le fichier avec les données d'authentification (username étant le nom souhaité pour le login) et suivez les instructions (permettant de définir le mot de passe):

htpasswd -c /usr/share/phpmyadmin/.htpasswd username

Il convient en suite de redémarrer Apache

service apache2 restart

Enfin, nous allons faire en sorte de systématiquement rediriger vers une connexion SSL lors de l'accès à PhpMyAdmin, afin d'éviter que les mots de passe soient transmis en clair.

Si votre serveur n'est pas configuré pour utiliser SSL, il faudra créer un certificat (par exemple autosigné si l'usage est purement interne). Voici très rapidement les étapes à suivre:

a2enmod ssl
    service apache2 restart
    mkdir /etc/apache2/ssl
    openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Editer le fichier de configuration Apache

    pico /etc/apache2/sites-available/default


Ajout de ce qui suit dans la section <VirtualHost *:443>

SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key


Editez ensuite le fichier suivant:

pico /etc/phpmyadmin/config.inc.php

pour y ajouter à la fin:

$cfg['ForceSSL'] = true;

Il ne reste plus qu'à redémarrer Apache

service apache2 restart

Vous disposez maintenant d'un accès PhpMyAdmin raisonnablement sécurisé.

Il est dans tous les cas déconseillé de se connecter à PhpMyAdmin avec l'utilisateur root de MySQL.