Geschützte Apache-Bereiche @ PS-Trainer

Anmeldung mit Name und Passwort

Es gibt unterschiedliche Methoden, um bestimmte sensible Bereiche gegen unerwünschten Zugriff zu schützen. Hier wird die einfache Methode vorgestellt, die der Apache Webserver dazu anbietet.
Apache Der weltweit erfolgreichste Standard Webserver (Linux, Windows)
Live-Demo Anmeldung für eine geschützte Webseite
Zugriffs-Schutz Viele Varianten sind möglich
Geschütztes Verzeichnis Erstellung von Verzeichnis, Dateien und Links
.htpasswd Zugangs-Datei für Namen und codierte Passworte
Codierung Codierung der Zugangs-Passworte (Live !)
Eigener Webserver Einstellung in der Server Grund-Konfiguration
Provider-Webserver Nachträgliche Live-Einstellung
.htaccess Konfigurations-Datei für ein Verzeichnis
Browser Verhalten, Konfiguration und Probleme
Verwandte Themen SSL-Webserver (HTTPS-Protokoll), Anzeige eigener Fehler-Seiten, diverse Verzeichnis-Tricks
Links Ausgewählte Links zum Thema 'Zugriffs-Schutz @ Apache'

Live-Anmeldung für eine Webseite mit Zugriffs-Schutz

Klicken sie auf die Links, um eine Webseite aus einem geschützten Bereich anzuzeigen:


Tipp:
Name=test
Passwort=test

Tipp:
Name=tgm
Passwort=tgm

Varianten für den Zugriffs-Schutz

Es gibt zahlreiche verschiedene Möglichkeiten, um Web-Dokumente gegen unerwünschten Zugriff zu schützen.
Die meisten professionellen Lösungen verwenden Datenbanken mit verschlüsselten Zugangs-Daten.
Einfachere Lösungen lassen sich auch ohne Datenbank mit Server-Programmiersprachen (Perl, PHP, Python, ...) programmieren oder fertig aus dem Internet laden.
Mit Javascript ist ein sehr einfacher Schutz möglich, lässt sich jedoch leicht knacken, da Javascript-Programme öffentlich sind.
Fast alle Lösungen erfordern auf Seite der/des AnwenderIn die Eingabe von Name und Passwort.

Wenn diese Dokumente mit HTTP angefordert werden, dann erfolgt die Übertragung dieser sensiblen Anmelde-Daten im Klartext.
Nur mit HTTPS werden zu Zugangsdaten verschlüsselt übertragen. Dabei wird jedoch meist vergessen, dass die angeforderten Dokumente selbst in (HTML)-Klartext gesendet werden.
Die hier vorgestellte Lösung erfordert einen (Apache) Webserver.
Es ist sehr ratsam, zumindest zu Testzwecken einen Webserver am eigenen Server oder Arbeits-PC zu installieren (Linux, Windows).
Wenn sie ihr Web auf den Server eines Providers hochladen, dann sollten sie sich zunächst erkundigen, welche Möglichkeiten ihr Provider anbietet.
Es ist sinnvoll, am eigenen Webserver zumindest zu Testzwecken die gleiche Methode zu verwenden.

Erlaubnis + Zugangsdaten + Konfiguration

Die hier vorgestellte Lösung verwendet eine Methode aus 3 Bestandteilen:
Die individuelle Konfiguration wird erlaubt
Die Daten aller User und Passworte werden gespeichert
Die Zugriffs-Rechts auf das geschützte Verzeichnis werden konfiguriert

Diese Lösung ist einfach und robust. Sie wird von den meisten Betreibern einfacher Webs verwendet.
 

Geschützter Bereich

Geschütztes Verzeichnis

Erstellen sie ein eigenes Verzeichnis zur Aufnahme aller geschützten Dokumente (Webseiten, Texte, Bilder, ...).
Legen sie das Verzeichnis innerhalb des Webserver Dokumente-Verzeichnisses an (wo sich ihre Startseite index.html befindet), z.B. (Linux, Windows)
/srv/www/htdocs/secret
C:\Web\htdocs\secret
Das Verzeichnis erhält auf Ebene des Betriebssystems die gleichen Zugriffsrechte wie alle anderen Unter-Verzeichnisse des Dokumente-Verzeichnisses.
Es ist (nur am eigenen Server) möglich, geschützte Verzeichnisse auch außerhalb des Dokumente-Verzeichnisses anzulegen. Dazu sollte jedoch zunächst die einfachste (hier vorgestellte) Variante zufriedenstellend funktionieren.

