BananaJoe - .htpass
Passwortschutz
BananaJoes .htaccess
Mit der .htaccess Datei haben wir auch die Möglichkeit, einzelne Verzeichnisse auf unserem Webserver mit einem Passwort vor unberechtigtem Zugriff zu schützen.
Die Authentifizierung mittels Passwort erfolgt dabei
folgendermaßen:
Der Client (unser Browser) sendet den Namen und das Passwort an
den Apache Webserver. Dieser sieht in einer speziellen Datei nach,
ob der Client zugriffsberechtigt ist oder nicht.
Es ist möglich eine ganze Reihe von Personen in Gruppen
zusammenzufassen und diesen Gruppen als Ganzes den Zugang zu
erlauben oder zu verbieten.
Die Authentifizierungsdatei wird mit einem kleinen Programm erstellt, welches sowohl bei der UNIX/Linux als auch der Windows Version des Apache mitgeliefert wird.
Dieses Programm heißt "htpasswd" und findet sich im "bin" Verzeichnis von Apache. Es arbeitet kommandozeilenorientiert.
htpasswd
Das Utilitie htpasswd:
Um die Authentifizierungsdirektiven in der ".htaccess" Datei nutzen zu können, müssen wir ersteinmal eine Datei anlegen, in der die Namen und Passwörter der Benutzer eingetragen werden.
Dafür benutzen wir das mit Apache mitgelieferte Utilitie
"htpasswd", welches im "bin" Verzeichnis des
Apache zu finden ist.
Im weiteren Verlauf wird hier die Windows Version behandelt,
jedoch sind alle Angaben auch für die UNIX/Linux Version
nutzbar.
"htpasswd" arbeitet Kommandozeilen orientiert, d.h. es
gibt keine grafische Oberfläche.
Wir erledigen alles in der Eingabeaufforderung von Windows.
Parameter
Die für uns wichtigen Parameter beim Ausführen von
"htpasswd":
htpasswd [-cmdps] passwordfile
username
htpasswd -b[-cmdps] passwordfile username
password
Kommandoparameter:
| -c | Neue Datei erstellen |
| -n | Datei nicht updaten (Unter UNIX Ergebnisse an stdout senden) |
| -m | MD5 Verschlüsselung verwenden (Unter Windows standard) |
| -d | CRYPT Verschlüsselung verwenden |
| -p | Passwort nicht verschlüsseln |
| -s | SHA Verschlüsselung verwenden |
| -b | Passwort von der Kommandozeile übernehmen |
htpasswd anwenden
Anlegen einer Authentifizierungsdatei:
Unsere Authentifizierungsdatei mit den Benutzernamen und
Passwörtern legen wir wie folgt an:
Mit der Befehlszeile htpasswd -c
c:\apache\htdocs\password bananajoe
wird im htdocs Verzeichnis des Apache eine neue Datei namens
password erzeugt und gleichzeitig ein neuer Benutzer mit dem Namen
"bananajoe" angelegt.
Das Programm fragt nun nach einem Passwort, welches zweimal
eingegeben werden muß. Unser Passwort lautet hier
"geheim".

Als nächstes wollen wir noch einen weiteren Benutzer
anlegen.
Da wir unsere Authentifizierungsdatei mit dem letzten Schritt
schon angelegt haben und nur einen Benutzer hinzufügen wollen,
können wir den -c Parameter weglassen.
htpasswd c:\apache\htdocs\password
monkey
Hier folgt ebenfalls die Frage nach dem Passwort, in diesem
Beispiel "tree".

Die Übergabe der Verschlüsselungsmethode können wir uns hier sparen, da unter Windows standardmäßig die MD5 Verschlüsselung eingesetzt wird.
Und so sieht der Inhalt unserer Authentifizierungsdatei aus:
bananajoe:$apr1$2S5.....$hYT0J056CzHWePY62EXQS0
monkey:$apr1$pX5.....$dgpYt7Pd9U0ESTCv5tP7w1
Der Benutzername im Klartext, gefolgt vom jeweiligen
verschlüsseltem Passwort.
Achtung!
Wenn man die Möglichkeit hat, die Authentifizierungsdatei
ausserhalb des htdocs Verzeichnisses zu speichern, sollte man die
auch tun, da sonst die Möglichkeit besteht, dass Unbefugte
Einsicht in diese Datei bekommen können.
Hat man beim Provider ein eigenes CGI Verzeichnis, so kann man die
Datei dorthin kopieren, da das CGI Verzeichnis in der Regel
ausreichend gegen unbefugten Zugriff geschützt sein
sollte.
Direktiven
Die nötigen Direktiven:
In unsere .htaccess Datei fügen wir nun ein paar Direktiven ein, damit nur die berechtigten Benutzer aus unserer Authentifizierungsdatei auf unsere Website zugreifen können.
AuthType Basic
AuthName "plantage"
AuthUserFile
C:/Apache/htdocs/password
require valid-user
Mit AuthType wird die Art der Authentifizierung festgelegt,
Basic war bis vor kurzem die einzige Möglichkeit, es gibt aber
auch noch Digest, welche zur Zeit leider von keinem Browser
unterstützt wird.
AuthName gibt den Bereich an, in dem Name und Passwort des
Benutzers gültig sind. Wenn im Bereichsnamen Leerzeichen
vorkommen, muß der Bereichsname in Anführungszeichen
stehen (z.B. "Bananen Plantage").
AuthUserFile gibt den Pfad zu der Authentifizierungsdatei an, am
Besten verwendet man hier eine absolute Pfadangabe.
Mit require wird die Passwortprüfung aktiviert, valid-user
bedeutet hier, dass alle Benutzer, die in unserer
Authentifizierungsdatei stehen akzeptiert werden.
Soll nur eine einzelne Datei vor unberechtigtem Zugriff geschützt werden kommt noch die FilesMatch Direktive hinzu:
<FilesMatch "dateiname\.html">
AuthName "plantage"
AuthType Basic
AuthUserFile C:/Apache/htdocs/password
require valid-user
</FilesMatch>
In der FilesMatch Direktive wird der Name der zu schützenden Datei angegeben.
Damit das Ganze funktioniert, muss in der httpd.conf des Apache noch folgende Direktive stehen:
-----------------Ausschnitt-------------------------
# This controls which options the .htaccess
files in directories can
# override. Can also be "All", or
any combination of "Options",
"FileInfo",
# "AuthConfig", and
"Limit"
#
AllowOverride All
-----------------Ausschnitt-------------------------
"AllowOverride All" bedeutet, dass mittels der .htaccess Datei alle Direktiven überschrieben werden dürfen, dies ist hier zwar nicht nötig, "AllowOverride AuthConfig" würde reichen, aber für ein Entwicklersystem zum weiteren Experimentieren in Ordnung.
Test
Als letztes die .htaccess Datei in das gewünschte
Verzeichnis kopieren und den Webserver neu starten, da wir ja eine
Direktive in der httpd.conf geändert haben.
Wenn nun die Website im Browser aufgerufen wird (oder das
geschützte Verzeichnis) sollten wir eine Passwortabfrage
präsentiert bekommen.
