Ich habe gerade ein Upgrade von Apache 2003 auf einen blitzsauberen, brandneuen 2.4.1-Build durchgeführt. Alles scheint ziemlich gut, bis auf eine krasse Sache:
In meiner httpd.conf-Datei habe ich Folgendes:
<Directory />
AllowOverride none
Options FollowSymLinks
AuthType Basic
AuthName "Enter Password"
AuthUserFile /var/www/.htpasswd
Require valid-user
</Directory>
Dies sollte nur Benutzern in der angegebenen Auth-Datei den Zugriff auf den Server ermöglichen - genau wie unter der älteren Version von Apache. (Richtig?)
Es funktioniert jedoch nicht. Anfragen werden ohne Authentifizierung gewährt. Wenn ich die Protokollierung für die Zugriffe auf LogLevel Debug umstelle, heißt es:
[Sat Mar 24 21:32:00.585139 2012] [authz_core:debug] [pid 10733:tid 32771] mod_authz_core.c(783): [client 192.168.1.181:57677] AH01626: authorization result of Require all granted: granted
[Sat Mar 24 21:32:00.585446 2012] [authz_core:debug] [pid 10733:tid 32771] mod_authz_core.c(783): [client 192.168.1.181:57677] AH01626: authorization result of <RequireAny>: granted
Ich weiß wirklich nicht, was dies bedeutet - und ich habe (nach meinem besten Wissen) in keiner meiner Dateien die Anweisungen "Alle Erlaubten erfordern" oder "".
Irgendwelche Ideen, warum das nicht funktioniert oder wo man debuggen kann?
AKTUALISIEREN:
Ich habe einen virtuellen Host auf dem SSL-Port, der Proxying ermöglicht. Wenn ich die gleichen Einträge in das
<proxy *>
Klausel in der virtualhost-Konfiguration, es funktioniert . Es scheint nicht zu funktionieren in der
<Directory>
Klausel. Ich habe dann versucht, unter anderen Directory-Klauseln (spezifisch für andere Verzeichnisse) zu setzen, und das hat auch nicht funktioniert.
EBENFALLS
Aus den folgenden Fragen von Shane - Ich habe versucht, den Stammblock "/" in ein "/ tmp" -Verzeichnis zu kopieren. Das Verzeichnis / tmp funktioniert RICHTIG !! Also - dieses Problem betrifft nur das Stammverzeichnis ???
quelle
<Directory>
Blöcke haben Sie auf die Anfragen angewendet, die nicht funktionieren?<Directory>
irgendwo anders in Ihrer Apache-Konfiguration einen spezifischeren Block gibt , der Vorrang vor dem von Ihnen festgelegten hat/
.Antworten:
Ich hatte ein ähnliches Problem mit der Digest-Authentifizierung bei einer Neuinstallation von 2.4. Bei genauerer Betrachtung der Dokumentation auf der Apache-Website scheint es so, als müssten sich die Authentifizierungsanweisungen in einem
<Location>
Tag und nicht in einem<Directory>
Tag befinden. Weitere Informationen finden Sie in der Dokumentation zur AuthBasicProvider-Direktive .quelle
Ich hatte das gleiche Problem und nichts von diesem Beitrag hat mir geholfen, also zähle ich meine 2 Cent dazu. In meinem Fall (Apache 2.4) lag das Problem in den sequentiellen Require- Direktiven.
Wenn Sie mehr als eine Require- Direktive haben, gelten diese standardmäßig als
<RequireAny>
In meinem
<Directory>
habe ich gehabtDie Authentifizierungsanforderung wurde also nicht angezeigt, wenn die IP korrekt war. Ich habe zu wechseln hatte Erfordern Logik aus
<RequireAny>
zu<RequireAll>
und es scheint , dass jetzt alles korrekt funktioniert.quelle
Die Antwort von jscott ist falsch. Apache 2.4 mit Sicherheit funktioniert die Authentifizierung Richtlinien erlauben
<Directory>
Containern. Darüber hinaus ist dies die einzige sichere Methode zur Implementierung der Authentifizierung, da auf<Location>
Container auf unterschiedliche Weise zugegriffen werden kann und Ihre Authentifizierung umgangen werden kann, wenn Sie nicht vorsichtig sind. Zur Veranschaulichung ist hier ein Musterbehälter, den ich in einem Produktionssystem verwende:<Directory "/srv/http/my_domain.org/html/secret-stuff"> Options Indexes Multiviews FollowSymLinks AuthType Digest AuthName "staff" AuthUserFile /etc/httpd/private/secret-stuff.htaccess Require valid-user </Directory>
quelle
Ihnen scheint ein Anbieter für AuthBasic zu fehlen. Versuchen Sie, eine Zeile wie die folgende hinzuzufügen:
Sobald Sie dies funktioniert haben, möchten Sie vielleicht die
Satisfy
Direktive anschauen . Dies kann verwendet werden, um den lokalen Zugriff ohne Kennwort zuzulassen, während für den Internetzugang ein Kennwort erforderlich ist.BEARBEITEN: Ich benutze eine Include-Datei für BasicAuth, um den kennwortbasierten Fernzugriff auf Inhalte zu ermöglichen, die normalerweise nicht über das Internet verfügbar sind. Möglicherweise möchten Sie die
Satisfy
Direktive nicht. Das ist meine/etc/apache2/basicauth.conf
Akte:Ich habe auch eine
/etc/apache2/allow_local.conf
Include-Datei für die IP-basierte Authentifizierung.Um sie zu aktivieren, benutze ich diese Includes.
Möglicherweise möchten Sie versuchen, die Berechtigungsspezifikation zu erweitern. Das funktioniert mit meiner Testkonfiguration.
quelle
Ich hatte das gleiche Problem und es ist wahrscheinlich ein Apache-Bug; In meinem Fall tauchte das Problem nach einem Update auf und verschwand nach einem nachfolgenden Update, aber ich musste dies unten hinzufügen:
Das ist beängstigend, dass Apache Sicherheitslücken wie diese öffnen könnte :(
quelle
Deny from all
ist eine Apache 2.2 Einstellung. httpd.apache.org/docs/2.4/upgrading.html#run-timeVersuchen:
<Directory "/"> ... </Directory>
Anstatt von:
<Directory /> ... </Directory>
Bedeutung: Kapseln Sie das Wurzelsymbol in doppelte Anführungszeichen. Andernfalls schließen Sie das Tag möglicherweise mit diesem Schrägstrich.
quelle
Überprüfen Sie auch, ob es nicht versehentlich einen anderen gibt
an anderer Stelle in der gleichen Verzeichniskonfiguration. es könnte deines überschreiben
quelle