Дозволити доступ до PhpMyadmin лише на вказаному віртуальному хості


9

Я працюю над декількома середовищами virtualhost. Я встановив PhpMyadmin для дистанційного керування Mysql.

Навколишнє середовище конфігурується так:

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

Тепер, якщо я доступ до одного з трьох доменів

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.


Тут мій файл конфігурації Phpmyadmin

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>

Відповіді:


25

Видаліть декларацію про псевдонім

Alias /phpmyadmin /usr/share/phpmyadmin

з серверного контексту і помістити його у відповідний контекст vhost

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

Можливо, буде простіше і бажано просто включити весь конфігурацію phpmyadmin у відповідний vhost

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

а потім видаліть, що включає в себе серверний контекст, і перезапустіть apache, щоб зміни вплинули.


Здається, він не працює на Centos 6.5. Я спробував обидва способи і досі маю доступ до нього з усіх доменів.
Джеремі

Не забудьте перезапустити Apache2 після зміни конфігурації та врешті-решт додати новий CNAME до конфігурації DNS
realtebo

3

У RHEL / CentOS Apache завантажує /etc/httpd/conf.d/phpmyadmin.conf для налаштування псевдоніма / phpmyadmin. Директива Директорії також спочатку налаштована так, щоб дозволяти лише трафік з localhost, тому ви можете отримати помилку 403 під час доступу до phpmyadmin типу "domain.com/phpmyadmin".

Використовуючи наведене нижче, ви можете налаштувати 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

Далі додайте директиву псевдоніму до свого vhost та перезапустіть Apache.

Зауважте, це не найбезпечніша реалізація. Будь ласка, подбайте про безпеку / phpmyadmin через автентифікацію, обмеження IP або комбінацію обох.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.