Was bewirkt Apaches "Require all grant" wirklich?


95

Ich habe gerade meinen Apache-Server auf Apache / 2.4.6 aktualisiert, der unter Ubuntu 13.04 läuft. Früher hatte ich eine vhost-Datei mit folgendem Inhalt:

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

Aber als ich lief, bekam ich ein "Verboten. Sie haben keine Erlaubnis zuzugreifen /"

Nachdem ich ein bisschen gegoogelt hatte, stellte ich fest, dass ich die folgende Zeile "Alles Erlaubt" hinzufügen musste, damit meine Website wieder funktioniert:

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

Ich möchte wissen, ob dies "sicher" ist und keine Sicherheitsprobleme mit sich bringt. Ich habe auf Apaches Seite gelesen, dass dies "die Funktionalität nachahmt, die zuvor durch die Direktiven" Allow from all "und" Deny from all "bereitgestellt wurde. Dieser Provider kann eines von zwei Argumenten annehmen, die" gewährt "oder" verweigert "werden Beispiele gewähren oder verweigern den Zugriff auf alle Anforderungen. "

Aber es wurde nicht gesagt, ob dies eine Sicherheitsfrage war oder warum wir es jetzt tun müssen, wenn Sie es in der Vergangenheit nicht mussten.


1
In den Upgrade-Dokumenten werden die Änderungen der Zugriffssteuerung ausführlich erläutert. httpd.apache.org/docs/2.4/upgrading.html
John Magnolia

Antworten:


87

Die Konfiguration der Zugriffssteuerung wurde in 2.4 geändert, und alte Konfigurationen sind ohne einige Änderungen nicht kompatibel. Sehen Sie hier .

Wenn Ihre alte Konfiguration war Allow from all(keine IP-Adressen für den Zugriff auf den Dienst gesperrt), dann Require all grantedist die neue Funktion gleichberechtigt.


4
Ganz zu schweigen davon, dass die alte Methode furchtbar verwirrend und längst überfällig war, durch etwas Vernünftigeres ersetzt zu werden.
Michael Hampton

4
Für solch eine große Änderung würde ich erwarten, dass irgendeine Art von Unterstützung automatisch Konfigurationsdateien migriert oder zumindest alle Punkte anzeigt, an denen eine Änderung erforderlich ist.
Wolfgang Fahl

1
Wäre schön eine funktionierende Demonstration von zu sehen Require all denied.
Kraang Prime

5
Ich denke nicht, dass das gleichbedeutend ist mit Allow from all. Sie müssen Require all grantedmit anderen bestehenden RequireRegeln "verschmelzen" . In meinem Fall wurde ein existierendes Require valid-userignoriert, als die Konfiguration blind konvertiert wurde, wie es überall empfohlen wird. Dies war das Schlimmste, was passieren konnte ...
Rudimeier

1
Es wäre schön, eine richtige Antwort auf die Frage des OP zu haben. "Von allen gleichwertigen zulassen" ist nicht sehr zufriedenstellend.
Sharcoux

15

Ich weiß, dass es ein alter Beitrag ist, aber ich denke, dass ich mit einem Funktionsbeispiel, das ich immer verwende, mehr helfen kann!

In Apache 2.2 wäre wie folgt:

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

In Apache 2.4 wäre wie folgt:

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

Seien Sie vorsichtig, wenn Sie die htacess-Authentifizierung verwenden . Diese neue Syntax kann einige schlechte und unerwartete Dinge bewirken . In diesem Fall lesen Sie bitte: https://unix.stackexchange.com/questions/413309/apache-2-4-wants-me- Sie müssen sich für eine gültige IP-Adresse oder einen gültigen Benutzer entscheiden und es sollte Ihnen gut gehen!


Für mich hat das Vorhandensein der require all grantedHTTP-Authentifizierung funktioniert, also danke für die Info.
authentictech

@authentictech Nicht nur alle Erlaubten müssen es brechen können. Die erwartete Authentifizierung kann mit dieser neuen Syntax vollständig beschädigt werden, wenn Sie RequireAll oder RequireAny nicht ordnungsgemäß verwenden. Bitte lesen Sie: unix.stackexchange.com/questions/413309/… . Danke für die Rückmeldung.
Luciano Andress Martini
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.