Unter-Verzeichnisse

Das (später zu schützende) Verzeichnis kann beliebig viele Unterverzeichnisse enthalten, für welche automatisch die gleichen Zugriffsrechte gelten. Damit sind ohne weitere Maßnahmen auch alle Dokumente in Unterverzeichnissen geschützt.

Mehrere AnwenderInnen-Gruppen

Wenn sie für unterschiedliche Gruppen von BesucherInnen jeweils andere geschützte Inhalte anbieten, dann legen sie später für jede Gruppe ein eigenes geschütztes Verzeichnis an. Beginnen sie jedoch besser mit einem einzigen geschützten Verzeichnis.

Dokumente und Links

In jedem geschützten Verzeichnis sollte sich zumindest ein Dokument befinden, z.B. eine eindeutig erkennbare Minimal-Webseite geheim.htm
Legen sie von einer uneingeschränkt zugänglichen Webseite einen Link dorthin und testen sie die Funktion: Wenn die Testseite (zunächst noch ohne Anmeldung) einwandfrei angezeigt wird, dann sind die Voraussetzungen dieses Kapitels erfüllt.

Zugangs-Datei   .htpasswd

Text-Datei

Die Namen und Passworte aller Gruppen und Personen, für welche der Zugang erlaubt werden soll, werden in einer einfachen Text-Datei eingetragen.
Wählen sie Name und Pfad möglichst genauso, wie das ihr Web-Provider erwartet. Nur in diesem Fall können sie die Zugangs-Datei und die zusätzlichen Konfigurations-Dateien unverändert auf den Server des Providers laden.

Datei-Name

Der Name der Zugangs-Datei kann im Prinzip beliebig gewählt werden, z.B. geheim.pwd
Besser ist jedoch ein Name, der mit .ht beginnt, weil derartige Dateien sowohl vom Linux Betriebssystem als auch von Apache (in der Standard-Konfiguration) besonders geschützt werden, z.B. .htpasswd
Windows hat Probleme mit solchen Datei-Namen: Erzeugen sie zuerst eine Text-Datei htpasswd.txt, öffnen sie eine Konsole cmd.exe und ändern sie den Namen:
C:\> rename htpswd.txt .htpswd

Codierung der Passworte

Dafür stehen mehrere Methoden zur Verfügung ( nächstes Kapitel).
Das Ergebnis ist im Idealfall eine Textzeile aus User:Passwort, welche direkt in die Apache Zugangs-Datei eingetragen werden kann.

Datei-Pfad

Der Pfad kann im Prinzip beliebig gewählt werden. Gute Pfade liegen außerhalb des Server Dokumente-Verzeichnisses und können daher von Web-BesucherInnen nicht erreicht werden. Die meisten Provider bieten innerhalb des Upload-Verzeichnisses getrennte Verzeichnisse für CGI und Web-Dokumente. In diesem Fall wählen sie den Pfad in ihr Upload-Verzeichnis.

User & Passwort

Stellen sie eine Liste von Namen und Passworten jener BesucherInnen auf, welche zu den Dateien des geschützten Verzeichnisses Zugang haben sollen.
Die Liste sollte eine überschaubare Anzahl von Zeilen (<10) enthalten.
Meist können mehrere Personen den gleichen Anmelde-Namen verwenden.
Wenn die Liste länger ist, dann sollten sie andere Methoden der Zugangs-Kontrolle (Datenbank) verwenden. Eine Live-Änderung der Passworte durch die AnwenderInnen ist in dieser einfachen Form nicht vorgesehen !
Die User-Namen werden in Klartext eingetragen. Diese Namen können frei erfunden werden. Sie stehen in keinem Zusammenhang mit irgendwelchen anderen Namen, z.B. User-Namen am Betriebssystem, etc.
Die Passworte werden verschlüsselt (↓ nächstes Kapitel).
Als Trennzeichen wird ein : Doppelpunkt verwendet.
Beispiel:
test:$apr1$AW......$lJM9d6hSAajKRME5RxLwc/

Passwort-Codierung

Codierung

