Izinkan akses ke PhpMyadmin hanya di virtualhost yang ditentukan

9

Saya sedang mengerjakan beberapa virtualhost Environment. Saya telah menginstal PhpMyadmin untuk Remote Control Mysql.

Lingkungan dikonfigurasi seperti di bawah ini:

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

Sekarang, jika saya mengakses salah satu dari tiga domain

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

hasilnya sama, akses ke Phpmyadmin diizinkan.

Tujuannya adalah untuk mendapatkan situasi seperti ini di bawah ini

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

tanpa peretasan yang mirip dengan

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

 ...
 ?>

pada beberapa file Phpmyadmin.


Di sini file konfigurasi Phpmyadmin saya

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>
alesdario
sumber

Jawaban:

25

Hapus deklarasi Alias

Alias /phpmyadmin /usr/share/phpmyadmin

dari konteks server dan memasukkannya ke dalam konteks vhost yang relevan

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

Mungkin lebih mudah dan lebih baik untuk hanya menyertakan seluruh konfigurasi phpmyadmin ke vhost yang relevan

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

dan kemudian hapus yang termasuk dari konteks server dan restart apache untuk perubahan yang akan terjadi.

user9517
sumber
Sepertinya tidak bekerja untuk saya di Centos 6.5. Saya mencoba kedua metode dan masih dapat mengaksesnya dari semua domain.
Jeremy
Ingatlah untuk memulai kembali Apache2 setelah mengubah konfigurasinya dan pada akhirnya menambahkan CNAME baru ke konfigurasi DNS
realtebo
3

Di RHEL / CentOS, Apache memuat /etc/httpd/conf.d/phpmyadmin.conf untuk mengatur alias / phpmyadmin. Arahan Direktori pada awalnya juga diatur untuk hanya mengizinkan lalu lintas dari localhost, jadi Anda mungkin menerima kesalahan 403 saat mengakses phpmyadmin seperti "domain.com/phpmyadmin".

Dengan menggunakan yang berikut ini, Anda dapat mengatur RHEL / CentOS untuk hanya mengizinkan / phpmyadmin alias untuk bekerja dari virtual host tertentu.

/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

Selanjutnya, tambahkan arahan alias ke vhost Anda dan mulai ulang Apache.

Harap dicatat, ini bukan implementasi yang paling aman. Harap berhati-hati untuk mengamankan / phpmyadmin melalui otentikasi, pembatasan IP, atau kombinasi keduanya.

Liam
sumber