Webbasierte Adressdatenbank
.htaccess - Passwortschutz von Dateien mit einem Webserver
Jeder Webserver besitzt eine zentrale Konfigurationsdatei, in der die Eigenschaften, Dienste und Zugriffsrechte
gerergelt werden. Hier können dann auch Einstellungen erfolgen, welche bestimmte Verzeichnisse durch Passwörter
schützen. Wir wollen uns hier auf den Webserver Apache beschränken. Die
Konfigurationsdateien liegen normalerweise unter /etc/httpd/
oder bei Windows, wenn der Apache auf der
Platte D installiert wurde unter D:/Apache/conf
. Üblicherweise verwendet man nur die Datei
httpd.conf
, allerdings kann diese Datei in drei einzelne Dateien (httpd.conf
,
access.conf
und srm.conf
) aufgesplittet sein. Die
Ausführungen gelten für Linux und Windows. Hinweise, wie üblicherweise die Verzeichnisse von Webserver organisiert
sind, kann man unter Webserver, eine Einführung nachlesen.
Uns interresiert nun, wie wir ein Verzeichnis unterhalb des cgi-bin
Verzeichnisses vor unberechtigten
Zugriffen schützen können. Angenommen wir haben folgende Verzeichnisstruktur:
cgi-bin | --stammtisch | ---Mitglieder | -- ...
Hier wollen wir alles unterhalb Mitglieder schützen. zuerst suchen wir mit einem Texteditor in der hhtpd.conf
nach ".htaccess". Dort sollte folgende stehen (ggfs entsprechend zu ergänzen):
AccessFileName .htaccess <Files .htaccess> order allow,deny deny from all </Files>
Damit verhindern wir, daß die Datei .htaccess
von einem Browser eingesehen werden kann. Wenn wir nun
noch folgende Zeilen in die Config Datei einfügen:
<Directory "/usr/local/httpd/cgi-bin/stammtisch/Mitglieder"> AllowOverride All </Directory>
teilen wir dem Webserver mit ,das alle Direktiven auf das angegebene Verzeichnis von dem .htaccess Mechanismus
überschrieben werden. (Der Pfad sieht bei Windows in etwa so aus: D:/Apache/cgi-bin/stammtisch/Mitglieder
)
Um nun die Perl Programme in diesem Verzeichnis nutzen zu können erfordert dies eine Autentifizierung des jeweiligen Benutzers.
Damit nun auch beim Wechsel in das angegebnene Verzeichnis automatisch ein Fenster aufpopt, das die Eingabe der
Benutzerkennung und des Passwortes erfragt, fehlen noch zwei weitere Dateien. Die dezentrale .htaccess
Datei
(dezentral deswegen, da, je nach <Directory>
Direktive ganz unterschiedliche .htaccess
Dateien in unterschiedlichen Verzeichnissen verwendet werden können), sowie die dazugehörende .htpasswd
Datei,
in der die Passwörter abgelegt sind. Unter Linux sind die Passwörter verschlüsselt, auch hier wieder die Einwegverschlüsselung,
verschlüsseln möglich, entschlüsseln nicht. Bei der Windows Variante werden die Passwörter in der .htpasswd
unverschlüsselt abgelegt, da Windows das notwendige Tool crypt
nicht kennt. Die .htaccess
Datei könnte folgendermasen aussehen:
AuthUserFile "D:/Sicherheit/.htpasswd" AuthGroupFile /dev/null AuthName ByPassword AuthType Basic <Limit GET POST> require valid-user </Limit>
Es wird hier fetsgelegt, das über ein Passwort die Autentifizierung erfolgt, welches in der Datei .htpasswd
abgelegt ist. Diese befindet sich aus Sicherheitsgründen, außerhalb der durch den Webserver erreichbaren Verzeichnisse.
Jetzt fehlt nur noch die .htpasswd
Datei. Für Windows ist das ganz einfach: mit einem beliebigen ASCII Editor
(nicht Word oder Wordpad) schreiben wir Benutzername:Passwort
in die .htpasswd
Datei. Unter Linux
wechsel wir in das gewünschte Verzeichnis und erzeugen die Datei mit:
htpasswd -c passwordfile benutzername
Man wird dann aufgefordert ein Password für benutzername einzugeben und zu wiederholen. Der Schalter -c erzeugt das Passwordfile, läßt man ihn weg, kann ein bestehendes File geändert werden (neue Benutzer hinzugefügt oder Passwörter bestehender Benutzer geändert werden).
Literaturhinweise:
- Webmaster in a Nutshell
Stephen Spainhour, Valerie Quercia
übersetzt von Eva Wolfram und Thomas Nagel
ISBN 3-930673-55-X
O'Reilly - Apache das umfassende Referenzwerk
Ben Laurie und Peter Laurie
übersetzt von Peter Klicman
ISBN 3-89721-127-0
O'Reilly - Apache Online Doku
- .htaccess Zugriffskontrolle aus der Reihe Selfhtml
Zurück zum Anfang dieses Projekts.