Apache 2.4 - ベース パスを除くすべてのリクエストにトラフィック (IP アドレス別) を制限するにはどうすればよいでしょうか?

Apache 2.4 - ベース パスを除くすべてのリクエストにトラフィック (IP アドレス別) を制限するにはどうすればよいでしょうか?

サーバー上の問題の調査に役立つ有用な情報を表示するデバッグ スクリプトのコレクションがあります/var/wwwが、その情報は機密情報である可能性があるため、公開したくありません。

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

これは、 .LocationMatchのみを挿入しているためですindex.phpLocationMatch正規表現のように定義できるため、必要なすべてのファイルに正規表現を追加することができます。

たとえば次のようなものです:

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

関連情報