지정된 가상 호스트에서만 PhpMyadmin에 대한 액세스 허용


9

여러 가상 호스트 환경에서 작업하고 있습니다. Mysql Remote Control 용 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

비슷한 해킹이 없습니다

<?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 설정을 관련 호스트에 포함시키는 것이 더 쉽고 바람직 할 수 있습니다.

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

그런 다음 서버 컨텍스트에서 해당 포함을 제거하고 아파치를 다시 시작하여 변경 사항을 적용하십시오.


Centos 6.5에서 작동하지 않는 것 같습니다. 두 방법을 모두 시도했지만 여전히 모든 도메인에서 액세스 할 수 있습니다.
Jeremy

변경 후 구성을 아파치를 다시 시작하는 것을 잊지 결국 DNS의 설정에 새 CNAME을 추가
realtebo

3

RHEL / CentOS에서 Apache는 /etc/httpd/conf.d/phpmyadmin.conf를로드하여 / phpmyadmin 별칭을 설정합니다. Directory 지시어는 초기에 localhost로부터의 트래픽 만 허용하도록 설정되어 있으므로 "domain.com/phpmyadmin"과 같은 phpmyadmin에 액세스 할 때 403 오류가 발생할 수 있습니다.

다음을 사용하여 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를 다시 시작하십시오.

가장 안전한 구현은 아닙니다. 인증, IP 제한 또는이 둘의 조합을 통해 / phpmyadmin을 보호하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.