%EC%9D%84%20%EC%A0%9C%ED%95%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
/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.com
www.example.com/index.php
403
$ 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
LocationMatch
for 를 삽입하기 때문입니다 index.php
. LocationMatch
정규식처럼 정의할 수 있으므로 필요한 모든 파일에 대해 정규식을 추가해 볼 수 있습니다.
다음과 같은 것:
<LocationMatch ^/(index.php|phpinfo.php|opcache.php)?$>
Require all granted
</LocationMatch>