Вопрос: Что действительно делает Apache «Требовать все предоставленные»?


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

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

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

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

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

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

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


79
2017-10-29 21:51


Источник


В обновляющих документах подробно объясняются изменения «Контроль доступа». httpd.apache.org/docs/2.4/upgrading.html - John Magnolia


Ответы:


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

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


80
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
Было бы неплохо иметь правильный ответ на вопрос ОП. «Разрешить со всех эквивалентов» не очень удовлетворительно. - 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 и все должно быть в порядке!


7
2017-12-08 12:02