zugriff eingrenzen .htaccess

Alles, was den Apache betrifft, kann hier besprochen werden.

zugriff eingrenzen .htaccess

Postby WilliL » 18. April 2010 21:15

Hallo Zusammen,

ich habe ein Problem mit der Eingrenzung der Rechte eines Verzeichnisses. Die Lösung soll auf Windows UND Linux funktionieren.

ein workaround:
Code: Select all
# .htaccess-Datei  /scripts
#
order deny,allow
allow from localhost
deny from all
Options -Indexes


Leider musste ich "allow from localhost" einbinden, da in diesem Ordner auch ein captchascript liegt.

Gibt es eine bessere Lösung? (Dateien sollen eingebunden werden können UND ein Script soll Scripts in diesem Verzeichnis aufrufen können.)
Oder ist dies eine "sichere" Lösung?
Danke
Willi
WilliL
 
Posts: 661
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: zugriff eingrenzen .htaccess

Postby Nobbie » 18. April 2010 22:35

WilliL wrote:Gibt es eine bessere Lösung? (Dateien sollen eingebunden werden können UND ein Script soll Scripts in diesem Verzeichnis aufrufen können.)


Tja, kann man nicht beantworten, weil Du Vokabeln benutzt, die technisch nichts aussagen. Es gibt kein "einbinden" und es gibt auch kein "aufrufen" im Kontext HTTP.

Du müßtest schon präziser darstellen, was Du persönlich unter "einbinden" verstehst und was Du unter "aufrufen" verstehst.

Ich beispielsweise verstehe unter "einbinden" GAR NICHTS (das ist so labberig formuliert, das kann alles und nichts sein) und unter "aufrufen" versteht man nach normaler Programmiersprachenkonvention den Aufruf einer Funktion innerhalb eines ausführbaren Programmes. Also beispielsweise in einem PHP-Script die Funktion phpinfo() "aufrufen".

Andere eindeutige Formulierungen sind beispielsweise "verlinken" (einen Link so schreiben, dass er auf ein bestimmtes Dokument zeigt, so dass ein Browser einen HTTP-GET-Request auf einen Server veranlasst, wenn man mit der Maus darauf klickt), oder auch "inkludieren", das ist im Kontext von PHP-Scripts das Ausführen der "include" Anweisung. Man kann auch CSS-Stylesheets "inkludieren", aber technisch ist das genau genommen wieder ein Link, der als HTTP-GET-Request ausgeführt wird (als wenn man mit einer Maus drauf geklickt hätte).
Nobbie
 
Posts: 8770
Joined: 09. March 2008 13:04

Re: zugriff eingrenzen .htaccess

Postby WilliL » 19. April 2010 11:59

danke für den Hinweis, bin vertrieblich vorgefärbt
Ich möchte sowohl inkludieren (das funktionert) als auch andere PHP-Scripts aufrufen/ausführen (z.B. captcha.php).
Code: Select all
# .htaccess-Datei  /scripts
#
order deny,allow
allow from all
deny from all

wäre meine bevorzugte Einstellung gewesen. Hierbei funktioniert das Inkludieren (functions.inc.php), aber Apache unterbindet dann natürlich den Aufruf von PHP-Scripts. (nach errorlog: Denied ...)
Hier suche ich eine möglichst "sichere" Einstellung.
Hintergrund:
zu Hause XAMPP auf Windows als Testumgbeung,
Web-Space gehostet Linux user/htdocs/ , also kann ich nicht auf andere Verzeichnisse zurück greifen
Einstellungen der beiden System ist soweit es (mir) möglich ist auf beiden Systemen gleich

Die zuerst aufgeführte .htaccess funktioniert zwar, ich habe aber ein ungutes Gefühl dabei. Lieber würde ich den Browserzugang ablehnen oder nur einzelnen Dateien Zugriff erlauben, hierzu habe ich jedoch nichts gefunden.
Allerdings soll die Lösung unter Windows und Linux funktionieren.
Willi
WilliL
 