Die Passworte einer Apache Zugangs-Datei lassen sich auf mehrere unterschiedliche Arten codieren..
Allen Methoden gemeinsam ist die Einweg-Codierung (Hashing):
Der Codier-Algorithmus ist nicht umkehrbar. Das codierte Passwort lässt sich mit vernünftigem Aufwand nicht decodieren.
Wenn ein Passwort vergessen wurde, dann muss ein neues codiert werden.

Die Sicherheit ist relativ hoch:
Für halbwegs "zufällige" Passworte gibt es >10E+16 verschiedene Möglichkeiten. Das ist für die Computer von Geheimdiensten kein Problem, im normalen geschäftlichen und privaten Verkehr jedoch sicher.
Häufig verwendete Passworte können allerdings auch von Amateuren decodiert werden ! Im Internet finden sie Listen solcher zu vermeidender Passworte. Wer seinen Namen, Spitznamen, Wohnort, Hobby, Haustier, usw. verwendet, macht Codierung eigentlich sinnlos...

Bewertung

Bei der Auswahl der Codier-Methode können sie nach eigenem Ermessen folgende Eigenschaften bewerten:
Herstellung mit eigenen Mitteln:
Sie sollten jederzeit in der Lage sein, ohne fremde Hilfe neue Passworte zu codieren.
Verwendung am Provider-PC:
Die Codierung sollte am PC+Apache ihres Web-Providers verwendbar sein. Das ist in der Praxis meist ein Linux-PC, dort sind zum Glück die meisten Varianten einsetzbar. Nur ein Live-Test kann diese Bedingung bestätigen !
System-unabhängig:
Auf Windows+Apache sind wesentlich weniger Varianten verfügbar. Ursache dürfte die Konfiguration von Windows sein, wo man den KundInnen 'zur eigenen Sicherheit' einige Bibliotheken zur Verschlüsselung vorenthält.
Reproduzierbarer Code:
Nur einige der vorgestellten Methoden erzeugen aus einem Passwort jedesmal den gleichen Code. Das ist von Bedeutung, wenn man mit einem eigenen Programm (PHP, Perl, Python, ..) ein Passwort mit seinem gespeicherten Code vergleichen will.

Experimentelle Daten

Alle hier vorgestellten Methoden der Passwort-Codierung wurden im Experiment getestet.
Es ist sehr wahrscheinlich, dass die Ergebnisse unter anderen Bedingungen zumindest teilweise anders ausfallen:
Betriebssystem und -Version, Apache-Version, Programmiersprache und -Version usw.

Keine Gewähr !

Es gibt daher keine Gewähr für die Richigkeit oder Reproduzierbarkeit der Angaben. Genau umgekehrt sollten sie die Methode ihrer Wahl selbst Live testen und bewerten.
Betrachten sie die vorgestellten Varianten als Anregung.

Linux-Programm htpasswd2

In allen professionellen Linux Distributionen werden zusammen mit dem Apache Webserver auch einige Hilfsprogramme installiert.
Sie finden das Programm htpasswd oder htpasswd2 meistens hier:
/usr/sbin/htpasswd2
So wird die integrierte Hilfe angezeigt:
# htpasswd2 -h
# man htpasswd2
# info htpasswd2

So erzeugt man im home-Verzeichnis von User ich eine Zugangs-Datei pass.txt und trägt den User franz mit Passwort geheim ein:
# htpasswd2 -bc /home/ich/pass.txt franz geheim
So trägt man in die Datei weitere User ein, z.B. sigrid mit Passwort secret
# htpasswd2 -b /home/ich/pass.txt sigrid secret
Typisches Ergebnis:
franz:$apr1$znQUC/..$XlRU4JZH852xcS1G487LC/

Ändern sie den Datei-Namen auf .htpasswd und verschieben sie die Datei in das passende Verzeichnis.

Der 37-Zeichen Code kann auf Linux+Apache und Windows+Apache verwendet werden und ist nicht reproduzierbar: Jede Ausführung erzeugt einen anderen Code

Windows-Programm htpasswd

In der Windows-Version der Apache-Distribution ist das Programm htpasswd.exe enthalten. Es befindet sich normalerweise hier:
C:\Programme\Apache Software Foundation/Apache*/bin/htpasswd.exe
So wird die integrierte Hilfe angezeigt (Pfad abgekürzt):
C:\..\bin> htpasswd /?

