Sécurisation accès phpmyadmin : pas d'alias général

Bijour à tous.

Je viens de terminer l’installation de mon serveur avec une debian wheezy 7.4.
En suivant ce tuto howtoforge.com/perfect-serve … spconfig-3

Tout s’est bien passé pas de soucis.
Toutefois, je souhaiterais sécuriser l’accès à phpmyadmin.

Aujourd’hui, il est accessible par l’url site.com/phpmyadmin sur l’ensemble des sites qui seront hébergés sur le serveur.
Un lien symbolique a été créé pour charger la configuration de base (ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf)
Pour sécuriser un peu, j’ai changé l’alias de base /phpmyadmin par un truc un peu plus aléatoire.

Néanmoins cette solution me satisfait moyennement.
Dans l’idéal je souhaiterais qu’aucun site ne puisse accéder à phpmyadmin, sauf le serveurName de base du serveur (ns.blabla.com par exemple).

J’ai essayé de créer pour cela un fichier phpmyadmin.conf dans sites-available, puis d’activer cette conf via a2ensite mais ça ne marche à priori pas.
Voila le contenu du fichier phpmyadmin.conf que j’ai voulu créer :

# phpMyAdmin default Apache configuration

<VirtualHost *:80>
<Directory /usr/share/phpmyadmin>
       ServerName ns.blabla.com
       DocumentRoot /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_admin_flag allow_url_fopen Off
                php_value include_path .
                php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
                php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
        </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authn_file.c>
    AuthType Basic
    AuthName "phpMyAdmin Setup"
    AuthUserFile /etc/phpmyadmin/htpasswd.setup
    </IfModule>
    Require valid-user
</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>
</VirtualHost>

Quelqu’un peut-il m’indiquer ce qui ne va pas dans ce que je fait ?

Merki

Je dirais que ton servername est mal placé, il ne doit pas etre dans le directory mais directement dans le virtualhost
j aurai plus ecrit qqchose comme cela :

<VirtualHost *:80>
   ServerName ns.blabla.com

   DocumentRoot /var/www
   ErrorLog "|/usr/bin/cronolog /var/log/apache2/phpmyadmin/%Y/%m/error_log"
   CustomLog "|/usr/bin/cronolog /var/log/apache2/phpmyadmin/%Y/%m/access_log" combined

   Alias /admindemadb /usr/share/phpmyadmin
   Include /etc/phpmyadmin/apache.conf
   Options -Indexes

</VirtualHost>

Ensuite le fichier /etc/phpmyadmin/apache.conf

# phpMyAdmin default Apache configuration

#Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
        Options Indexes FollowSymLinks
        DirectoryIndex index.php

        # Authorize for setup
        <Files setup.php>
            # For Apache 1.3 and 2.0
            <IfModule mod_auth.c>
                AuthType Basic
                AuthName "phpMyAdmin Setup"
                AuthUserFile /etc/phpmyadmin/htpasswd.setup
            </IfModule>
            # For Apache 2.2
            <IfModule mod_authn_file.c>
                AuthType Basic
                AuthName "phpMyAdmin Setup"
                AuthUserFile /etc/phpmyadmin/htpasswd.setup
            </IfModule>
            Require valid-user
        </Files>
        <IfModule mod_php4.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_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>
</Directory>

ton phpmyadmin sera alors accessible depuis
ns.blabla.com/admindemadb

Verifie dans ton /etc/apache2/conf.d que tu n as pas un fichier phpmyadmin.conf de loader aussi et qui écraserait ta configuration

@ivanb : merci pour ta réponse qui m’a mis sur la bonne voie.
Je pense avoir réussi.

En fait voici ce que j’ai fait finalement.
J’ai simplement édité le fichier /etc/phpmyadmin/apache.conf en incluant son contenu dans un virtualhost avec l’instruction servername pour restreindre l’accès.
Ce qui donne :

# phpMyAdmin default Apache configuration
<VirtualHost *:80>
ServerName ns.blabla.com
Alias /monaliasperso /usr/share/phpmyadmin

<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_admin_flag allow_url_fopen Off
                php_value include_path .
                php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
                php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
        </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authn_file.c>
    AuthType Basic
    AuthName "phpMyAdmin Setup"
    AuthUserFile /etc/phpmyadmin/htpasswd.setup
    </IfModule>
    Require valid-user
</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>

</VirtualHost>

Avec cette configuration les sites n’ont pas accès à phpmyadmin. Seul mon domaine “par défaut” y a accès.