题 Apache的“需要所有授权”真正做到了什么?


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

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

但是当我跑步时,我得到了一个“禁止。你没有权限访问/”

在做了一点谷歌搜索后,我发现为了让我的网站再次运行,我需要添加以下行“Require all granted”,以便我的vhost看起来像这样:

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

我想知道这是否“安全”并且不会带来任何安全问题。我读了Apache的  这“模仿了以前由'允许所有人'和'拒绝所有'指令提供的功能。这个提供者可以采取”授予“或”拒绝“的两个参数中的一个。以下示例将授予或拒绝访问所有请求。“

但它没有说这是否是某种安全问题,或者为什么我们现在必须在过去你不必这样做。


81
2017-10-29 21:51




升级文档详细解释了“访问控制”的更改。 httpd.apache.org/docs/2.4/upgrading.html - John Magnolia


答案:


访问控制配置在2.4中更改,如果没有一些更改,旧配置不兼容。看到 这里

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


81
2017-10-30 02:31



更不用说,旧的方法非常令人困惑,并且早就应该用更合理的东西取而代之。 - Michael Hampton♦
对于这样一个重大变化,我希望有一些支持来自动迁移配置文件,或者至少显示需要进行更改的所有点。 - Wolfgang Fahl
很高兴看到一个工作演示 Require all denied 。 - Kraang Prime
我不认为这相当于 Allow from all。你必须“合并” Require all granted 与其他现有的 Require 规则。在我的情况下,现有的 Require valid-user 当盲目地转换配置时,它被忽略了。这是可能发生的最糟糕的事情...... - rudimeier
对OP的问题有一个正确的答案会很好。 “允许所有等价物”并不令人满意。 - Sharcoux


我知道这是一个老帖子,但我认为这可以帮助更多我一直使用的功能性示例!

在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-to-decide-require-valid-ip-or-require-valid-user 你应该没事!


9
2017-12-08 12:02