Ergebnis 1 bis 9 von 9

Thema: Zugriffskontrolle mit .htaccess

  1. #1
    Registrierter Benutzer
    Registriert seit
    Apr 2012
    Beiträge
    5

    Zugriffskontrolle mit .htaccess

    Hallo zusammen, ich habe hier ein kniffliges Problem bei dem ich bislang weder mit Suchen im Internet, noch in diversen Foren weitergekommen bin. Eigentlich geht es "nur" um den Schutz eines Verzeichnisses mittels .htaccess

    Folgende Ausgangssituation:

    Ich betreibe eine Website auf meinem eigenen Server. Installiert ist ein Apache 2.2.22; die Module mod_ssl und OpenSSL sind ebenfalls installiert. Der Zugriff über das Internet erfolgt ausschließlich über https. Im Router ist hierfür der Port 443 freigeschaltet. Um auf eine bestimmte Seite zugreifen zu können habe ich in einer .htaccess Datei eine SSL Client Authentifizierung eingerichtet. Dies funktioniert auch alles völlig problemlos.

    Nun möchte ich aber zusätzlich folgendes erreichen:
    Um aus dem LAN auf die selbe Seite zugreifen zu können, möchte ich keine SSL Client Authentifizierung durchführen. Hier soll jeder Client aus einem bestimmten Subnetz berechtigt sein die Seite mittels HTTP aufzurufen.

    Es gibt Apache Konfiguartionen sowohl für den Zugriff mittels HTTPS, als auch für HTTP.

    Nun gibt es in der Apache-Dokumentation eine Kombinationsprüfung, die (so wie ich das verstehe) genau das umsetzt was ich vorhabe und ich habe versucht diese in eine .htaccess Datei umzubauen. Leider mit mäßigem Erfolg.

    So wie ich die Doku verstehe kann man hier unterschiedliche Prüfungskriterien definieren, die dann entweder jeweils einzeln (Satisfy any) oder alle zusammen (Statisfy all) zutreffen müssen, damit der Zugriff gestattet wird. Eigentlich entspricht das ganz exakt dem was ich vorhabe.

    Ich habe mir aus dem Beispiel nun eine .htaccess Datei gebastelt, wobei ich das FakeBasicAuth aus der Doku weggelassen habe, da ich ja gerade keine Passwortabfrage generieren möchte, sondern eine reine Client-Zertifikats-Auth.

    Meine .htaccess sieht nun so aus:


    Code:
    SSLOptions +StrictRequire
    SSLVerifyClient optional
    SSLVerifyDepth  5
    SSLRequire %{SSL_CLIENT_S_DN_CN} eq "xxxxx" \
            or %{SSL_CLIENT_S_DN_CN} > "yyyyy" 
    
    Order deny,allow
    Deny from all
    Allow from 192.168.178.0/24
    
    Satisfy any
    Leider funktioniert das nicht so wie in der Doku beschrieben.

    Wenn ich nun aus dem LAN heraus per http auf die Webseite zugreife, wird mir diese einwandfrei angezeigt.
    Wenn ich aus dem Internet per https auf die Webseite zugreife, wird mir eine Fehlerseite angezeigt, dass die Seite nicht gefunden werden konnte. Wenn ich allerdings die Order, Deny, Allow und Satisfy Anweisung auskommentiere und dann nochmal per https aus dem Internet die Seite aufrufe, wird, so wie es sein soll, nach dem Zertifikat gefragt und danach die Seite korrekt angezeigt.
    Scheinbar funktioniert hier die Satisfy Prüfung irgendwie nicht.

    Hab ich etwas übersehen oder muss in den Apache-Conf Dateien etwas besonderes eingestellt werden, damit die Satisfy Prüfung überhaupt stattfindet?

    Ich hoffe, ich habe mich jetzt nicht zu verwirrend ausgedrückt.

  2. #2
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    2.679
    Wir haben das mit zwei verschiedenen Vhosts gelöst. Vielleicht wäre das eine Alternative.

  3. #3
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Sindelfingen
    Beiträge
    17.838
    ich vermute mal nach lesen der Doku, daß Du das falsch verstanden hast - es geht im Beispiel von der Apache-Doku nicht darum, daß jemand entweder mit ClientCert oder aus einem ded. Netzwerk zugreifen kann sondern darum, daß sowohl bei https also auch mit http entweder jemand aus einem ded. Netzwerk kommt oder eben ein htaccess-PW gewünscht ist.

    Das was Du willst kannst Du denke ich nur dadurch erreichen, daß Du die jeweils gewünschten Config-Einstellungn direkt im vHost konfigurierst und nicht über eine allgemeingültige htacces.
    Ich bin root - ich darf das.

  4. #4
    Registrierter Benutzer
    Registriert seit
    Apr 2012
    Beiträge
    5
    Ja, den Tip mit zwei vHosts habe ich auch schon mal bekommen. Diese Lösung würde für mich aber verschiedene Nachteile mitbringen.

    Erstens werden die vHosts ja in den Apache-Conf Dateien konfiguriert und diese werden bei mir leider bei jedem Firmwareupdate wieder auf Original zurückgesetzt, so dass ich jedes mal wieder die Änderungen neu durchführen müsste.

    Zweitens möchte ich verschiedene Unterseiten der Website für verschiedene Client-Zertifikate freigeben; deshalb kann ich die Client-Zertifikate nicht im vHost konfigurieren, da diese dann ja für alle Unterseiten Gültigkeit hätten.

    Aus diesen Gründen würde ich eigentlich gerne die Lösung mit einer .htaccess Datei realisieren, da ich diese angepasst für jedes Unterverzeichnis verwenden könnte und diese nicht bei einem Update überschrieben wird.
    Und laut Doku sollte das doch auch eigentlich funktionieren.

    Wie hast du denn die Config mit deinen vHosts gemacht?

  5. #5
    Registrierter Benutzer
    Registriert seit
    Apr 2012
    Beiträge
    5
    Hallo Marce, so wie ich das Beispiel verstehe, wird der Zugriff aus dem Internet mit RewriteCond immer auf HTTPS umgelenkt und dann eine Auth mittels Passwort durchgeführt. Die RewriteCond kann ich mir bei mir sparen, da aus dem Internet eh nur der Port 443 geöffnet ist und somit ein Zugriff mittels HTTP auf Port 80 nicht möglich ist und somit auch nicht umgeschrieben werden muss. Und das Basic Auth kann man ja durch ein Client-Zert Auth ersetzen.
    Der interne Zugriff aus dem LAN wird im Beispiel im vorletzten Absatz dann mit Order Deny,Allow geregelt. Die Kombinationsprüfung ist dann das Satisfy Any.
    Geändert von Wolfman_II (30.04.12 um 10:40 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Sindelfingen
    Beiträge
    17.838
    Deine Client-Cert-"Muss da sein-Konfig"-Einstellung ist nichts, was Satsfiy bearbeitet. Das ist nur dafür da, zwischen IP und PW-Zugriff zu unterscheiden.

    Siehe Doku.

    Ansonsten - wenn deine Apache-Config nach Updates überschrieben ist hast Du was falsch gemacht.

    Wenn Du Dinge öfters verwenden willst - kannst Du sie auch in ded. Konfigfiles auslagern und an gewünschter Stelle includen - so musst Du es nur 1x pflegen.

    Das was Du willst geht über die .htaccess nicht - sauber nur über ded. getrennte Hosts, die entsprechend eingerichtet sind.
    Ich bin root - ich darf das.

  7. #7
    Registrierter Benutzer
    Registriert seit
    Apr 2012
    Beiträge
    5
    Hmmm, das ist ärgerlich. Es hätte so einfach sein können....

  8. #8
    Fieses Frettchen Avatar von DrunkenFreak
    Registriert seit
    Dec 2003
    Beiträge
    2.679
    Möglich ist vieles mit PHP. Musst einfach nur die IP abfragen, welche die Anfrage stellt. Je nachdem welches es dann ist, leitest du entweder direkt weiter oder machst eine Überprüfung auf das Zertifikat (das wirst du wahrscheinlich auch wieder in PHP machen müssen).

  9. #9
    Registrierter Benutzer
    Registriert seit
    Apr 2012
    Beiträge
    5
    Ja, PHP war vorhin auch ein Gedanke von mir, hab ich aber schon wieder verworfen.
    Ich denke ich werde das mit den vHosts realisieren. Ich mache mir eine Muster Konfiguration und kopiere die nach einem Firmwareupdate einfach wieder zurück. Ist zwar lästig, kommt ja aber auch nicht sooo häufig vor.

    Danke für eure Gedanken.

Ähnliche Themen

  1. xampp 1.7 probleme mit .htaccess
    Von taskin73 im Forum Linux als Server
    Antworten: 1
    Letzter Beitrag: 18.11.09, 21:33
  2. Problem mit .htaccess und Satisfy
    Von dingeling im Forum Linux als Server
    Antworten: 10
    Letzter Beitrag: 29.09.09, 10:36
  3. .htaccess Problem
    Von Boyker im Forum Linux als Server
    Antworten: 1
    Letzter Beitrag: 29.09.06, 21:34
  4. Virtuell Host und .htaccess
    Von be1001 im Forum Linux als Server
    Antworten: 7
    Letzter Beitrag: 04.12.05, 12:52
  5. .htaccess funzt einfach nicht...
    Von Heike im Forum Sicherheit
    Antworten: 12
    Letzter Beitrag: 20.04.02, 12:23

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •