Passwortschutz für eigene Internetauftritte

Wer eigene Seiten angelegt hat, möchte vielleicht diese (oder einen Teil davon) nicht unbedingt allen zugänglich machen. Dazu gibt es die Möglichkeit, eine Zugangsbeschränkung einzurichten. Dafür gibt es mehrere Möglichkeiten; wir wollen uns hier nur auf Authentifikation mittels Paßwort beschränken. Über weitere Möglichkeiten kann man sich in der Apache-Dokumentation Authentication, Authorization, and Access Control informieren.

 

Paßwortdatei

Zunächst muß eine Paßwortdatei angelegt werden, die alle Benutzer und die zugehörigen (verschlüsselten) Paßwörter enthält. Diese Datei sollte außerhalb des Bereichs der Webseiten liegen, damit sie sich nicht einfach herunterladen läßt (also z.B. direkt im Homeverzeichnis). Da aber der Web-Server selbst auf die Datei zugreifen muß, läßt es sich nicht vermeiden, daß die Datei öffentlich lesbar ist. Deswegen sollte man bei der Wahl der Paßwörter darauf achten, daß diese nicht einfach zu knacken sind - am besten verwendet man die gleichen Richtlinien, wie sie auch für Login-Paßwörter gelten (mindestens zwei verschiedene Sonderzeichen). Auch kann man für die Paßwortdatei einen nicht leicht zu erratenden Namen verwenden (z.B. einige zufällig eingetippte Buchstaben), da das Homeverzeichnis selbst ja gegen Lese-Zugriff geschützt sein kann (newpublichtml stellt das so ein, wenn man damit seine Homepage erstellt).

 

Paßwörter trägt man mit dem Aufruf

htpasswd Paßwortdatei Benutzername

ein (wenn es die Paßwortdatei noch nicht gibt, muß nach dem htpasswd zusätzlich noch die Option -c stehen). Den Benutzernamen kann man natürlich frei wählen - er hat nichts mit den Benutzernamen zu tun, mit denen man sich einloggt. Danach wird man aufgefordert, das diesem Benutzernamen zuzuordnende Paßwort einzugeben (und ein zweites Mal, um Tippfehler abzufangen).

 

Nach dem erstmaligen Erstellen der Paßwortdatei muß man dem Webserver noch den Lesezugriff erlauben:

chmod a+r Paßwortdatei

Seiten schützen

Alle Seiten, die auf die gleiche Art und Weise geschützt werden sollen, müssen in einem gemeinsamen Verzeichnis liegen. In diesem Verzeichnis (d.h. wenn alle Seiten geschützt werden sollen, direkt in $HOME/.public_html, ansonsten in einem Unterverzeichnis davon) legt man dann eine Datei namens .htaccess an, die bestimmt, wie die entsprechenden Seiten geschützt werden sollen.

 

Der erste Eintrag ist immer gleich:

AuthType Basic

 

Damit wir festgelegt, daß einfache Paßwort-Authentifikation benutzt werden soll.

Danach folgt eine Bezeichnung für den Bereich, der geschützt werden soll. Der angegebene Text dient lediglich dazu, bei der Paßwort-Abfrage angezeigt zu werden; wichtig ist aber, daß Anführungszeichen verwendet werden, wenn der Text Leerzeichen enthält.

AuthName "Bezeichnung des geschützen Bereichs"

Jetzt geben wir unsere eben erstellte Paßwortdatei an:

AuthUserFile /home/ws/Username/Paßwortdatei

Der Anfang des Pfades /home/ws/Username ist einfach das Homeverzeichnis, also das, was auch in der Environment-Variablen $HOME steht, gefolgt vom Namen der Paßwortdatei.

Jetzt müssen wir noch festlegen, wer alles Zugriff auf das geschützte Verzeichnis hat - im einfachsten Fall alle Benutzer, die in der Paßwortdatei aufgeführt sind:

Require valid-user

Man kann aber auch die Benutzernamen aufführen, für die dieser Bereich zugänglich sein soll:

Require user Benutzername Benutzername ...

Dies hat den Vorteil, daß man auch für mehrere unterschiedlich geschützte Bereiche nur eine einzige Paßwortdatei braucht.

Jetzt muß man dem Webserver nur noch den Lesezugriff auf diese Datei erlauben:

chmod a+r .htaccess

Jetzt kann nur noch der die Webseiten aus dem geschützten Verzeichnis anzeigen, der das Paßwort für einen der freigegebenen Benutzernamen kennt. Der Webserver sorgt automatisch dafür, daß die Paßwortübermittlung nur über eine gesicherte Verbindung erfolgt - so kann das Paßwort unterwegs nicht abgefangen werden.