可以安全地使用 Apache <Location> 指令来配置对服务器的访问吗?

Posted

技术标签:

【中文标题】可以安全地使用 Apache <Location> 指令来配置对服务器的访问吗?【英文标题】:Can the Apache <Location> directive be safely used to configure access to a server? 【发布时间】:2013-09-23 22:39:01 【问题描述】:

在我的 Apache 配置中,我首先拒绝访问整个文件系统:

<Directory />
    Require all denied
</Directory>

然后,在每个虚拟主机的配置中,我允许不受限制的访问:

<VirtualHost ...>
    <Directory /var/www/example.com/>
        Require all granted
    </Directory>
</VirtualHost>

或需要经过身份验证的访问:

<VirtualHost ...>
    <Directory /var/www/example.com/>
        AuthType Basic
        AuthName "example.com"
        AuthUserFile htpasswd
        Require valid-user
    </Directory>
</VirtualHost>

我在 Apache 文档中注意到:

For content that lives in the filesystem, use <Directory> and <Files>. An exception is <Location />, which is an easy way to apply a configuration to the entire server.

我想知道使用&lt;Location /&gt; 是否可能是要求对特定虚拟主机进行身份验证访问的一种方式:

<VirtualHost ...>
    <Location />
        AuthType Basic
        AuthName "example.com"
        AuthUserFile htpasswd
        Require valid-user
    </Location>
</VirtualHost>

但 Apache 文档指出:

<Location> directives should not be used to control access to filesystem locations.

这让我想知道 不应该 是否是对 &lt;Location&gt; 指令的一般建议,以及在某些情况下 &lt;Location /&gt; 指令是否可以被用作例外 允许访问,或者换句话说,Apache &lt;Location&gt; 指令可以安全地用于配置对服务器的访问吗?

【问题讨论】:

【参考方案1】:

否。也来自 Apache 文档:

Pay particular attention to the interactions of Location and Directory directives; for instance, even if <Directory /> denies access, a <Location /> directive might overturn it.

我的理解是,因为任何&lt;Location&gt; 指令都可能推翻任何&lt;Directory&gt; 指令[1],所以限制最少的&lt;Location&gt; 指令的限制不得低于限制最严格的&lt;Directory&gt; 指令整个服务器

从合理的&lt;Directory /&gt; 默认Require all denied 开始并遵循上述规则将要求任何&lt;Location&gt; 指令的限制性不低于Require all denied,这当然会使根本无法访问服务器.

还要注意&lt;Location&gt; 指令的目的是配置文件系统之外的资源。

底线是对于任何可能触及文件系统的请求,对于可能适用于任何这些请求的任何&lt;Location&gt; 指令,适用的&lt;Location&gt; 指令不得包含Require 语句。[ 2]

[1]:例如,使用符号链接。 [2]:可以使用文件系统权限或 apparmor 等工具来缓解通过在某些 &lt;Location&gt; 指令中包含 Require 语句打开的安全漏洞,但请记住 Defense In Depth 的原则。

【讨论】:

以上是关于可以安全地使用 Apache <Location> 指令来配置对服务器的访问吗?的主要内容,如果未能解决你的问题,请参考以下文章

从Apache Kafka到Apache Spark安全地读取数据

Apache Shiro 1.3.2简介

linux安装apache

Apache 网页与安全优化

Apache网页优化与安全优化(网页压缩;网页缓存;网页防盗链;隐藏版本信息)

更新Apache Shiro 权限绕过漏洞CVE-2020-13933