Eine oft gestellte Frage: Wie kann ich ein Verzeichnis auf meinem Apache Webserver mit einem Passwortschutz absichern? Oft gegebene Antwort: Ganz einfach mit einer .htaccess Datei.
Hier eine einfache Anleitung wie für ein Verzeichnis auf eurem Apache Webserver ein simpler Passwortschutz via .htaccess Datei erstellt werden kann (Voraussetzung: eigener Webserver oder Managed Server mit .htaccess Unterstützung):
Hinweis: Meine Anleitung bezieht sich wie immer auf Debian (Ubuntu) Linux. Pfade können in anderen Linux Distributionen immer abweichen, aber in der Regel sind sie gleich oder zumindest ähnlich.
Der simple htaccess Passwortschutz (Passwort Authentifizierung von einem oder mehrere Benutzer) besteht grundsätzlich aus zwei Dateien:
*) .htaccess (enthält die Anweisungen für den Webserver)
*) .htpasswd (enthält die Benutzer und zugehörig Passwörter)
.htaccess Datei erstellen
Wer direkt in der Shell arbeitet, kann die .htaccess Datei einfach mit dem Lieblingseditor erstellen. Wer allerdings via FTP arbeitet kann die Datei direkt im FTP Programm via Grafikmodus erstellen oder hochladen (Vorsicht: bei einigen FTP Programmen muss das Anzeigen von Punk (.xxx) Dateien aktiviert werden, da sie sonst unsichtbar sind). In meinem Beispiel wird das gesamte Verzeichnis /var/www/website1 und darunter liegende Verzeichnisse Passwort geschützt.
[bash]vi /var/www/website1/.htaccess[/bash]
.htaccess Einstellungen festlegen
Folgenden Inhalt schreiben wir in die .htaccess Datei um den Passwortschutz einzuleiten:
[bash]AuthType BasicAuthName "Zugriff verweigert – Bitte User und Passwort eingeben"
AuthUserFile /var/www/website1/.htpasswd
Require valid-user[/bash]
Die einzelnen Zeilen aufgeschlüsselt:
AuthType Basic: Beschreibt die Art der Authentifizierung. In der Regel wird „Basic“ ( HTTP Basic Authentication) als Authentifizierungsmethode verwendet. Das Passwort wird allerdings vom Browser unverschlüsselt an den Webeserver übertragen. Eine andere Möglichkeit wäre „Digest“ welche die Passwörter verschlüsselt überträgt, aber leider von den wenigsten Browser unterstützt wird.
AuthName „Zugriff verweigert – Bitte User und Passwort eingeben“: Die Bezeichnung (Titel) des Abfragefensters im Browser, welche der Benutzer als kurze Beschreibung sieht.
AuthUserFile /var/www/website1/.htpasswd: Pfad zur .htpasswd Datei, welche die User- und Passwortinformationen zur Authentifizierung enthält.
Require valid-user: Beschreibt welche User aus der .htpasswd Datei Zugriff erhalten. Das können wie bei unserem Beispiel (valid-user) alle Benutzer in der .htpasswd sein, oder nur bestimmte angeführte User (Require user benutzer1 benutzer2)
.htpasswd Datei erstellen
Der Apache liefert unter Linux gleich den Befehl zur Erstellung der .htpasswd Datei mit, welcher ganz einfach angewendet werden kann (benutzer1 entsprechend durch den gewünschten Usernamen ersetzen):
[bash]htpasswd -c /var/www/website1/.htpasswd benutzer1[/bash]Der Befehl htpasswd ist auf manchen Systemen auch als htpasswd2 zu finden. -c (create) wird nur zum Erstellen der htpasswd Datei verwendet. Um einen weiteren Benutzer hinzuzufügen wird der Befehl ohne -c verwendet:
[bash]htpasswd /var/www/website1/.htpasswd benutzer2[/bash]htpasswd Generator – .htpasswd Datei online generieren
Wer nicht direkt auf die Linux Commandline oder per SSH auf das System zugreifen kann, der kann die .htpasswd Datei auch mit folgenden htpasswd Generator online generieren:
[sam id=“2″ codes=“true“]Ich habe die .htpasswd und .htaccess, der Einfachheit halber, in das gleiche Verzeichnis gelegt. In der Regel sollte die .htpasswd aber ausserhalb des Webserver Verzeichnisses liegen. Auf vielen Managed Servern ist das allerdings ohnehin nicht möglich.
Weiterführende Informationen:
htaccess Passwort Schutz und IP Adressen Schutz kombinieren
Apache Dokumentation
Dieses gewusst WIE, das war schon immer der Renner. Danke für die Anleitung. Wenn man nur einfache HTML Seiten verschlüsseln möchte, dann ist der Tipp ganz brauchbar.
Man lernt nie aus, den htpasswd Befehl kannte ich noch nicht. Ich meine aber mal aus Erfahrungswerten, die wenigsten Website Betreiber werden auf der SSH Konsole arbeiten, da ist so ein Onlinegenerator eine feine Sache oder bei Confixx als Admin-Panel, wo man als Endkunde Benutzer anlegen kann für Verzeichnisse.
Ansonsten gibts auch noch ein interessantes PHP Script, welches sich um die Zugangsverwaltung kümmert:
http://www.planetc.de/download/php-scripte/planethtaccess/planethtaccess.html
Wow… danke für die Detailierte Anleitung, funktionierte Super! Das Tool ist übrigens super spitzenklasse!
Vielen Dank für den Beitrag – besonders der Generator ist sehr praktisch. 7 Daumen hoch!