อนุญาตการเข้าถึง PhpMyadmin บน virtualhost ที่ระบุเท่านั้น


9

ฉันกำลังทำงานกับ virtualhost Environment หลายตัว ฉันได้ติดตั้ง 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 ฉันลองทั้งสองวิธีและยังสามารถเข้าถึงได้จากทุกโดเมน
Jeremy

อย่าลืมรีสตาร์ท Apache2 หลังจากเปลี่ยนการกำหนดค่าและในที่สุดก็เพิ่ม CNAME ใหม่ให้กับการกำหนดค่า DNS
realtebo

3

ใน RHEL / CentOS Apache โหลด /etc/httpd/conf.d/phpmyadmin.conf เพื่อตั้งค่านามแฝง / phpmyadmin ไดเร็กตอรี่ไดเรกทอรีนั้นถูกตั้งค่าเป็นอนุญาตเฉพาะทราฟฟิกจากโลคอลโฮสต์, ดังนั้นคุณอาจได้รับข้อผิดพลาด 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 หรือทั้งสองอย่างรวมกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.