Що насправді робить Apache "Потрібні всі надані"?


95

Я щойно оновив свій сервер 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, що це "імітує функціонал, який раніше забезпечувався директивами" Дозволити всім "та" Заборонити від усіх ". Цей постачальник може взяти один з двох аргументів, які" надано "або" відмовлено ". приклади надають або забороняють доступ до всіх запитів. "

Але не було сказано, чи це питання безпеки чи якесь питання, або чому ми зараз маємо це робити, коли раніше не потрібно було.


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- щоб вирішити-вимагати-валід-ip-або-вимагати-дійсний-користувач, і вам повинно бути добре!


Для мене наявність require all grantedперешкодженої автентифікації HTTP працює, тому дякую за інформацію.
authenttech

@authentictech Порушується не лише те, що всі надані можуть порушити це. Очікувана автентифікація може бути повністю порушена за допомогою цього нового синтаксису, якщо ви не використовуєте RequireAll або RequireAny належним чином. Будь ласка , прочитайте: unix.stackexchange.com/questions/413309 / ... . Дякую за відгук.
Лучано Андресс Мартіні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.