Verzeichnisschutz mit .htaccess und .htpasswd

Manche Inhalte eines Webservers soll nicht jeder sehen. Das können Testversionen von Websites sein, oder geheime Daten. Diese geheimen Verzeichnisse kann man zu 100% mit einem htaccess Verzeichnissschutz sichern. Ein Verzeichnis sichern mit .htaccess und .htpasswd gehört zu den ursprünglichsten Aufgaben eines Webservers. Dafür gibt es interne Serverbefehle und man braucht keine Zusatzsoftware. darum st diese Art von Verzeichnisschutz auch so sicher, weil keine Software benutzt wird, die man knacken kann. Nur mit dem entsprechenden Passwort kann man auf die Seite oder das Verzeichnis im Browser ansehen. Wenn ein Besucher die Seite aufruft bekommt er zunächst ein Eingabefenster in dass er den Benutzernamen und das Passwort eintragen muss. Wenn der Besucher das falsche Passwort angibt bekommt er eine Fehlermeldung, dass er keinen Zugriff auf die Seite hat. Die Passwörter liegen verschlüsselt auf dem Server.

Verzeichnis sichern mit .htaccess und .htpasswd
Das System das dahinter steckt ist recht einfach und trotzdem pfiffig. Der .htaccess-Zugangsschutz besteht aus zwei Dateien. Die eine Datei trägt den Namen .htaccess, die man als Blogger von WordPress her kennt. die zweite Datei nennt sich .htpasswd. Warum braucht man dafür zwei Dateien? Nun das ist ganz einfach. Die Datei mit den gespeicherten Passwörtern liegt sicherheitshalber nicht im www.Verzeichnis des Webservers. Das bedeutet, dass man mit einem Browser die Datei nicht aufrufen kann. Und was man nicht aufrufen kann, das kann man auch nicht manipulieren. In der .htaccess steht jedoch in welchem Verzeichnis sich die Datei .htpasswd befindet. Beide Dateien sind einfache Text-Dateien, die Sie mit einem ganz normalen Editor öffnen oder schreiben und abspeichern können.

htaccess.htpasswd erzeugen
Die Datei .htpasswd enthält die Benutzer und die Passwörter; jeweils mit einem Doppelpunkt getrennt voneinander. Die Passwörter geben Sie verschlüsselt an. Das kann ein kleines PHP-Skript für Sie erledigen. Fügen Sie einfach die Zeile
echo ‚Passwort verschluesselt: ‚ . crypt(‚MeinPasswort‘) ;
in eine PHP-Datei ein und führen sie auf dem Server aus. (siehe auch nächster Abschnitt). Die fertige .htpasswd sidht dann beispielsweise so aus:
Hansilein:$1$7g06dGlU$LFePCwmLBENlupIrLKD6./

.htpasswd ablegen
Die .htpasswd legen Sie am Besten eine oder mehrere Ebenen unter Ihrem www.Verzeichnis ab. Nun benötigen Sie den absoluten Pfad zu dieser Datei, also so wie sie vom Root-Verzeichnis aus zu erreichen ist. Wenn Sie das nicht wissen können Sie sich dieses Verzeichnis mit einer kleinen PHP-Abfrage ausgeben lassen. Fügen Sie diese Zeilen in einen Editor und speichern Sie diese als test.php auf dem Server ab.

<?php
echo $_SERVER[‚DOCUMENT_ROOT‘];
?>

Danach rufen Sie diese im Browser auf über www.ihredomain.de/test.php auf. Der Browser zeigt Ihnen dann den absoluten Pfad an. zB /var/www/web1234/html

.htaccess abspeichern
Nun legen Sie per FTP eine Datei mit dem Verzeichnisschutz in das Verzeichnis, das Sie schützen möchten. Achten Sie bitte darauf, dass Sie keine vorhandenen .htaccess-Datei überschreiben, da diese versteckt sind. Suchen Sie im FTP-Programm nach „Versteckte Dateien anzeigen“. In die .htaccess-Datei schreiben Sie nur ein paar Textzeilen, oder fügen sie in eine bestehende .htaccess ein:

AuthType Basic
AuthName „Verzeichnisschutz“
AuthUserFile /var/www/web1234/html/.htpasswd
require valid-user

Wenn Sie das Passwort vergessen haben editieren Sie einfach die .htpasswd Datei und fügen ein Neues ein. Den Passwortschutz können Sie jederzeit über FTP durch löschen der .htaccess wieder aufheben.

Mehrere Verzeichnisse schützen
Wenn sie mehrere Verzeichnisse individuell schützen wollen legen Sie einfach in jedes Verzeichnis eine htaccess. Jetzt geben Sie hier aber an welche User dieses Verzeichnis lesen darf. Voraussetzung ist natürlich dass er auch das richtige Passwort kennt. Statt require valid-user geben Sie nun require user user1 user2 ein, und verwenden eine Userdatei .htuser. (!)

AuthType Basic
AuthName „Verzeichnisschutz“
AuthUserFile /var/www/web1234/html/.htuser
require user username1 username2

Die .htuser sieht wie die htpasswd aus, und beinhaltet die Passwörter für mehrere User gleichzeitig.

Hansilein:$1$7g06dGlU$LFePCwmLBENlupIrLKD6./
Manfred:$1$yJ6QEJMR$iOIUnM8DSKJLnE3byr1tx/

Der Vorteil ist sie haben eine zentrale Datei mit den Passwörtern, und in dem Verzeichnis liegt eine Datei, die dem Server sagt, wer zugreifen darf. Wenn ein User nun das Verzeichnis aufruft vergleicht der Server, ob der Name überhaupt das Verzeichnis ansehen darf und dann in der .htuser ob das Passwort richtig ist.