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

為了保護此訊息,我嘗試將 apache 配置為僅接受來自我的 IP 位址(在本範例中為192.168.33.1)的請求。

複雜的是,我希望發出請求www.example.comwww.example.com/index.php以 200 回應,無論它們源自於哪個 IP。

我的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>

200這是部分有效的,因為它允許對任何請求 IP 位址的請求進行回應www.example.com,但是即使從白名單 IP 位址發出請求,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

那是因為您正在插入LocationMatchjust for index.phpLocationMatch可以像正規表示式一樣定義,因此您可以嘗試為您需要的所有檔案新增正規表示式。

像這樣的東西:

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

相關內容