只允许在指定的虚拟主机上访问PhpMyadmin

我正在开发一个多虚拟主机环境。 我已经安装了Mysql Remote Control的PhpMyadmin。

环境configuration如下:

one.domain.com two.domain.com onlyphpmyadmin.domain.com 

现在,如果我accesso三个领域之一

 http://one.domain.com/phpmyadmin/ http://two.domein.com/phpmyadmin/ http://onlyphpmyadmin.domain.com/phpmyadmin/ 

结果是一样的,允许访问Phpmyadmin。

目标是获得如下这样的情况

 http://one.domain.com/phpmyadmin/ --> access denied http://two.domein.com/phpmyadmin/ --> access denied http://onlyphpmyadmin.domain.com/phpmyadmin/ -->access allowed 

没有类似的破解

 <?php if($_SERVER['HTTP_HOST'] != 'onlyphpmyadmin.domain.com') die('access denied'); ... ?> 

在一些Phpmyadmin文件。


在这里我的Phpmyadminconfiguration文件

 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> 

删除别名声明

 Alias /phpmyadmin /usr/share/phpmyadmin 

从服务器的上下文,并把它放在相关的虚拟主机上下文中

 <VirtualHost *:80> ServerName onlyphpmyadmin.domain.com . . . Alias /phpmyadmin /usr/share/phpmyadmin </VirtualHost> 

将整个phpmyadminconfiguration包含到相关的虚拟主机中可能会更简单,更可取

 <VirtualHost *:80> ServerName onlyphpmyadmin.domain.com . . . include /path/to/phpmyadmin.conf </VirtualHost> 

然后从服务器上下文中删除包含的内容,然后重新启动apache以使更改生效。

在RHEL / CentOS中,Apache加载/etc/httpd/conf.d/phpmyadmin.conf来设置/ phpmyadmin别名。 Directory指令最初也被设置为仅允许来自本地主机的stream量,因此访问phpmyadmin(如“domain.com/phpmyadmin”)时可能会收到403错误。

使用以下命令,可以将RHEL / CentOS设置为仅允许/ phpmyadmin别名从特定的虚拟主机运行。

/etc/httpd/conf.d/phpmyadmin.conf

 <Directory "/usr/share/phpmyadmin"> # Order Deny,Allow # Deny from all Allow from 127.0.0.1 </Directory> #Alias /phpmyadmin /usr/share/phpmyadmin #Alias /phpMyAdmin /usr/share/phpmyadmin #Alias /mysqladmin /usr/share/phpmyadmin 

接下来,将alias指令添加到您的虚拟主机,并重新启动Apache。

请注意,这不是最安全的实现。 请注意通过身份validation,IP限制或两者的组合来保护/ phpmyadmin。