指定した仮想ホストでのみPhpMyadminへのアクセスを許可する


9

複数の仮想ホスト環境で作業しています。Mysql Remote Control用のPhpMyadminをインストールしました。

環境は以下のように構成されています。

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

ここで、3つのドメインのいずれかにアクセスすると

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

サーバーコンテキストから、関連する仮想ホストコンテキストに配置します

<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では動作しないようです。両方の方法を試しましたが、すべてのドメインからアクセスできました。
ジェレミー

構成を変更し
たら

3

RHEL / CentOSでは、Apacheは/etc/httpd/conf.d/phpmyadmin.confをロードして/ phpmyadminエイリアスを設定します。Directoryディレクティブも最初はlocalhostからのトラフィックのみを許可するように設定されているため、 "domain.com/phpmyadmin"のようなphpmyadminにアクセスすると403エラーが表示される場合があります。

以下を使用して、特定の仮想ホストからの/ phpmyadminエイリアスのみの動作を許可するようにRHEL / CentOSを設定できます。

/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を再起動します。

これが最も安全な実装ではないことに注意してください。認証、IP制限、またはその両方の組み合わせによって/ phpmyadminを保護するように注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.