केवल एक निर्दिष्ट वर्चुअलहोस्ट पर PhpMyadmin का उपयोग करने की अनुमति दें


9

मैं एक कई virtualhost पर्यावरण पर काम कर रहा हूँ। मैंने MySQL रिमोट कंट्रोल के लिए PhpMyadmin स्थापित किया है।

पर्यावरण नीचे के रूप में कॉन्फ़िगर किया गया है:

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

whith कोई हैक के समान

<?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>

और फिर सर्वर संदर्भ से शामिल करें और परिवर्तनों को प्रभावित करने के लिए अपाचे को पुनरारंभ करें।


Centos 6.5 पर मेरे लिए काम करने के लिए प्रतीत नहीं होता। मैंने दोनों तरीकों की कोशिश की और अभी भी सभी डोमेन से इसे एक्सेस करने में सक्षम हूं।
जेरेमी

अपने कॉन्फ़िगरेशन को बदलने के बाद Apache2 को फिर से शुरू करना और अंततः DNS कॉन्फिग में नया CNAME जोड़ना याद रखें
realtebo

3

RHEL / CentOS में, Apache / phpmyadmin उपनाम सेट करने के लिए /etc/httpd/conf.d/phpmyadmin.conf लोड करता है। डायरेक्टरी निर्देश भी शुरू में केवल लोकलहोस्ट से ट्रैफ़िक की अनुमति देने के लिए निर्धारित है, इसलिए आपको phpmyadmin जैसे "domain.com/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 में उपनाम निर्देश जोड़ें और अपाचे को पुनरारंभ करें।

कृपया ध्यान दें, यह सबसे सुरक्षित कार्यान्वयन नहीं है। कृपया प्रमाणीकरण, आईपी प्रतिबंध या दोनों के संयोजन के माध्यम से सुरक्षित / phpmyadmin का ध्यान रखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.