Erlauben Sie den Zugriff auf PhpMyadmin nur auf einem angegebenen virtuellen Host

9

Ich arbeite an einer Umgebung mit mehreren virtuellen Hosts. Ich habe PhpMyadmin für MySQL Remote Control installiert.

Die Umgebung ist wie folgt konfiguriert:

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

Nun, wenn ich auf eine der drei Domänen zugreife

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

Das Ergebnis ist das gleiche, der Zugriff auf Phpmyadmin ist erlaubt.

Das Ziel ist es, eine Situation wie die folgende zu erhalten

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

mit keinem ähnlichen Hack

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

 ...
 ?>

auf einer Phpmyadmin-Datei.


Hier meine Phpmyadmin Konfigurationsdatei

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
quelle

Antworten:

25

Entfernen Sie die Alias-Deklaration

Alias /phpmyadmin /usr/share/phpmyadmin

aus dem Serverkontext und setzen Sie es in den relevanten vhost-Kontext

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

Es kann einfacher und vorzuziehen sein, nur die gesamte phpmyadmin-Konfiguration in den entsprechenden vhost aufzunehmen

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

Entfernen Sie dann das Include aus dem Serverkontext und starten Sie Apache neu, damit die Änderungen wirksam werden.

user9517
quelle
Scheint bei Centos 6.5 nicht für mich zu funktionieren. Ich habe beide Methoden ausprobiert und kann trotzdem von allen Domänen aus darauf zugreifen.
Jeremy
Denken Sie daran, Apache2 nach Änderung der Konfiguration neu zu starten und schließlich einen neuen CNAME zur DNS-Konfiguration hinzuzufügen
Realtebo
3

In RHEL / CentOS lädt Apache /etc/httpd/conf.d/phpmyadmin.conf, um den Alias ​​/ phpmyadmin einzurichten. Die Directory-Direktive ist anfangs auch so eingestellt, dass nur Datenverkehr von localhost zugelassen wird, sodass beim Zugriff auf phpmyadmin wie "domain.com/phpmyadmin" möglicherweise ein 403-Fehler angezeigt wird.

Mit den folgenden Methoden können Sie RHEL / CentOS so einrichten, dass nur der Alias ​​/ phpmyadmin von einem bestimmten virtuellen Host aus funktioniert.

/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

Fügen Sie als Nächstes die Alias-Direktive zu Ihrem vhost hinzu und starten Sie Apache neu.

Bitte beachten Sie, dass dies nicht die sicherste Implementierung ist. Bitte achten Sie darauf, / phpmyadmin durch Authentifizierung, IP-Einschränkungen oder eine Kombination aus beiden zu sichern.

Liam
quelle