Posts: 661
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: zugriff eingrenzen .htaccess

Postby Nobbie » 19. April 2010 12:34

WilliL wrote:Web-Space gehostet Linux user/htdocs/ , also kann ich nicht auf andere Verzeichnisse zurück greifen


Natürlich, Du kannst doch neben htdocs beispielsweise einen Ordner scripts anlegen (user/scripts). Und genau das ist schon die Lösung, denn PHP kann auf das ganze Dateisystem zugreifen, aus dem Verzeichnis htdocs beispielsweise mit:

Code: Select all
include '../scripts/datei.inc.php';


Da aber user/scripts außerhalb des DocumentRoots liegt, ist ein Zugriff via HTTP Request (via Apache) unmöglich. Funktioniert auf allen Systemen gleich.
Nobbie
 
Posts: 8770
Joined: 09. March 2008 13:04

Re: zugriff eingrenzen .htaccess

Postby Altrea » 19. April 2010 12:43

Code: Select all
# .htaccess-Datei  /scripts
#
order deny,allow
allow from all
deny from all


Ist das nicht vollkommener nonsense?
Zuerst prüft der Apache, ob es irgendwelche deny Directiven gibt, verbietet also den Zugang,
um dann als nächstes das deny wieder für ALLE zu überschreiben und allen den Zugriff zu erlauben O.o

Ich empfehle da mal die Apache Dokumentation, denn ich denke nicht, dass du genau weißt, was die einzelnen Zeilen genau machen.
Vorallem der Abschnitt zu mod_authz_host dürfte interessant sein.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 8293
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: zugriff eingrenzen .htaccess

Postby WilliL » 19. April 2010 17:12

Nobbie wrote:
WilliL wrote:Web-Space gehostet Linux user/htdocs/ , also kann ich nicht auf andere Verzeichnisse zurück greifen

Natürlich, Du kannst doch neben htdocs beispielsweise einen Ordner scripts anlegen (user/scripts). Und genau das ist schon die Lösung, denn PHP kann auf das ganze Dateisystem zugreifen,


Sorry, dann war ich nicht genau genug. (versuche zukünfig präziser zu sein)
genau da liegt der Hase im Pfeffer. Ich habe erst Zugriff an htdocs/ . Für übergeordnete Verzeichnisse ist der Zugang gesperrt. Diese Lösung wäre mir noch lieber gewesen.

Altrea wrote:Ist das nicht vollkommener nonsense?

Danke für den Link.
Du hast recht, ich verstehe nur einen Randbereich, diesen Scriptteil habe ich blind kopiert (er tat es). Vermutlich ist der Teil "allow from all" quatsch.
Bisher habe ich vieles aus dem .htaccess Bereich nicht verstanden. Die deutsche Literatur ist sehr spartanisch (teilw. "nonsens") und bei der englischen fehlt mir teilw. das Fachvokabular.
Willi
WilliL
 
Posts: 661
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: zugriff eingrenzen .htaccess

Postby Altrea » 19. April 2010 18:18

Die Grundprinzipien sind garnicht so schwer wie es manchmal scheint.

Order beschreibt, in welcher Reihenfolge die Regeln befolgt werden. Der erste Wert bekommt zuerst beachtung, danach der zweite (Order allow, deny heißt also, dass erst nach allow gesucht wird, danach nach deny). Passt auf einen Host (IP oder Hostname) sowohl eine deny, als auch eine allow Regel, so überschreibt der zweite Wert den ersten. Man könnte sagen, dass der zweite Wert mehr Gewicht hat.

So kann man relativ leicht Black- und Whitelisting auf Verzeichnisse anwenden.

Ein typisches Whitelisting (also das zulassen von z.B. einzelnen IP-Adressen) würde so aussehen:

Code: Select all
order deny, allow
deny from all
allow from 127.0.0.1

