Apache的“要求一切都被授予”实际上是做什么的?


95

我刚刚将Apache服务器更新为在Ubuntu 13.04下运行的Apache / 2.4.6。我曾经有一个虚拟主机文件,其中包含以下内容:

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

但是当我跑步时,我得到了“禁止。您无权访问/”

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

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

我想知道这是否“安全”,并且不会带来任何安全问题。我在Apache的页面上读到,它“模仿了以前由'允许所有人'和'拒绝所有人'指令提供的功能。此提供程序可以采用'granted'或'denied'两个参数之一。示例将授予或拒绝访问所有请求。”

但是它并没有说这是否是某种安全问题,还是为什么我们现在不得不在过去不必这样做时这样做。


1
升级文档详细说明了“访问控制”更改。httpd.apache.org/docs/2.4/upgrading.html
John Magnolia

Answers:


87

访问控制配置在2.4中进行了更改,如果不进行一些更改,旧配置将不兼容。看这里

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


4
更不用说,旧方法非常令人困惑,并且早就应该被更明智的方法所取代。
迈克尔·汉普顿

4
对于如此重大的更改,我希望能够提供某种支持,以自动迁移配置文件,或者至少显示所有需要更改的地方。
Wolfgang Fahl,2015年

1
很高兴看到的工作演示Require all denied
Kraang Prime

5
我不认为这等同于Allow from all。您必须“合并” Require all granted其他现有Require规则。在我的情况下,Require valid-user像在任何地方建议的那样盲目转换配置时,将忽略现有的配置。这是可能发生的最糟糕的事情……
rudimeier 16/09/14

1
对OP的问题有一个正确的答案将是很好的。“一切都允许”不是很令人满意。
Sharcoux

15

我知道这是一篇过时的文章,但我认为我可以使用我经常使用的功能示例来提供更多帮助!

在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>

使用htacess身份验证时请务必小心,此新语法可能会做一些不好的预料之外的事情,如果您遇到这种情况,请阅读:https : //unix.stackexchange.com/questions/413309/apache-2-4-wants-me-确定需要有效的IP或需要有效的用户,您应该可以!


对我来说,require all granted阻止HTTP身份验证的工作正常,因此感谢您的信息。
authentictech

@authentictech不仅要求所有授予的权限都可以破坏它。如果未正确使用RequireAll或RequireAny,则可以使用此新语法完全破坏预期的身份验证。请阅读:unix.stackexchange.com/questions/413309/…。感谢您的反馈。
Luciano Andress Martini
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.