Linux

嘗試使用 Apache2/Debian 保護文件系統根目錄:所有虛擬主機都返回 403 禁止

  • March 6, 2015

我在 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 之外的東西。

引用自:https://serverfault.com/questions/673217