Alle Zugriffe verboten, mit ausnahme von localhost

Ein Blacklisting ist das exakte Gegenteil:

Code: Select all
order allow, deny
deny from 74.125.39.106
allow from all

Alle Zugriffe erlaubt, außer von Googles Ip-Adresse :D

Beachten solltest du, dass es hier nur um HTTP Requests geht. Das includen von Dateien in php geschieht auf Verzeichnisebene und bleibt davon unberührt. Du kannst ja auch mit php Dateien includen, die Ebenen höher als dein htdocs Ordner liegen.

Wirklich interessant und mitunter auch komplizierter wird es, wenn du einzelne Dateien oder Dateitypen reglementieren möchtest.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 8293
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: zugriff eingrenzen .htaccess

Postby Nobbie » 20. April 2010 11:30

WilliL wrote:genau da liegt der Hase im Pfeffer. Ich habe erst Zugriff an htdocs/ . Für übergeordnete Verzeichnisse ist der Zugang gesperrt. Diese Lösung wäre mir noch lieber gewesen.


Dann kündige doch diesen minderwertigen Provider, denn selbst Billiganbieter haben da mehr Optionen. Warum sollst Du Dich mit den technischen Unzulänglichkeiten schlechter Provider ärgern?
Nobbie
 
Posts: 8770
Joined: 09. March 2008 13:04

Re: zugriff eingrenzen .htaccess

Postby WilliL » 20. April 2010 19:53

Altrea wrote:Ich empfehle da mal die Apache Dokumentation, denn ich denke nicht, dass du genau weißt, was die einzelnen Zeilen genau machen.
Vorallem der Abschnitt zu mod_authz_host dürfte interessant sein.

nochmals Danke für den Stupps in die Richtung (Seite in Favoriten) hat jetzt funktioniert , klappt jetzt wie gewünscht :D
... <Files ~ "(file.nam|\.(?i:css|xxx)$)">...

Nobbie wrote:Dann kündige doch diesen minderwertigen Provider, denn selbst Billiganbieter haben da mehr Optionen. Warum sollst Du Dich mit den technischen Unzulänglichkeiten schlechter Provider ärgern?

grundsätzlich hast du recht, da werde ich mich später drum kümmern. Da ich positiv eingestellt bin, sehe ich im Augenblick den Vorteil, das ich mir viel in kurzer Zeit aneignen/lesen muss - geht jedoch nur im Erfolg der kleinen Schritte ;)
Willi
WilliL
 
Posts: 661
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: zugriff eingrenzen .htaccess

Postby WilliL » 22. April 2010 17:45

Altrea wrote:Ein typisches Whitelisting (also das zulassen von z.B. einzelnen IP-Adressen) würde so aussehen:
Code: Select all
order deny, allow
deny from all
allow from 127.0.0.1

Alle Zugriffe verboten, mit ausnahme von localhost


Nachdem ich einiges gelesen habe stellt sich für mich die Frage warum nicht
Code: Select all
order allow,deny
allow from 127.0.0.1

Hatte das didaktische Gründe / Übersicht oder gibt es noch weitere Hintergründe?
(nach Apatche 2.2 Doku, funktioniert)
Willi
WilliL
 
Posts: 661
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: zugriff eingrenzen .htaccess

Postby Altrea » 22. April 2010 18:23

Ich finde es zum einen sauberer und zum anderen Übersichtlicher.
Bei der von dir geposteten Kurzschreibweise könnte sich für weniger in der Materie steckende Menschen die Frage stellen, welche Regel denn nun auf nicht angegebene IPs zutrifft. Wenn du der alleinherrscher über deine .htaccess Dateien bist, ist es natürlich vollkommen egal.

