Что на самом деле делает Apache «Требуется все предоставленное»?

95

Я только что обновил свой сервер Apache до Apache / 2.4.6, который работает под Ubuntu 13.04. Я имел обыкновение иметь файл vhost, у которого было следующее:

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

Но когда я запустил это, я получил «Запрещено. У вас нет разрешения на доступ /»

После небольшого поиска в Google я обнаружил, что для того, чтобы мой сайт снова заработал, мне нужно было добавить следующую строку «Требовать все предоставлено», чтобы мой vhost выглядел так:

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

Я хочу знать, является ли это "безопасным" и не влечет ли каких-либо проблем безопасности. Я прочитал на странице Apache, что это «имитирует функциональность, которая была ранее предоставлена ​​директивами« Разрешить от всех »и« Запретить от всех ». Этот провайдер может принимать один из двух аргументов, которые« предоставлены »или« отклонены ». примеры будут предоставлять или запрещать доступ ко всем запросам. "

Но в нем не говорилось, была ли это какая-то проблема безопасности или почему мы теперь должны это делать, когда в прошлом вам не приходилось это делать.

Джон Кроуфорд
источник
1
Документы по обновлению подробно объясняют изменения в «Контроль доступа». httpd.apache.org/docs/2.4/upgrading.html
Джон Магнолия,

Ответы:

87

Конфигурация управления доступом изменилась в 2.4, и старые конфигурации не совместимы без некоторых изменений. Смотрите здесь .

Если ваша старая конфигурация была Allow from all(никакие IP-адреса не заблокированы от доступа к службе), то Require all grantedновый функциональный эквивалент.

Шейн Мэдден
источник
4
Не говоря уже о том, что старый метод ужасно сбивал с толку и давно пора заменить его чем-то более разумным.
Майкл Хэмптон
4
Для такого серьезного изменения я бы ожидал, что какая-то поддержка автоматически перенесет файлы конфигурации или, по крайней мере, покажет все точки, где необходимо изменение.
Вольфганг Фаль
1
Было бы приятно увидеть рабочую демонстрацию Require all denied.
Краанг Прайм
5
Я не думаю, что это эквивалентно Allow from all. Вы должны «слиться» Require all grantedс другими существующими Requireправилами. В моем случае существующее Require valid-userбыло проигнорировано при слепом преобразовании конфигурации, как это рекомендуется везде. Это было худшее, что могло случиться ...
rudimeier
1
Было бы неплохо получить правильный ответ на вопрос ОП. «Разрешить из всех эквивалентов» не очень удовлетворительно.
Шарку
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- to-решить-требовать-действительный-ip-или-требовать-действительный-пользователь, и вы должны быть в порядке!

Лучано Андресс Мартини
источник
Для меня наличие require all grantedзапрещенной HTTP-аутентификации работает, поэтому спасибо за информацию.
authentictech
@authentictech Не только требуют, чтобы все предоставленные могли сломать его. Ожидаемая аутентификация может быть полностью нарушена с помощью этого нового синтаксиса, если вы не используете RequireAll или RequireAny должным образом. Пожалуйста, прочитайте: unix.stackexchange.com/questions/413309/… . Спасибо за ваш отзыв!
Лучано Андресс Мартини