仮想ホスト内のすべてをリセットして何も許可しないようにし、次に特定のアクセスを許可する別のディレクティブを設定するのが良いセキュリティ対策であると聞きました。次のようになります。
<VirtualHost *:80>
DocumentRoot /home/example/public_html
<Directory />
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
<Directory /home/example/public_html >
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
それはある程度理にかなっています。しかし、確信が持てないので、設定する最善の方法についていくつかの意見をいただければ幸いです。
答え1
そこに書かれているとおりにディレクティブを実際に使用する場合<Directory />
、その仮想ホストに対して何も変更されず、代わりにディレクトリに対して同じオーバーライドを何度も宣言することになります/
。
したがって、これらのオプションは何も実行されず、最良の場合でも、最後に<Directory />
遭遇したセクションのみが適用されます。
https://httpd.apache.org/docs/current/sections.html#マージ
そのセクションがすべての仮想ホストで同じであれば問題は発生しませんが、一部の仮想ホストが異なり、仮想ホストの数が時間の経過とともに変化すると、どの<Directory />
ディレクティブが適用されたかを把握するのが難しくなります。
すべての仮想ホストからセクションを削除し<Directory />
、グローバル構成で一度宣言します。