Linux
嘗試使用 Apache2/Debian 保護文件系統根目錄:所有虛擬主機都返回 403 禁止
我在 Debian 伺服器上執行 Apache2。我的虛擬主機(現在是一個)已經在*/etc/apache2/sites-available/default*中配置並且工作正常:
# /etc/apache2/sites-available/default <VirtualHost *:80> ServerName domain.com DocumentRoot /var/www/ <Directory /> AllowOverride None Order Deny,Allow Deny from all </Directory> <Directory /var/www/> AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost>
但是,通過查看文件*/etc/apache2/conf.d/security*,我發現我們可以通過註釋掉來防止對文件系統根目錄的訪問(當沒有 ServerName 與虛擬主機配置匹配時可能特別有用)來強化 Apache2:
# /etc/apache2/conf.d/security <Directory /> AllowOverride None Order Deny,Allow Deny from all </Directory>
當我這樣做並重新啟動 apache 時,我的所有頁面都返回 403 Forbidden 錯誤。我正在尋找的只是阻止訪問文件系統根目錄並允許 VirtualHost“domain.com”返回 /var/www/ 中的頁面。我誤解了什麼?保護 Apache2 免受未經授權的目錄訪問的方法是什麼?謝謝!
Apache 2.4 改變了訪問控制的方式。
有關從 2.2 升級到 2.4 的資訊,請參閱此文件。尤其:
在此範例中,允許所有請求。
2.2 配置:
Order allow,deny Allow from all
2.4 配置:
Require all granted
您正在影響的位置與給定虛擬主機的 DocumentRoot 相關。
所以 / 會影響 /var/www 中的文件,如果 DocumentRoot 是 /var/www。
將目錄視為 DocumentRoot/Directory。Apache 應該已經禁止 DocumentRoot 之外的東西。