IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Installer un serveur dédié sous Ubuntu Serveur

Date de publication : 09 décembre 2011.


V. PhpMyAdmin pour administrer MySQL
V-A. Installation
V-B. Configuration


V. PhpMyAdmin pour administrer MySQL

Nous y voilà, le serveur web et le serveur de bases de données étant configurés, nous allons déployer PhpMyAdmin afin de pouvoir administrer nos bases mais également vérifier le bon fonctionnement de notre installation (Web, MySQL et SSL)


V-A. Installation

Tout d'abord, installons PhpMyAdmin :

sudo apt-get install phpmyadmin
installation phpmyadmin etape 1 : choix du serveur apache2
Choix du serveur web : Apache2
warning Si vous appuyez directement sur Entrée, votre choix ne sera pas pris en compte
Sélectionnez tout d'abord apache2 en appyant sur la barre espace puis, une fois apache2 marquée d'une étoile, validez avec Entrée.
installation phpmyadmin etape 2 : dbconfig-common oui
Configurer avec dbconfig-common ? Oui
Choisissez "oui"

installation phpmyadmin etape 3 : mot de passe MySQL
Mot de passe de l'administrateur MySQL
Veuillez saisir ici le mot de passe correspondant au compte root de MySQL, ce mot de passe permettra à l'interface PhpMyAdmin de se connecter aux bases de données.

installation phpmyadmin etape 4 : mot de passe phpmyadmin
Mot de passe de l'administrateur phpmyadmin
Ce mot de passe correspondra à celui demandé pour se connecter à phpmyadmin. Pour des raisons de sécurité, il est préférable de ne pas définir un mot de passe vide. Bien entendu, vous confirmez également votre mot de passe.

L'assistant d'installation étant terminé, tentons de nous connecter à phpmyadmin via votre navigateur Web, il devrait être accessible depuis monsite.fr/phpmyadmin

Curieusement, vous constaterez que vous pouvez vous connecter en root via le mot de passe MySQL et non celui de phpmyadmin. Pour remédier à cela, une fois loggé, nous allons modifier le mot de passe.

installation phpmyadmin etape 5 : modification mot de passe phpmyadmin
Modifier le mot de passe
Une fois le mot de passe changé, occupons nous de la configuration afin d'activer certaines fonctionnalités et de sécuriser tout cela.

Tout d'abord, définissons un utilisateur et son mot de passe afin de limiter les accès.

sudo htpasswd /etc/phpmyadmin/htpasswd.setup monadmin
Cependant, un compte admin existait déjà dans le fichier, nous allons donc l'éditer afin de le retirer :

sudo nano /etc/phpmyadmin/htpasswd.setup
Supprimez la ligne Admin:* (mettez vous sur la première ligne puis raccourci Ctrl+K)

L'installation faite, nous pouvons passer à la partie configuration.


V-B. Configuration

Celle-ci peut se faire selon deux méthodes :

