Consentire l'accesso a PhpMyadmin solo su un host virtuale specificato


9

Sto lavorando su un ambiente con più host virtuali. Ho installato PhpMyadmin per Mysql Remote Control.

L'ambiente è configurato come di seguito:

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

Ora, se accedo a uno dei tre domini

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

il risultato è lo stesso, l'accesso a Phpmyadmin è consentito.

L'obiettivo è ottenere una situazione come questa qui sotto

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

con nessun hack simile a

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

 ...
 ?>

su alcuni file Phpmyadmin.


Qui il mio file di configurazione di 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>

Risposte:


25

Rimuovi la dichiarazione Alias

Alias /phpmyadmin /usr/share/phpmyadmin

dal contesto del server e inserirlo nel contesto vhost pertinente

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

Potrebbe essere più semplice e preferibile includere l'intera configurazione di phpmyadmin nel vhost pertinente

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

e quindi rimuovilo dal contesto del server e riavvia apache affinché le modifiche abbiano effetto.


Non sembra funzionare per me su Centos 6.5. Ho provato entrambi i metodi e sono ancora in grado di accedervi da tutti i domini.
Jeremy,

Ricorda di riavviare Apache2 dopo aver modificato la sua configurazione ed eventualmente aggiungere un nuovo CNAME alla configurazione DNS
realtebo

3

In RHEL / CentOS, Apache carica /etc/httpd/conf.d/phpmyadmin.conf per configurare l'alias / phpmyadmin. La direttiva Directory è inizialmente impostata per consentire solo il traffico proveniente da localhost, quindi potresti ricevere un errore 403 quando accedi a phpmyadmin come "domain.com/phpmyadmin".

Utilizzando quanto segue, è possibile impostare RHEL / CentOS per consentire all'alias / phpmyadmin di funzionare solo da un host virtuale specifico.

/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

Successivamente, aggiungi la direttiva alias al tuo vhost e riavvia Apache.

Questa non è l'implementazione più sicura. Assicurati di proteggere / phpmyadmin tramite autenticazione, restrizioni IP o una combinazione di entrambi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.