So erzeugt man im gleichen Verzeichnis eine Zugangs-Datei pass.txt und trägt den User franz mit Passwort geheim ein:
C:\..\bin> htpasswd -bc pass.txt franz geheim
So trägt man in die bestehende Datei weitere User ein, z.B. sigrid mit Passwort secret
C:\..\bin> htpasswd -b pass.pwd sigrid secret
Ändern sie den Datei-Namen auf .htpasswd
C:\..\bin> rename pass.txt .htpasswd
und verschieben sie die Datei in das passende Verzeichnis.
Die Änderung des Datei-Namens kann nur in der Konsole ausgeführt werden !

Der 37-Zeichen Code kann auf Linux+Apache und Windows-Apache verwendet werden, und ist nicht reproduzierbar: Jede Ausführung erzeugt einen anderen Code.

Wenn sie den Apache Webserver nicht installiert haben, dann können sie das Windows-Programm htaccess.exe unverbindlich von hier downladen.

Linux-Programm htpasswd2 / SHA

Das Programm htpasswd2 erzeugt auf Wunsch SHA-Code.
# htpasswd2 -bs /home/ich/pass.txt franz geheim

Typische Ergebnis:
franz:{SHA}kGByAB793z4R5tK1eC9Hd/4Dhzk=

Der 33-Zeichen Code kann auf Linux+Apache und Windows+Apache verwendet werden und ist reproduzierbar:
Jede Ausführung erzeugt den gleichen Code.

Linux-Programm htpasswd2 / CRYPT

Das Programm htpasswd2 erzeugt auf Wunsch CRYPT-Code:
# htpasswd2 -bd /home/ich/pass.txt franz geheim

Typisches Ergebnis:
franz:AQPOeZm2PfbxI

Der 13-Zeichen Code kann nur auf Linux+Apache verwendet werden und ist nicht reproduzierbar:
Jede Ausführung erzeugt einen anderen Code.

Perl oder PHP crypt mit salt="$1"

Die Programmiersprachen Perl und PHP sind sowohl auf Linux als auch auf Windows einsetzbar. Beide bieten die Funktion crypt
Sie codiert je nach angewendeter Variante und Betriebssystem teilweise unterschiedlich. Hier wird die Anwendung als Konsolen-Programm (CLI) vorgestellt. Die Ergebnisse sind in anderer Form (z.B. als dynamische Webseite) identisch.
Folgende Varianten liefern reproduzierbare identische Ergebnisse:
Linux
# perl -e 'crypt("geheim","\$1")'
# php -r 'print crypt("geheim","$1")."\n"'
Windows
C:\> php -r "print crypt('test','$1')"

Typisches Ergebnis:
franz:$1$$ZxI4u66NDZqJxLyzc7bpi/

Der 26-Zeichen Code kann nur auf Linux+Apache verwendet werden und ist reproduzierbar:
Jede Ausführung erzeugt den gleichen Code.
Das funktioniert gleichartig mit salt=$1$ oder mit 1..8 weiteren Zeichen nach $1$

PHP crypt ohne salt

Die Programmiersprache PHP ist auf Linux oder Windows einsetzbar und bietet die Funktion crypt
Anwendung auf Linux:
# php -r 'print crypt("test")."\n"'
Windows
C:\> php -r "print crypt('test')"

Typische Ergebnis:
franz:$1$2k4.hL4.$oJYVrwXDeDdEnaltmS7LN/

Der 34-Zeichen Code kann nur auf Linux+Apache verwendet werden und ist nicht reproduzierbar: Jede Ausführung erzeugt einen anderen Code.

Linux-PHP crypt mit salt="a"

Die PHP-Funktion crypt kann als 2. Argument salt Strings aus 1 oder 2 Zeichen verwenden. Hier wird als salt das Zeichen a verwendet.
Die Ergebnisse sind reproduzierbar, jedoch auf Linux und Windows unterschiedlich. Das kann allerdings auch an der PHP-Variante liegen, die beim Test nicht genau identisch war.
Nur die Linux-Variante war verwendbar:
# php -r 'print crypt("geheim","a")."\n"'

Typisches Ergebnis:
franz:a$fN/NQ5omORk

