Co tak naprawdę robi „Wymagaj wszystkich przyznanych” Apache'a?

95

Właśnie zaktualizowałem mój serwer Apache do Apache / 2.4.6, który działa pod Ubuntu 13.04. Kiedyś miałem plik vhost, który miał następujące elementy:

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

Ale kiedy pobiegłem, dostałem „Zabronione. Nie masz pozwolenia na dostęp /”

Po odrobinie googlingu odkryłem, że aby ponownie uruchomić moją stronę, musiałem dodać następujący wiersz „Wymagaj wszystkich przyznanych”, aby mój vhost wyglądał tak:

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

Chcę wiedzieć, czy jest to „bezpieczne” i nie powoduje żadnych problemów związanych z bezpieczeństwem. Przeczytałem na stronie Apache, że to „naśladuje funkcjonalność poprzednio zapewnianą przez dyrektywy„ Zezwól na wszystko ”i„ Odmów ze wszystkich ”. Ten dostawca może przyjąć jeden z dwóch argumentów, które są„ przyznane ”lub„ odrzucone ”. przykłady udzielą lub odmówią dostępu do wszystkich wniosków ”.

Ale nie powiedział, czy to jest jakiś problem z bezpieczeństwem, czy dlaczego musimy to zrobić, kiedy w przeszłości nie musieliście.

John Crawford
źródło
1
Dokumenty dotyczące aktualizacji szczegółowo wyjaśniają zmiany „Kontrola dostępu”. httpd.apache.org/docs/2.4/upgrading.html
John Magnolia

Odpowiedzi:

87

Konfiguracja kontroli dostępu została zmieniona w wersji 2.4, a stare konfiguracje nie są kompatybilne bez pewnych zmian. Zobacz tutaj .

Jeśli twoja stara konfiguracja była Allow from all(żaden adres IP nie został zablokowany przed dostępem do usługi), Require all grantedto nowy funkcjonalny ekwiwalent.

Shane Madden
źródło
4
Nie wspominając już o tym, że stara metoda była strasznie myląca i od dawna należało ją zastąpić czymś bardziej sensownym.
Michael Hampton
4
W przypadku tak poważnej zmiany spodziewałbym się, że jakieś wsparcie automatycznie migruje pliki konfiguracyjne lub przynajmniej pokazuje wszystkie punkty, w których zmiana jest potrzebna.
Wolfgang Fahl
1
Byłoby miło zobaczyć pokaz roboczy Require all denied.
Kraang Prime
5
Nie sądzę, że to jest równoważne Allow from all. Musisz „połączyć” się Require all grantedz innymi istniejącymi Requireregułami. W moim przypadku istniejący Require valid-userzostał zignorowany podczas ślepej konwersji konfiguracji, tak jak jest to zalecane wszędzie. To była najgorsza rzecz, jaka mogła się zdarzyć ...
rudimeier
1
Byłoby miło mieć właściwą odpowiedź na pytanie PO. „Pozwól na wszystko równoważne” nie jest zbyt satysfakcjonujące.
Sharcoux
15

Wiem, że to stary post, ale myślę, że mogę pomóc z funkcjonalnym przykładem, którego zawsze używam!

W Apache 2.2 byłoby:

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

W Apache 2.4 byłoby:

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

Zachowaj ostrożność podczas korzystania z uwierzytelniania htacess , ta nowa składnia może robić złe i nieoczekiwane rzeczy , jeśli tak jest w Twoim przypadku, przeczytaj: https://unix.stackexchange.com/questions/413309/apache-2-4-wants-me- zdecydować-wymagaj-ważnego-ip-lub-wymagaj-ważnego użytkownika i powinieneś być w porządku!

Luciano Andress Martini
źródło
Dla mnie obecność require all grantedzapobiegającego uwierzytelnieniu HTTP działa, więc dziękuję za informacje.
authentictech
@ Authentictech Nie tylko wymagają, że wszystkie udzielone mogą je zepsuć. Oczekiwane uwierzytelnienie może zostać całkowicie zerwane dzięki tej nowej składni, jeśli nie użyjesz odpowiednio RequireAll lub RequireAny. Proszę przeczytać: unix.stackexchange.com/questions/413309/... . Dziękuję za zwrotną informację.
Luciano Andress Martini