尝试使用 Apache2/Debian 保护文件系统根目录:所有虚拟主机均返回 403 禁止访问

尝试使用 Apache2/Debian 保护文件系统根目录:所有虚拟主机均返回 403 禁止访问

我在 Debian 服务器上运行 Apache2。我的虚拟主机(目前只有一个)已配置在/etc/apache2/站点可用/默认并且运行良好:

# /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/安全,我已经看到我们可以通过注释掉以下内容来阻止对文件系统根目录的访问(当没有 ServerName 匹配虚拟主机配置时可能特别有用):

# /etc/apache2/conf.d/security
<Directory />
    AllowOverride None
    Order Deny,Allow
    Deny from all
</Directory>

当我这样做并重新启动 Apache 时,我的所有页面都返回 403 Forbidden 错误。我所寻找的只是阻止访问文件系统根目录并允许 VirtualHost“domain.com”返回 /var/www/ 中的页面。我误解了什么?有什么方法可以保护 Apache2 免受未经授权的目录访问?谢谢!

答案1

apache 2.4 中访问控制的方式已经改变。

这个文件关于从 2.2 升级到 2.4。值得注意的是:

在此示例中,所有请求都被允许。

2.2配置:

Order allow,deny
Allow from all

2.4配置:

Require all granted

答案2

您所影响的位置与给定虚拟主机的 DocumentRoot 相关。

因此如果 DocumentRoot 是 /var/www,则 / 将影响 /var/www 中的文件。

将 Directory 视为 DocumentRoot/Directory。Apache 应该已经禁止 DocumentRoot 之外的内容。

相关内容