Der 13-Zeichen Code kann nur mit Linux+PHP erzeugt und auf Linux+Apache verwendet werden. Er ist reproduzierbar, d.h. jede Ausführung erzeugt den gleichen Code.

Nicht verwendbar

Folgende Programmiersprachen-Varianten konnten auf keiner Apache-Version verwendet werden:

PHP-Funktion md5 liefert reproduzierbare identische Ergebnisse von 32 Zeichen auf Linux oder Windows:
# php -r 'print md5("test")."\n"'
C:\> php -r "print md5('test')"
Ergebnis:
franz:e8636ea013e682faf61f56ce1cb1ab5c

Perl-Funktion crypt mit salt="a" und Windows-PHP crypt mit salt="a" liefern reproduzierbare, jedoch jeweils unterschiedliche und mit Apache nicht verwendbare Ergebnisse von 13 Zeichen.

Online SelfHTMLh4> SelfHTML bietet auf der Seite
http://de.selfhtml.org/servercgi/server/htaccess.htm
die Live-Codierung eigener Passworte. Es werden nicht reproduzierbare 13-Zeichen Codes dieser Form erzeugt:
franz:yovm5QfbdnPP2
die nur auf Linux+Apache verwendbar sind.

Online PHPbb

PHPbb bietet auf der Seite
http://www.phpbb.de/diverses/htpasswd.php
die Live-Codierung eigener Passworte. Es werden nicht reproduzierbare 34-Zeichen Codes dieser Form erzeugt:
franz:$1$Z3MO7GKM$MNF1f1KU7Io6yXcEoQJaq.
die nur auf Linux+Apache verwendbar sind.
Formular (nächster Absatz)
Geben sie Name und Passwort in das Formular (nächster Absatz unten) ein. Damit wird eine Text-Zeile (blaue Schrift) erzeugt, welche man direkt in eine Apache Name- und Passwort-Datei eintragen kann.

Die Codierung kann mit unterschiedlichen Werten für "salt" (Salz) durchgeführt werden. In diesem Web werden für jede Anwendung neue Zufalls-Werte für salt verwendet, daher wird auch bei gleichbleibenden Daten jedesmal ein anderer Code erzeugt.
Hier können sie den codierten Text (blau im Fenster rechts, ohne Gewähr !) Live erzeugen: Beachten sie auch Groß- und Kleinschreibung !

User
Passwort
fix   variabel   Salt

Diese Codierung wird mit der PHP-Funktion crypt durchgeführt.

Eigener Webserver

Am eigenen Server haben sie vollen Zugriff auf die Konfiguration des Webservers. Das Beispiel rechts zeigt, wie man ein geschütztes Verzeichnis (secret) für einen angemeldeten User (test) freigibt.
AllowOverride verbietet jede Änderung der Apache Konfiguration durch .htaccess Dateien.
AuthUserFile definiert den Pfad zur Zugangs-Datei
AuthName definiert einen beliebigen, jedoch eindeutigen Namen für diesen Zugriffs-Bereich.
Require legt den Namen derjenigen User fest, welche nach korrekter Anmeldung Zugang haben.

<Directory "/srv/www/htdocs/secret">
AllowOverride None
AuthUserFile /srv/www/htdocs/.htpasswd
AuthName Geheim
AuthType Basic
Require user test
</Directory>
Wenn mehrere User Zugriff haben sollen, dann werden ihre Namen durch Leerzeichen getrennt:
Require user test gast franz anna
Zugang für alle in der Zugangs-Datei eingetragenen User:
Require valid-user

Auf Windows bezeichnen sie den Pfad zum geschützten Verzeichnis z.B. mit
<Directory C:/Web/htdocs/secret>
Als Pfad-Separator kann ein / Zeichen verwendet werden.

Tipp: Nach dieser Methode sollten sie den Zugriffs-Schutz nur für jenen Teil der Dokumente einrichten, die ausschließlich im lokalen Netzwerk (LAN) verwendet werden.

