.htacces Deny,Allow - Problem
Akaris
- webserver
Hallo zusammen,
ich dokter jetzt schon die ganze Zeit an einer .htaccess rum, komme aber leider einfach nicht weiter.
Folgendes steht bei mir da jetzt drin:
Order Deny,Allow
Deny from all
Allow from MEINE.AKUTELLE.IP
Danach kommt nur noch die Ausgabe der 403 Seite.
Ich habe auch schon hier nachgeschaut ..
Apache Doku - Allow / Deny
... da steht allerdings nichts anderes drin wie hier im SELFTHML.
Auch das umdrehen der Order bringt nichts .. Die Beispiele greifen irgendwie nicht - und solangsam bekomme ich echt graue Haare mit dem Problem. (Wahrscheinlich übersehe ich nur wieder ne Kleinigkeit)
Ziel ist es im übrigen über die .htaccess den Zugriff von bestimmten
IPs aus zu kontrollieren oder auch die hosts anzugeben von denen aus
zugegriffen werden kann/darf.
Kann mir da bitte jemand helfen?
Danke & Gruss Ralf
Kann mir da bitte jemand helfen?
hast dus schon mal mit der "richtigen ip" versucht?
wenn du deine ip zb über ipconfig unter windows ausliest, bekommst du meistens nur deine lokale ip-adresse zu gesicht
deine externe ip adresse allerdings nicht - diese bekommst du zb mit REMOTE_ADDR raus, wenn du deine http-anfragen an den server auswertest
Klar hab ich meine Einwahl-IP rausgesucht. Besuche dazu einfach mmer:
IP ADRESS. Die ändert sich ja im Laufe des Tages immer wieder :)
Kann mir da bitte jemand helfen?
hast dus schon mal mit der "richtigen ip" versucht?wenn du deine ip zb über ipconfig unter windows ausliest, bekommst du meistens nur deine lokale ip-adresse zu gesicht
deine externe ip adresse allerdings nicht - diese bekommst du zb mit REMOTE_ADDR raus, wenn du deine http-anfragen an den server auswertest
Klar hab ich meine Einwahl-IP rausgesucht. Besuche dazu einfach mmer:
IP ADRESS. Die ändert sich ja im Laufe des Tages immer wieder :)
das ist dann aber uncool, wenn du dem server eine ip gibst, die sich ändert und dann die regel nicht mehr stimmt :)
ggf liegt hier dein hund begraben
Lach - war mir auch klar. Aber die ändert sich ja nur 1-2 mal am Tag. Und net gerade alle 5 Minuten. Das habe ich schon im Blick da ich auf nem anderen Rechner ständig die IP kontrolliere um das auszuschließen.
Hat also leider eine andere Ursache :-(
echo $begrüßung;
Order Deny,Allow
Deny from all
Allow from MEINE.AKUTELLE.IP
- Der Deny greift wunderbar
- Aber das Allow will einfach nicht funktionieren.
Welche IP-Adresse sieht denn der Apache (wenn du das Deny mal entfernst)? Anzusehen beispielsweise in der phpinfo()-Ausgabe unter _SERVER["REMOTE_ADDR"].
echo "$verabschiedung $name";
Welche IP-Adresse sieht denn der Apache (wenn du das Deny mal entfernst)? Anzusehen beispielsweise in der phpinfo()-Ausgabe unter _SERVER["REMOTE_ADDR"].
Ein Echo gibt als [REMOTE_ADDR] => 88.69.120.xxx - also die IP aus die ich auch eingegeben habe.
Ich bin jetzt auch auch schon den Weg gegangen das anstatt über eine .htaccess direkt über Direktory Directrive zu machen ... aber auch das bringt nix. Das einzigste was greift ist das deny :-(
Guten Tag,
vorab: Welche Version des Apache httpd verwendest du?
ich dokter jetzt schon die ganze Zeit an einer .htaccess rum, komme aber
leider einfach nicht weiter.
Wie ist AllowOverride konfiguriert?
Gruß
Christoph Jeschke
Hallo Christoph,
jetzt muss ich leider fragen wie ich das ausfindig machen kann. Ich kenne mich mit der serverseitigen Umgebung ja nicht wirklich aus - aber ich suche gerne wenn ich nen Anhaltspunkt habe :)
Guten Tag,
vorab: Welche Version des Apache httpd verwendest du?
ich dokter jetzt schon die ganze Zeit an einer .htaccess rum, komme aber
leider einfach nicht weiter.Wie ist AllowOverride konfiguriert?
Gruß
Christoph Jeschke
Guten Tag,
Hallo Christoph,
jetzt muss ich leider fragen wie ich das ausfindig machen kann. Ich kenne
mich mit der serverseitigen Umgebung ja nicht wirklich aus - aber ich suche
gerne wenn ich nen Anhaltspunkt habe :)
vorab: Welche Version des Apache httpd verwendest du?
Du kannst z.B. auf der Kommandozeile httpd -V oder apachectl -V ausführen. Da steht dann ganz oben die Versionsnummer. Von der Version hängt ab, welche Module du geladen haben musst.
Wie ist AllowOverride konfiguriert?
AllowOverride ist üblicherweise in der Root-Konfiguration definiert, z.B. in der httpd.conf.
Gruß
Christoph Jeschke
Hoffe das is jetzt das richtige:
Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 PHP/5.2.6 mod_ssl/2.2.3 OpenSSL/0.9.8c
und in der httpd.conf steht folgendes:
<Directory />
Options Indexes FollowSymLinks MultiViews ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Hilft das weiter?
Ich bin jetzt auch auch schon den Weg gegangen das anstatt über eine .htaccess direkt über Direktory Directrive zu machen
Das solltest du auch: When (not) to use .htaccess files
und in der httpd.conf steht folgendes:
<Directory />
Options Indexes FollowSymLinks MultiViews ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Der Directory-Container für das gesamte Dateisystem sollte eigentlich restriktiv konfiguriert sein, also deny from all und Options nur FollowSymLinks oder none und AllowOverride None.
"Protecting System Settings" und "Protect Server Files by Default".
Über weitere, nur für einzelne Verzeichnissene geltende <directory...>-Container überschreibst du dann die Standardwerte.
Nutzt du <virtualhost>-Sektionen oder Verwaltungssoftware wie Plesk etc.?
Das ganze ist eine Virtualhost Umgebung die auch eine Verwaltungssoftware hat. Allerdings nicht Plesk. Ich habe aber eingriff auf die Dateien über ein Interface. Daher habe ich für meinen Test das auch nur hierauf gezielt eingestellt:
<Directory "/home/www/secur_test">
Das reagiert genauso wie auch die eine .htaccess mit ähnlichem Inhalt in dem entsprechenden Verzeichnis. Frage ist halt wieso geht das deny und das allow net.. das will mir nicht in den kopf.
Etwas, was den <Directory ...>-Abschnitt überschreiben könnte (andere Directory>-Abschnitte unterhalb diesem, oder DirectoraMatch, Files/FilesMatch oder Location/LocationMatch-Abschnitte kommen nicht in betracht, nehme ich an.
Als der Directory Abschnitt oberhalb also auf "/" hat ja folgendes drinne:
<Directory />
Options Indexes FollowSymLinks MultiViews ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
An Files is folgendes da:
<Files ~ "^.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
<Files ~ "^.bash">
Order allow,deny
Deny from all
Satisfy All
</Files>
Aber das wirkt sich ja alles nicht auf das hier aus:
<Directory "/home/www/secur_test">
Es müsste ja dann irgendwo ein AllowOverride None oder ein deny all stehen oder verstehe ich das jetzt falsch?
Wie gesagt ich habe leider nicht wirklich nen Plan von der Materie :( .. probiere aber das gerade mal etwas zu verstehen natürlich.
Bin für jede Hilf auch dankbar!
Gruss Ralf
Es müsste ja dann irgendwo ein AllowOverride None oder ein deny all stehen oder verstehe ich das jetzt falsch?
Nur letzteres. allowOverride beeinflusst nicht das Vererben in der httpd.conf, sondern regelt, welche Gruppen von Direktiven in .htaccess-Dateien genutzt werden können.
Wenn du deinen Dreizeiler entfernst, kannst du auf Seiten, die in dem Bereich liegen, zugreifen, sehe ich das richtig?
Die Files-Sektionen sie soweit ok, sie verhindern z.B. die Auslieferung von .htaccess-Dateien.
Hi Bob,
jepp sobald ich mein:
<Directory "/home/www/secur_test">
Order deny,allow
Deny from all
Allow from 88.69.120.xxx
Allow from domain.com
</Directory>
rausschmeisse geht das natürlich.
Aber ich muss das wie gesagt hinbekommen - zum einen mit IP-Adressen sowie auch mit bestimmten Domains die ich erlauben möchte/muss.
Naja ich habe jetzt schon mal alternativ an die Techniker vom Provider ne Mail geschrieben. Mir kommt es halt so vor - als ob irgendwo was drinne steckt was ich nicht sehen kann/darf.
Wenn du deinen Dreizeiler entfernst, kannst du auf Seiten, die in dem Bereich liegen, zugreifen, sehe ich das richtig?
Hi Bob,
jepp sobald ich mein:
<Directory "/home/www/secur_test">Datei zum Regeln von IP-Bereichen
Order deny,allow
Deny from all
Allow from 88.69.120.xxx
Allow from domain.com
</Directory>rausschmeisse geht das natürlich.
Dann kann eigentlich kein weiteres "Deny from all" irgendwo stecken, was diese Directory-Sektion überschreibt. Denn, sollte etwas diese Anweisung überschreiben, dann muss die überschreibende Direktive auch für den Fall des Nichtvorhandenseins deiner Directory-Section gelten, also generell den Zugriff verweigern.
Da in deinem Fall bei unter der IP 88.69.120.xxx beide Direktiven passen, hat gem. der Order-Dirktive Allow die finale Matchkontrolle. Warum es dennoch nicht funktioniert, ist mir ein Rätsel... Du kannst einmal in die error.log schauen, ob du dort etwas findest. Ein Dateisystemproblem (Rechte) kann es ja nicht sein. Ich vermute mal, du findest in der error.log "Client denied by server configuration"?
Guten Tag,
Hoffe das is jetzt das richtige:
Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 PHP/5.2.6 mod_ssl/2.2.3 OpenSSL/0.9.8c
Du suchst in der falschen Dokumentation (trunk ist 2.3, nicht 2.2). Schau bitte in der Dokumentation zu 2.2 nach.
und in der httpd.conf steht folgendes:
<Directory />
Options Indexes FollowSymLinks MultiViews ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>Hilft das weiter?
Du solltest AllowOverride auf None stellen und Konfiguration direkt in der httpd.conf oder in einer sonstwie organisierten Struktur ablegen, die du in die httpd.conf inkludierst. Beim Umzug der Konfiguration f kannst du dann auch gleich prüfen, ob irgendwo ein Container deine Konfiguration für den genannten Ordner ändert.
Solltest du ein Konfigurationswerkzeug wie Plesk oder so verwenden und du nichts selbst konfiguriert haben, ist der Hersteller dein Ansprechpartner.
Gruß
Christoph Jeschke