Chỉ cho phép truy cập vào PhpMyadmin trên một máy chủ ảo được chỉ định


9

Tôi đang làm việc trên nhiều môi trường virtualhost. Tôi đã cài đặt PhpMyadmin cho Điều khiển từ xa Mysql.

Môi trường được cấu hình như sau:

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

Bây giờ, nếu tôi truy cập vào một trong ba tên miền

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

kết quả là như nhau, quyền truy cập vào Phpmyadmin được cho phép.

Mục tiêu là để có được một tình huống như thế này dưới đây

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

không có hack tương tự như

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

 ...
 ?>

trên một số tệp Phpmyadmin.


Đây là tập tin cấu hình Phpmyadmin của tôi

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>

Câu trả lời:


25

Xóa khai báo bí danh

Alias /phpmyadmin /usr/share/phpmyadmin

từ bối cảnh máy chủ và đặt nó trong bối cảnh vhost có liên quan

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

Có thể dễ dàng hơn và tốt hơn là chỉ bao gồm toàn bộ cấu hình phpmyadmin vào vhost có liên quan

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

và sau đó loại bỏ bao gồm từ bối cảnh máy chủ và khởi động lại apache để những thay đổi có ảnh hưởng.


Dường như không hoạt động với tôi trên Centos 6.5. Tôi đã thử cả hai phương pháp và vẫn có thể truy cập nó từ tất cả các miền.
Jeremy

Hãy nhớ khởi động lại Apache2 sau khi thay đổi cấu hình của nó và cuối cùng thêm một cấu hình CNAME mới vào cấu hình DNS
realtebo

3

Trong RHEL / CentOS, Apache tải /etc/httpd/conf.d/phpmyadmin.conf để thiết lập bí danh / phpmyadmin. Lệnh Directory ban đầu cũng được đặt thành chỉ cho phép lưu lượng truy cập từ localhost, do đó bạn có thể nhận được lỗi 403 khi truy cập phpmyadmin như "domain.com/phpmyadmin".

Sử dụng cách sau, bạn có thể thiết lập RHEL / CentOS để chỉ cho phép bí danh / phpmyadmin hoạt động từ một máy chủ ảo cụ thể.

/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

Tiếp theo, thêm chỉ thị bí danh vào vhost của bạn và khởi động lại Apache.

Xin lưu ý, đây không phải là triển khai an toàn nhất. Hãy cẩn thận để bảo mật / phpmyadmin thông qua xác thực, hạn chế IP hoặc kết hợp cả hai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.