Jene Dokumente, die für den späteren Upload auf den Server eines Web-Providers bestimmt sind, werden besser nach der Methode für Provider (nächstes Kapitel) konfiguriert.
Nach Neustart des Webservers tritt die Konfiguration in Kraft. Danach ist der Zugang zum geschützten Verzeichnis nur nach korrekter Anmeldung möglich.
Für diese Methode werden ausdrücklich keine .htaccess Dateien (nächstes Kapitel) verwendet.
Starten sie zu jedem Test den Browser neu, denn ein Browser zeigt nur beim ersten Versuch das Anmelde-Fenster und öffnet geschützte Dokumente bei allem weiteren Versuchen ohne erneute Anmeldung.
Wenn ihr Server die mit AuthUserFile angegebene Datei nicht findet oder nicht lesen kann, dann wird normalerweise HTTP Fehler-Code 500 angegeben.

Provider-Webserver

Am Server eines Web-Providers haben sie natürlich keinen Zugang zur Konfiguration. Apache bietet für solche Zwecke die Möglichkeit, die Konfiguration für jedes einzelne Verzeichnis Live (zur Ausführungszeit) zu ändern. Das wird u.a. für eigene Fehler-Webseiten und für die Zugangs-Kontrolle verwendet.

Wenn diese Option in der Apache Konfiguration zugelassen wurde (Beispiel rechts), dann sucht Apache in jedem Verzeichnis nach einer Text-Datei mit dem Namen .htaccess

Der Inhalt dieser Datei besteht aus Konfigurations-Anweisungen für Apache. Sie werden genauso interpretiert wie in der Grund-Konfiguration.
Die .htaccess Anweisungen gelten für alle Dateien im jeweiligen Verzeichnis und in allen Unter-Verzeichnissen.
Die individuelle Änderung der Konfiguration durch .htaccess Dateien ist normalerweise verboten.
So wird die Änderung für ein bestimmtes Verzeichnis erlaubt:
<Directory /srv/www/htdocs/secret>
AllowOverride AuthConfig
</Directory>
Diese Konfiguration tritt nach Neustart des Webservers in Kraft.

Der gesamte Webspace von Provider-Kunden ist normalerweise so konfiguriert. In diesem Fall kann jeder Kunde die gewünschten Zugangsrechte einstellen, einfach indem eine entsprechend formulierte Datei .htaccess in ein Verzeichnis geladen wird.
Damit wird das betreffende Verzeichnis und alle seine Unter-Verzeichnisse konfiguriert.

Dieser Komfort wird durch Mehr-Arbeit des Servers erkauft: Apache sucht in jedem Verzeichnis nach der .htaccess Datei und liest sie bei jeder einzelnen Anforderung !

Apache Konfiguration

Die Apache Grund-Konfiguration ist am eigenen Server zugänglich, am Server des Web-Providers nicht. Einige Anweisungen beeinflussen das Verhalten von .htaccess

Name der Datei für Zugangs-Kontrolle:
AccessFileName .htaccess
Ändern sie diesen Namen nur dann, wenn ihr Web-Provider einen anderen Datei-Namen verwendet.

Dateien dieses Namens werden nicht angezeigt:
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
Damit wird unterbunden, dass irgend eine durch den RegExp-Ausdruck betroffene Datei (Name beginnt mit .ht) von einem Client (Browser) angezeigt wird. Das dient zum Schutz dieser Dateien.

Erlaubnis zur Live-Änderung der Konfiguration
<Directory /home/test>
AllowOverride AuthConfig
# AllowOverride All
</Directory>
Anweisung AllowOverride regelt die Möglichkeiten zur (nachträglichen) Live-Konfiguration.
Die Reichweite umfasst alle Dateien des angegebenen Verzeichnisses und seiner Unter-Verzeichnissse.
Normalerweise wird diese Option zunächst einmal für alle Verzeichnisse mit AllowOverride None verboten. Erst danach wird die Option für ausgewählte Verzeichnisse freigegeben.
Im Beispiel wird die Option für das private Verzeichnis des Users test freigegeben (Typisch für einen Web-Provider). Am eigenen Server verwenden sie diese Option für jene Webseiten, die zum Provider hochgeladen werden, nicht jedoch für Webseiten, die nur im eigenen lokalen Netzwerk verwendet werden.
Mit den oben vorgestellten Maßnahmen wird die Zugriffs-Kontrolle lediglich vorbereitet.

Wenn diese Vorbereitungen ausgeführt sind, dann sind die Dokumente im geschützten Verzeichnis noch immer frei zugänglich, so wie alle anderen Webseiten.
Damit der vorbereitete Schutz in Kraft gesetzt wird, muss noch eine Konfigurations-Datei .htaccess erzeugt und konfiguriert werden (↓ nächstes Kapitel).

