これらのドキュメントを読んだ後、私は少し混乱しています:
このサイト定義を書きました:
$ 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>
それはおそらく私の場所指定子よりも高い優先度を持つことができますか?
「問題」はAlias
ディレクティブにあると思います。
<Location>
ディレクティブは処理されるため、通常は<Directory>
ディレクティブをオーバーライドしますが、後でです。 Alias
がある場合、<Location>
ディレクティブが処理されますbeforeAlias
が評価されるため、Alias
に関連する<Directory>
コンテナtargetが終了します処理中後で。あなたの場合、関連する<Directory>
コンテナにはRequire all granted
ディレクティブがあるため、最終的にアクセスが許可されます。
エイリアスの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が同じファイルシステムの場所にマッピングされる可能性があるため、このようなアクセス制御は回避される可能性があります。