La première méthode serait de passer via l'interface de configuration disponible via monsite.fr/phpmyadmin/setup après l'exécution de la commande sudo /usr/sbin/pma-configure. N'oubliez pas alors de finaliser la configuration via sudo /usr/sbin/pma-secure
La deuxième méthode (celle que l'on utilisera dans ce tutoriel) consiste à modifier manuellement les fichiers de configuration.

Commençons tout d'abord par écraser la configuration principale suivante :

sudo nano /etc/phpmyadmin/config.inc.php

<?php
/**
 * Configuration du serveur
 */
$i = 0;
// The $cfg['Servers'] array starts with $cfg['Servers'][1].  Do not use $cfg['Servers'][0].
// You can disable a server config entry by setting host to ''.

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* End of servers configuration */

$cfg['UploadDir'] = './upload';
$cfg['SaveDir'] = './save';
$cfg['TempDir'] = './tmp';

$cfg['blowfish_secret'] = 'e3r123rfd4d65sg564d1e23f18zq42s';

$cfg['ForceSSL'] = true;
$cfg['DefaultLang'] = 'fr-utf-8';
$cfg['ServerDefault'] = 1;

/* Features phpmyadmin */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
		    
Voici quelques explications concernant les différents paramètres renseignés :

  • $cfg['blowfish_secret'] définit la chaine de chiffrage pour une authentification par cookie, elle est nécessaire pour le fonctionnement interne de phpmyadmin. Saisissez une chaine de caractère aléatoire complexe (il n'est pas nécessaire de la mémoriser).
  • $cfg['ForceSSL'], lorsque égal à true, interdit toute connexion à phpmyadmin sans sécurisation SSL
  • $cfg['DefaultLang'] détermine la langue et le jeu de caractère à utiliser
info Vous trouverez d'autres informations à ce sujet dans la documentation de phpmyadmin
Afin d'effectuer les opérations qui vont suivre, il peut être nécessaire d'activer temporairement le profil default-ssl d'Apache. A la fin de ce chapitre nous le retirerons.

sudo a2ensite default-ssl


Nous pouvons maintenant nous connecter à phpmyadmin via monsite.fr/phpmyadmin et nous identifier avec le compte root
Pour des raisons de sécurité, nous allons créer un autre utilisateur avec pouvoir afin d'interdire à terme l'utilisation distante de l'utilisateur root.
Pour cela, cliquez sur l'onglet privilèges puis Ajouter un utilisateur, Vous devriez alors arriver sur l'interface suivante :

Créez votre utilisateur pour le serveur local, n'oubliez pas tout cocher dans Privilèges globaux
Ceci étant fait, vérifions que notre nouvel utilisateur fonctionne bien. Connectez-vous avec ce dernier.
Si tout semble bien fonctionner, nous allons dès à présent interdire tout accès à phpmyadmin via l'utilisateur root. Pour cela, rien de plus simple, il nous suffit de modifier le fichier de configuration suivant afin qu'il ressemble à cela :

sudo nano /etc/phpmyadmin/config.inc.php

<?php
/**
 * Server(s) configuration
 */
$i = 0;
// The $cfg['Servers'] array starts with $cfg['Servers'][1].  Do not use $cfg['Servers'][0].
// You can disable a server config entry by setting host to ''.

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* End of servers configuration */

$cfg['UploadDir'] = './upload';
$cfg['SaveDir'] = './save';
$cfg['TempDir'] = './tmp';
$cfg['blowfish_secret'] = 'e3r123rfd4d65sg564d1e23f18zq42s';
$cfg['ForceSSL'] = true;
$cfg['DefaultLang'] = 'fr-utf-8';
$cfg['ServerDefault'] = 1;

/* on interdit tout connexion pour l'utilisateur root : */
$cfg['Servers'][$i]['AllowRoot'] = false;

/* Features phpmyadmin */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
	    
Effectivement, lorsque nous le vérifions, seul notre nouvel utilisateur peut se connecter. Quant à l'utilisateur root, il se fait refuser la connexion.

Toujours pour des raisons de sécurité, nous allons changer le chemin d'accès à phpmyadmin. En effet, les robots ont tendance à scanner les alias connus de phpmyadmin.
Copions donc notre profil apache default-ssl afin de s'en servir comme base de travail pour phpmyadmin.

sudo cp /etc/apache2/sites-available/default-ssl  /etc/apache2/sites-available/monpma.monsite.fr
Puis éditons le afin d'y ajouter quelques modifications :

sudo nano /etc/apache2/sites-available/monpma.monsite.fr

<IfModule mod_ssl.c>

<VirtualHost *:80>
# force la connexion sécurisé SSL via une redirection
    ServerName  monpma.monsite.fr
    Redirect    / https://monpma.monsite.fr
</VirtualHost>

<VirtualHost _default_:443>
        ServerAdmin postmaster@monsite.fr
        ServerName monpma.monsite.fr

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

                <IfModule mod_php5.c>
                        AddType application/x-httpd-php .php

                        php_flag magic_quotes_gpc Off
                        php_flag track_vars On
                        php_flag register_globals Off
                        php_value include_path .
                </IfModule>

                <IfModule mod_authn_file.c>
                        AuthType Basic
                        AuthName "phpMyAdmin Setup"
                        AuthUserFile /etc/phpmyadmin/htpasswd.setup
                </IfModule>
                Require valid-user

        </Directory>

        # Disallow web access for setup
        <Directory /usr/share/phpmyadmin/setup>
            Order Deny,Allow
            Deny from All
        </Directory>

        # Disallow web access to directories that don't need it
        <Directory /usr/share/phpmyadmin/libraries>
            Order Deny,Allow
            Deny from All
        </Directory>
        <Directory /usr/share/phpmyadmin/setup/lib>
            Order Deny,Allow
            Deny from All
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/phpmyadmin_error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/phpmyadmin_access.log combined

        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
                Options Indexes MultiViews FollowSymLinks
                AllowOverride None
                Order deny,allow
                Deny from all
                Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>

        #   SSL Engine Switch:
        #   Enable/Disable SSL for this virtual host.
        SSLEngine on
        
        [...]
Nous gardons toute la partie qui suit SSLEngine tel que définit lors de la configuration du certificat SSL.

Notre configuration réalisé, il ne nous reste plus qu'à remplacer celle par défaut par celle-ci.
Activons tout d'abord notre virtual host et désactivons default-ssl, puis désactivons l'accès par défaut et relançons Apache afin que les changements soient pris en compte :

sudo a2ensite monpma.monsite.fr
sudo a2dissite default-ssl
sudo rm /etc/apache2/conf.d/phpmyadmin.conf
sudo /etc/init.d/apache2 restart 
PhpMyAdmin est maintenant pleinement opérationnel et sécurisé.

 

Valid XHTML 1.0 TransitionalValid CSS!

Copyright © 2011 Benjamin GAGNEUX. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.