web-dev-qa-db-ja.com

Apache2:ディレクティブが機能しないことを要求する

これらのドキュメントを読んだ後、私は少し混乱しています:

このサイト定義を書きました:

$ cat /etc/Apache2/sites-enabled/adminer.conf
Alias /adminer  "/var/www/adminer.php"

<Location "/adminer">
        <RequireAny>
                Require local
                Require ip 192.168
                Require ip 10
        </RequireAny>
</Location>

Apacheを再起動します。

$ Sudo service Apache2 restart

まだWANに設置されたPCからはまだロードできます:

https://example.com/adminer

私は、上記のドキュメントで何かを誤解している、または何かを読み違えていることを認め、推測しています。誰かがここで正しい方向に私を向けることができれば、私は最も感謝しています。私はむしろLAN内からのみadminerにアクセスし、WANからの攻撃にさらされないようにします。

EDIT:/etc/Apache2/Apache2.confにこれが表示されます:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

それはおそらく私の場所指定子よりも高い優先度を持つことができますか?

4
Bernd Wechner

「問題」はAliasディレクティブにあると思います。

<Location>ディレクティブは処理されるため、通常は<Directory>ディレクティブをオーバーライドしますが、後でです。 Aliasがある場合、<Location>ディレクティブが処理されますbeforeAliasが評価されるため、Aliasに関連する<Directory>コンテナtargetが終了します処理中後で。あなたの場合、関連する<Directory>コンテナにはRequire all grantedディレクティブがあるため、最終的にアクセスが許可されます。

AliasディレクティブのApacheドキュメント から:

エイリアスのdestinationをカバーする追加の<Directory>セクションを指定する必要がある場合があることに注意してください。エイリアスは<Directory>セクションがチェックされる前に発生するため、エイリアスの宛先のみが影響を受けます。 (ただし、<Location>セクションはエイリアスが実行される前に1回実行されるため、適用されます。)

UPDATE:コメントで提案しているように、<Files>ディレクティブを使用できる必要があります。君は。例えば:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
<Files adminer.php>
    <RequireAny>
        Require local
        Require ip 192.168
        Require ip 10
    </RequireAny>
</Files>
</Directory>

私はこれらのすべてのディレクティブがメインサーバーの設定で終わると仮定していますか?その場合、それらが含まれる順序が重要になる可能性があります。理想的には、この1つのサイトに対して<VirtualHost>コンテナを作成して、サーバー構成を簡単にオーバーライドできるようにします。

また、一般に<Location>ディレクティブを使用してローカルファイルシステムリソースへのアクセスを制御しないでください。これらは簡単に回避できるためです。たとえば、あなたの場合、ユーザーは単に/adminer.phpに直接アクセスできます。 Apache docs に記載されているとおり:

<Location>セクションは、ファイルシステムの外部で完全に動作します。これにはいくつかの結果があります。最も重要なのは、<Location>ディレクティブを使用してファイルシステムの場所へのアクセスを制御しないことです。いくつかの異なるURLが同じファイルシステムの場所にマッピングされる可能性があるため、このようなアクセス制御は回避される可能性があります。

2
DocRoot