首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只允许在指定的虚拟主机上访问PhpMyadmin

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

Server Fault用户
提问于 2013-03-13 08:06:28
回答 2查看 51.2K关注 0票数 10

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

环境配置如下:

代码语言:javascript
复制
one.domain.com
two.domain.com
onlyphpmyadmin.domain.com

现在,如果我加入了三个域中的一个

代码语言:javascript
复制
http://one.domain.com/phpmyadmin/
http://two.domein.com/phpmyadmin/
http://onlyphpmyadmin.domain.com/phpmyadmin/

结果是相同的,允许访问Phpmyadmin。

我们的目标是获得下面这样的情况

代码语言:javascript
复制
http://one.domain.com/phpmyadmin/ --> access denied
http://two.domein.com/phpmyadmin/ --> access denied 
http://onlyphpmyadmin.domain.com/phpmyadmin/ -->access allowed

没有类似的黑客

代码语言:javascript
复制
<?php 
if($_SERVER['HTTP_HOST'] != 'onlyphpmyadmin.domain.com')
die('access denied');

 ...
 ?>

在一些Phpmyadmin文件上。

这里是我的Phpmyadmin配置文件

代码语言:javascript
复制
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>
EN

回答 2

Server Fault用户

回答已采纳

发布于 2013-03-13 08:26:46

删除别名声明

代码语言:javascript
复制
Alias /phpmyadmin /usr/share/phpmyadmin

,并将其放入相关的vhost上下文中。

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName onlyphpmyadmin.domain.com
    .
    .
    .
    Alias /phpmyadmin /usr/share/phpmyadmin
</VirtualHost>

将整个phpmyadmin配置包含到相关的vhost中可能更容易,也更可取。

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName onlyphpmyadmin.domain.com
    .
    .
    .
    include /path/to/phpmyadmin.conf
</VirtualHost>

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

票数 26
EN

Server Fault用户

发布于 2014-08-03 16:01:36

在RHEL/CentOS中,Apache加载/etc/httpd/conf.d/phpmyadmin.conf来设置/phpmyadmin别名。Directory指令最初还被设置为只允许来自本地主机的通信,因此在访问phpmyadmin时可能会收到一个403错误,比如"domain.com/phpmyadmin“。

使用以下方法,您可以设置RHEL/CentOS,使其只允许/phpmyadmin别名从特定的虚拟主机上工作。

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

代码语言:javascript
复制
<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

接下来,将别名指令添加到vhost并重新启动Apache。

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

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/487335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档