Konfigurations-Datei   .htaccess

Eine oder mehere Dateien mit dem Namen .htaccess sorgen für die nachträgliche Live-Konfiguration eines dafür eingerichteten Apache Webservers. Damit das funktioniert, müssen alle oben vorgestellten Voraussetzungen erfüllt sein:

Erzeugung eines zu schützenden Verzeichnisses inkl. Dateien und Links dorthin
Erzeugung der Zugangs-Datei .htpasswd
Freigabe der nachträglichen Konfiguration mit der Anweisung AllowOverride
Nun fehlt noch die Aktivierung der vorbereiteten Möglichkeiten.

Dazu wird eine Konfigurations-Datei .htaccess erzeugt, konfiguriert und in den richtigen Pfad geladen.

Tipp: Auf Linux ist fast jeder Text-Editor geeignet.
Auf Windows hat sich Notepad++ (NPP) besonders bewährt. Damit kann man u.a. auch Text-Dateien Linux Windows korrekt umwandeln.

Datei-Name

Der Name der Konfigurations-Datei muss genau mit jenem Namen übereinstimmen, welcher in dieser Anweisung der Grund-Konfiguration festgelegt wurde: Standard ist
AccessFileName .htaccess

Sie sollten am eigenen Server den Datei-Namen .htaccess in dieser Anweisung nur dann ändern, wenn ihr Web-Provider einen anderen Namen verwendet.

Windows hat Probleme mit solchen Datei-Namen.
Daher 2 alternative Tricks:
Erzeugen sie die Datei auf Linux und kopieren sie auf Windows.
Erzeugen sie auf Windows eine Text-Datei htaccess.txt
Starten sie eine Konsole cmd.exe und ändern sie den Datei-Namen:
C:\> rename htaccess.txt .htaccess

Datei-Pfad

Der Pfad ist ebenfalls vorgegeben - Die Datei kommt in das zu schützende Verzeichnis, z.B.
/srv/www/htdocs/secret/.htaccess
C:\Web\htdocs\secret\.htaccess
Die eingestellte Konfiguration gilt ebenso für alle im geschützten Verzeichnis (secret) enthaltenen Unter-Verzeichnisse.

Es ist möglich, mehrere Verzeichnisse mit je einer eigenen .htaccess Datei zu konfigurieren. Bedingung ist lediglich, dass die nachträgliche Konfiguration für das berteffende Verzeichnis mit einer Anweisung AllowOverride (Kapitel oben) erlaubt wurde.

Inhalt

Rechts ein Beispiel für eine .htaccess Datei am eigenen Server.
AuthType Basic ist derzeit die einzige Form dieser Anweisung.
AuthName ist ein frei wählbarer Name für den geschützten Bereich, muss jedoch einzigartig sein. Wenn sie mehrere geschützte Bereiche definieren, erhält jeder einen eigenen Namen. Verwenden sie nur Buchstaben, Ziffern und _ Underline.
Require definiert die zugelassenen User. Sie werden einzeln namentlich angeführt oder mit valid-user alle User, die sich korrekt anmelden.

Beispiel für eine Text-Datei .htaccess
AuthType Basic
AuthName "Geheim"
AuthUserFile /srv/www/.htpasswd
Require valid-user
Pfad
AuthUserFile definiert den Pfad zur Zugangs-Datei. Normalerweise (und am eigenen Server) wird der absolute Pfad verwendet.
Ein relativer Pfad orientiert sich am Apache Programm-(!)-Verzeichnis ServerRoot
Beispiel:
AuthUserFile "/.htpasswd"
bezeichnet auf Windows den Pfad
C:\Programme\..\Apache2.2\.htpasswd
Provider
Am Server des Providers ist ein relativer Pfad nicht verwendbar, weil man dort als Kunde keinen Zugriff hat.
Man muss daher den absoluten Pfad zu den eigenen Dateien kennen und angeben.
Dieser Pfad führt meistens in das /home/username Verzeichnis des (Linux)-Servers (Beispiel rechts)
Falls das nicht funktioniert, muss man die Information vom Provider einholen.

Beispiel für eine Datei .htaccess
AuthType Basic
AuthName "Geheim"
AuthUserFile /home/domain.at/.htpasswd
Require valid-user
In diesem Fall sind alle (in der Datei .htpasswd) eingetragenen User zugelassen.

