Apache 2.4 - 기본 경로를 제외한 모든 요청으로 트래픽(IP 주소 기준)을 제한하는 방법은 무엇입니까?

Apache 2.4 - 기본 경로를 제외한 모든 요청으로 트래픽(IP 주소 기준)을 제한하는 방법은 무엇입니까?

/var/www서버 문제를 조사하는 데 도움이 되는 유용한 정보를 표시하는 디버깅 스크립트 모음이 있지만 동일한 정보가 잠재적으로 민감할 수 있으므로 공개적으로 사용하고 싶지 않습니다.

is DocumentRoot/var/www/다음과 같습니다:

$ ls -1 /var/www/
apc.php
index.php
linux-dash
opcache.php
phpinfo.php

이 정보를 보호하기 위해 나는 내 IP 주소(이 예에서는 192.168.33.1)의 요청만 수락하도록 Apache를 구성하려고 합니다.

복잡한 것은 어떤 IP에서 시작되었는지에 관계없이 200에 대한 요청 www.example.com과 응답을 원한다는 것입니다 .www.example.com/index.php

status.conf가상 호스트 구성은 현재 다음과 같습니다.

ServerName      www.example.com

<VirtualHost *:80>
    ServerName      www.example.com

    DocumentRoot    /var/www
    <Directory      /var/www>
        Options FollowSymLinks
        AllowOverride All
        Require ip 192.168.33.1
    </Directory>

    <LocationMatch ^/(index.php)?$>
        Require all granted
    </LocationMatch>

    <Location /server-status>
        SetHandler server-status
    </Location>
</VirtualHost>

이는 모든 요청 IP 주소 와 의 200요청에 대해 응답을 허용하므로 부분적으로 작동합니다. 그러나 화이트리스트에 있는 IP 주소에서 요청하는 경우에도 다른 모든 요청에 ​​대해 잘못 응답합니다 .www.example.comwww.example.com/index.php403

$ curl -I -H 'Host: www.example.com' 192.168.33.10
HTTP/1.1 200 OK

$ curl -I -H 'Host: www.example.com' 192.168.33.10/index.php
HTTP/1.1 200 OK

$ curl -I -H 'Host: www.example.com' 192.168.33.10/phpinfo.php
HTTP/1.1 403 Forbidden

$ curl -I -H 'Host: www.example.com' 192.168.33.10/opcache.php
HTTP/1.1 403 Forbidden

$ curl -I -H 'Host: www.example.com' 192.168.33.10/server-status
HTTP/1.1 403 Forbidden

에서 access.log:

192.168.33.1 - - [15/Jun/2015:09:59:13 +0000] "HEAD / HTTP/1.1" 200 148 "-" "curl/7.37.1"
192.168.33.1 - - [15/Jun/2015:09:59:32 +0000] "HEAD /index.php HTTP/1.1" 200 148 "-" "curl/7.37.1"
192.168.33.1 - - [15/Jun/2015:09:59:47 +0000] "HEAD /phpinfo.php HTTP/1.1" 403 139 "-" "curl/7.37.1"
192.168.33.1 - - [15/Jun/2015:10:00:03 +0000] "HEAD /opcache.php HTTP/1.1" 403 139 "-" "curl/7.37.1"
192.168.33.1 - - [15/Jun/2015:10:00:22 +0000] "HEAD /server-status HTTP/1.1" 403 139 "-" "curl/7.37.1"

원하는 동작을 달성하려면 Apache 구성을 어떻게 변경해야 합니까?

답변1

구성이 양호해 보입니다. 구성 변경 사항이 적용되지 않은 경우 Apache를 다시 로드해 보세요.

답변2

LocationMatchfor 를 삽입하기 때문입니다 index.php. LocationMatch정규식처럼 정의할 수 있으므로 필요한 모든 파일에 대해 정규식을 추가해 볼 수 있습니다.

다음과 같은 것:

<LocationMatch ^/(index.php|phpinfo.php|opcache.php)?$>
        Require all granted
</LocationMatch>

관련 정보