Apache 的“要求全部授予”实际上起什么作用?

Apache 的“要求全部授予”实际上起什么作用?

我刚刚将 Apache 服务器更新到在 Ubuntu 13.04 下运行的 Apache/2.4.6。我以前有一个包含以下内容的 vhost 文件:

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
</Directory>

但是当我运行它时,我得到了一个“禁止。您无权访问/”

经过一点谷歌搜索后,我发现为了让我的网站再次运行,我需要添加以下行“Require all granting”,以便我的虚拟主机看起来像这样:

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
    Require all granted
</Directory>

我想知道这是否“安全”并且不会带来任何安全问题。我读过 Apache 的这“模仿了之前由‘允许所有’和‘拒绝所有’指令提供的功能。此提供程序可以采用两个参数之一,即‘授予’或‘拒绝’。以下示例将授予或拒绝对所有请求的访问权限。”

但它并没有说明这是否是一种安全问题,也没有说明为什么我们现在必须这样做,而过去则不需要这样做。

答案1

访问控制配置在 2.4 中发生了变化,如果不进行一些更改,旧配置将不兼容。请参阅这里

如果您的旧配置是Allow from all(没有阻止 IP 地址访问服务),那么Require all granted新的功能是等效的。

答案2

在 Apache 2.2 中将是这样的:

<Location />
   Order deny, allow
   allow from all
</Location>
<Location /adm>
    Order deny, allow
    deny from all
    allow from myniceip
</Location>
<Location /disabled>
    Order deny, allow
    deny from all
</Location>

在 Apache 2.4 中将是这样的:

<Location />
   require all granted
</Location>
#Note that you dont need to use require all denied
#to require only a group of ips..
<Location /adm>
    require ip myniceip
</Location>
<Location /disabled>
    Require all denied
</Location>

小心点 .htaccess使用身份验证时,这个新语法可以做一些不好的事情和意想不到的事情,如果你的情况是这样的,请阅读: Apache 2.4 需要我决定:需要有效的 IP 还是需要有效的用户你会没事的!

答案3

非常有趣;但我没看到有人回答原帖。他们告诉他怎么做,但没有告诉他为什么。我实际上花时间点击了参考文章中的链接,阅读了新的“Require”指令的作用。如果我错了,请纠正我,但从“mod_authz_core - Apache HTTP 服务器版本 2.4“,我认为这只涉及查看或下载网络资源的授权;因为它的所有选项都涉及谁可以访问资源、授权提供者和允许的用户组。它似乎没有提供允许外部人员覆盖您的 html/php 文件的选项。对我来说,它似乎只允许任何可以连接的人查看您的内容。如果您在本地开发,并且不尝试设置某些特殊的授权方案,则可以使用它Require local来阻止任何人从外部查看您的本地内容。

唯一真正的安全问题是“位置”指令与提供 Web 资源的位置冲突,在这种情况下可能会使用错误的身份验证方案。他们详细介绍了如何解决身份验证方案中的此类冲突的步骤。

相关内容