I'm working on a multiple virtualhost Environment. I've installed PhpMyadmin for Mysql Remote Control.
Environment is configurate as below:
one.domain.com
two.domain.com
onlyphpmyadmin.domain.com
Now, if i accesso to one of the three domains
http://one.domain.com/phpmyadmin/
http://two.domein.com/phpmyadmin/
http://onlyphpmyadmin.domain.com/phpmyadmin/
the result is the same, the access to Phpmyadmin is allowed.
The goal is to obtain a situation like this one below
http://one.domain.com/phpmyadmin/ --> access denied
http://two.domein.com/phpmyadmin/ --> access denied
http://onlyphpmyadmin.domain.com/phpmyadmin/ -->access allowed
whith no hack similar to
<?php
if($_SERVER['HTTP_HOST'] != 'onlyphpmyadmin.domain.com')
die('access denied');
...
?>
on some Phpmyadmin file.
Here my Phpmyadmin configuration file
Alias /phpmyadmin /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>
Remove the Alias declaration
from the server context and put it in the relevant vhost context
It may be easier and preferable to just include the whole phpmyadmin config into the relevant vhost
and then remove that include from the server context and restart apache for the changes to take affect.
In RHEL/CentOS, Apache loads /etc/httpd/conf.d/phpmyadmin.conf to set up the /phpmyadmin alias. The Directory directive is also initially set to only allow traffic from localhost, so you may receive a 403 error when accessing phpmyadmin like "domain.com/phpmyadmin".
Using the following, you can set up RHEL/CentOS to only allow the /phpmyadmin alias to work from a specific virtual host.
/etc/httpd/conf.d/phpmyadmin.conf
Next, add the alias directive to your vhost and restart Apache.
Please note, this is not the most secure implementation. Please take care to secure /phpmyadmin through authentication, IP restrictions or a combination of both.