Es gibt aber noch einen logischen Grund.
WhiteListing bedeutet, ich will eine bestimmte IP definitiv zulassen, deshalb sollte allow mehr Gewicht bekommen als deny. Anderenfalls könntest du sonst ausversehen an anderer stelle dein allow durch ein deny überschreiben. Ein weiterer Punkt wäre, dass man auch IP-Bereiche, nichtnur einzelne IPs freigeben/sperren kann. Was wenn du einen ganzen IP-Bereich sperren möchtest mit ausnahme von deiner eigenen IP die ebenfalls mitten in dem Bereich liegt? Geht auch, so macht man es sich aber nur unnötig kompliziert.

Der Nachteil an der von mir geposteten Methode ist, dass die Grundeinstellung allow ist (wenn keine Regel auf eine IP zutrifft, gilt also allow). Klingt etwas unlogisch, wo man doch ein Whitelisting möchte. Man darf das deny from all also definitiv nicht vergessen. Ein weiterer Punkt wäre, dass man ein deny from all ebenso überschreiben kann.

Letztendlich ist es Geschmackssache. Viele Wege führen nach Rom.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 8293
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: zugriff eingrenzen .htaccess

Postby WilliL » 22. April 2010 20:40

Danke für die Erläuterung, da leuchtet mir einiges besser ein.
Für mich ergibt sich daraus: Whitelist, im Regelfall deny, allow und bei 'security first' allow, deny .
Willi
WilliL
 
Posts: 661
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: zugriff eingrenzen .htaccess

Postby WilliL » 20. November 2010 21:46

so, nach einiger Zeit bin ich den Punkt abgesicherte Directories noch einmal angegangen und habe jetzt auch den von mir vor 6 Monaten gesuchten Weg gefunden.
Code: Select all
#  .htaccess
#
SetEnvIf Referer "^http://www.domain.tdl/" local_referer
SetEnvIf Referer "^http://vhostservername/" local_referer
order deny,allow
deny from all
Allow from env=local_referer

Nochmals Danke an euch für die Hilfe zur Selbsthilfe
Willi
WilliL
 
Posts: 661
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: zugriff eingrenzen .htaccess

Postby WilliL » 05. January 2011 22:41

leider ist dieser Weg (folgende .htaccess) noch nicht optimal - mir fiel ein Hinweis von Nobbie ein zu vertrauenswürdigen Parametern ein, http://community.apachefriends.org/f/viewtopic.php?f=6&t=41583&p=164128&hilit=Sicherheit#p164146 und hab noch etwas im INet gegoogled. (apache referer manipulieren etc)
Mit refspoof konnte ich meinen Sicherheitsscript überlisten - d.h. ich konnte mit einem gefakten referer doch Dateien im "gesicherten" Bereich aufrufen.

Der Script funktioniert ansonsten optimal - es werden ausschließlich, wie beabsichtigt, nur Weiterleitungen aus dem DocumentRoot akzeptiert.
Code: Select all
#  .htaccess
#
SetEnvIf Referer "^http://vhostservername/" local_referer
order deny,allow
deny from all
Allow from env=local_referer

Die Lösung muss per .htaccess und /oder Script erfolgen :!:

Mir ist leider keine Lösungsansatz eingefallen, noch habe ich etwas im INet zu einem Lösungsansatz gefunden.
bei Seite gelegte Ansatz:
- .htaccess und .htusers müsste über ein Script anhand von Logindaten/Mysql-DB modifiziert werden und eine Authentifizierung ohne weitere Nachfrage durchführen, da diese schon im LogIn Script erfolgte.
- zu Logischen Verküpfung bei "SetEnvIf" habe ich nichts gefunden bzw. ich weiß nicht wie es geht, sonst würde ich über das LogIn Script eine $_ENV(''herein') setzen ala
Code: Select all
SetEnvIf (Referer "^http://vhostservername/" && herein ) local_referer


Hat jemand einen Tipp für mich, in welche Richtung ich weitersuchen kann? Geht es ggf. über einen anderen Ansatz besser?
Danke
Willi
WilliL
 
Posts: 661
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1


Return to Apache

Who is online

Users browsing this forum: No registered users and 7 guests