複数の仮想ホスト環境で作業しています。 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>
エイリアス宣言を削除します
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を再起動して変更を有効にします。
RHEL/CentOSでは、Apacheは/etc/httpd/conf.d/phpmyadmin.confをロードして/ phpmyadminエイリアスを設定します。 Directoryディレクティブも最初はlocalhostからのトラフィックのみを許可するように設定されているため、「domain.com/phpmyadmin」のような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
次に、エイリアスディレクティブをvhostに追加し、Apacheを再起動します。
これは最も安全な実装ではないことに注意してください。認証、IP制限、またはその両方の組み合わせにより、/ phpmyadminを保護するように注意してください。