Wenn nur bestimmte User zugelassen sind, dann werden ihre Namen einzeln angeführt (durch Leerzeichen getrennt):
Require user admin test gast
Damit ist der Zugang zum geschützten Verzeichnis fertig konfiguriert und kann getestet werden. Starten sie zu jedem Test den Browser neu, denn ein Browser zeigt nur beim ersten Versuch das Anmelde-Fenster und öffnet geschützte Dokumente bei allem weiteren Versuchen ohne erneute Anmeldung.

Satisfy

Diese Anweisung regelt das Verhalten, wenn mehrere Bedingungen eingetragen sind.

ODER-Verknüpfung
Der Zugang wird erlaubt, wenn mindestens eine der Bedingungen erfüllt ist (Beispiel rechts)
Satisfy Any

UND-Verknüpfung
In diesem Fall müssen alle eingetragenen Bedingungen erfüllt werden:
Satisfy All
# Alles verboten
Order Deny,Allow
Deny from All
# Ohne Anmeldung erlaubt für diesen Bereich
Allow from 84.114.180.0/255.255.255.0
# Erlaubt mit Anmeldung
AuthType Basic
AuthName "Test"
AuthUserFile /srv/www/htdocs/.htpasswd
Require user test
# Eine der 2 Bedingungen genuegt
Satisfy Any

Browser

Wenn ein Dokument aus einem geschützten Verzeichnis angefordert wird, dann sendet der Webserver jedesmal den HTTP Status Code 000.
Ein Browser reagiert darauf nur beim ersten Mal durch Öffnen des Anmelde-Fensters (Name / Passwort).
In jedem weiteren Fall sendet der Browser automatisch die ihm bereits bekannten Zugangs-Daten, damit wird die gewünschte Datei vom Server geliefert - ohne merkbare Verzögerung und ohne weitere Anmeldung.
Dieses Verhalten sollten sie insbesondere bei einem Test berücksichtigen:
Öffnen sie für jeden Test der Zugangs-Konfiguration ein neues Browser-Fenster und schließen sie das Fenster nach dem Test wieder.
Ansonsten besteht die Gefahr einer falschen Interpretation - Sie bemerken nicht, ob ihr Browser bereits gespeicherte Zugangs-Daten sendet.

Gespeicherte Zugangs-Daten

Am besten sollten Browser nach Verwendung alle gespeicherten Daten löschen. Das ist eine wichtiges Sicherheits-Maßnahme.
Aus Bequemlichkeit neigen manche AnwenderInnen dazu, die Daten ihrer Surf-Sitzungen zu speichern, insbesondere auch Zugangs-Daten.
Das wird nicht empfohlen, da man an ihrem PC jederzeit eine der besuchten geschützten Webseiten anfordern kann (ihre Surf-History ist ja gespeichert) und ihr Browser dann automatisch und unbemerkt die Zugangs-Daten (im Klartext) sendet.

Das Verhalten des M$IE Browsers ist besonders lästig, da er sich auch solche Anmeldungen merkt, die nicht funktioniert haben: Bei erneuter Anforderung sendet er automatisch die (fehlerhaften) Anmelde-Daten.
Man muss das Browser-Fenster schließen und den Browser neu starten - oder einen der wesentlich besseren modernen Browser verwenden.
Alle gängigen Browser bieten eine Funktion zum Löschen der gespeicherten Daten. Moderne Browser löschen dabei selbstverständlich auch die gespeicherten Zugangs-Daten.
Kontrolle: Besuchen sie eine geschützte Webseite, löschen sie die Zugangs-Daten und fordern sie die Seite neu an: Sie können beruhigt sein, wenn erneut das Anmelde-Fenster geöffnet wird.
Der M$IE Browser löscht die gespeicherten Daten leider (ohne Warnung) nicht vollständig. Sie müssen zusätzlich das Browser-Fenster schließen.
Erst in einem neuen Browser-Fenster sind ihre angeblich gelöschten Anmelde-Daten wirklich vergessen - Außer wenn sie den Browser so konfiguriert haben, dass er sich die Daten merkt. Geheimdienste, Hacker, Verbrecher und neuerdings auch die Polizei freuen sich über gespeicherte Daten aller Art...


XHTML CSS