htpasswd – So lässt sich per htaccess-Datei ein Verzeichnisschutz einrichten und mit Loginname und Passwort absichern?
Eine htaccess-Datei in einem zu schützenden Verzeichnis, 4 Zeilen Konfigurations-Code sowie einen Loginnamen und Passwort genügen, um einen Online-Bereich abzusichern. Die Erstellung des hierfür notwendigen Datei-Paares .htaccess (die Konfigurationsdatei) und .htpasswd (hier stehen der Loginname und das verschlüsselte Passwort) ist schnell erledigt.
Es gibt hierfür unzählige Generatoren im Word Wide Web, man kann selbst auf der Kommandozeile Hand anlegen, ISP-Tools wie Confixx, Plesk & Co. bieten dies auf der jeweiligen Administrations-Oberfläche und verschiedenste Free- und Shareware-Programme erledigen das Ganze auch unter Windows.
Generatoren zum Erstellen eines Verzeichnisschutzes
Ein htaccess-Generator, mit dem sich ein Zugriffsschutz sowie eigene Fehlerseiten erstellen lassen, gibt es eine ganze Reihe im Netz. Hier eine kleine, empfehlenswerte Auswahl:
- Umfangreicher htaccess-Generator von All-Inkl.
- Advanced Htpasswd/Htdigest file creator
- htpasswd-Generator zur Erstellung des Passworts
Vorsichtig sollte man bei Online-Generatoren immer dann walten lassen, wenn auch nach dem Domainnamen gefragt wird. Für einen Zugriffschutz ist das nicht von Belang und stellt eine potentielle Sicherheitslücke dar. Ihr gebt auf irgendeiner Seite eure Domain, Verzeichnis, Benutzer und Passwort in ein Formular ein und wisst ja eigentlich nicht, was noch im Hintergrund passiert.
Ihr freut euch vielleicht über einen fertigen Zugriffsschutz und der Tool-Bereitsteller möglicherweise über die hier gemachten Angaben, die vielleicht irgendwann eine entsprechende Verwendung für ihn finden. Nur so eine Idee von mir – bin sonst nicht so paranoid.
Arbeiten auf der Linux-Kommandozeile – Linux-Befehl: htpasswd
Einen Zugriffsschutz direkt auf der Linux-Kommandozeile einzurichten, ist auch nicht weiter kritisch. Das Programm htpasswd muss auf dem System installiert sein und Debian erledigt das in wenigen Augenblicken. Als Benutzername verwende ich hier im Beispiel „admin“.
htpasswd -cm /mein/verzeichnis/zur/.htpasswd admin New password: ****** Re-type new password: ****** Adding password for user admin
In der .htpasswd-Datei ist dann der Benutzername durch einen Doppelpunkt vom verschlüsselten Passwort (hier md5-Codiert [-m]) hinterlegt.
admin:$apr1$9a0O8bnX$P1B0HXdmMPzPmQ98JDGlI.
Der Schalter -c (create a new file) macht nur beim Erstellen einer htpasswd-Datei Sinn und darf bei weiteren Eintragungen nicht erneut gesetzt werden. Hiermit würde eine bereits existierende htpasswd-Datei ohne Rückfrage überschrieben werden.
Der Dateiname der Passwortdatei ist prinzipiell egal. Er sollte allerdings immer mit einem führenden Punkt versehen und bitte nie in ein über das WWW aufrufbares Verzeichnis ablegen. Sie gehört in einen Bereich auf dem Server / Webspace, der nicht per Browser erreichbar ist.
Falls euer Webspace also eine DocumentRoot /public_html oder /httpdocs o.ä. aufweist und hier eure index.html oder index.php liegt, dann gehört die Passwortdatei mindestens eine Ebene höher, also parallel zur DocumentRoot. Den vollständigen Pfad dorthin gebt ihr in der .htaccess an.
Somit lässt sich recht gut vermeiden, dass sich doch jemand diese Datei im Browser anzeigen lassen kann und ggf. so das Passwort knackt.
In der dazugehörigen htaccess-Datei werden die folgenden 4 Zeilen benötigt:
AuthType Basic AuthName "Login zum geschützten Verzeichnis" AuthUserFile /mein/verzeichnis/zur/.htpasswd Require valid-user
Nun hat der Nutzer „admin“ mit dem gewählten Kennwort Zugriff auf das geschützte Verzeichnis und allen anderen bleibt der Zugang verwehrt! So gesicherte Ressourcen lassen sich auf einem Linux-Server recht gut mit Fail2Ban oder eigenen Firewall-Regeln gegen Brute-Force-Attacken schützen.
Weitere Informationen finden Sie in der Manpage zu htpasswd
man htpasswd
Noch ein Wort zur Sicherheit und zum Betrieb
Beispiel für ein Anmeldefenster einer Passwort-Authentifizierung im Safari. In anderen Browsern sieht das Anmeldeformular ähnlich aus. Bei öffentlich zugänglichen Rechnern auf keinen Fall das Passwort speichern, versteht sich! Zugangsdaten wie admin + meine-domain oder gar pass + wort sind zwar prinzipiell besser als gar kein Schutz, aber erst eine Kombination aus Sonderzeichen, Buchstaben und Zahlen beruhigen sicherlich die Nerven bei wirklich wichtigen Daten im zu schützenden Verzeichnis.
Eine htaccess-Authentifizierung ist in den meisten Fällen vom AuthType Basic. Hierbei wird dass Passwort unverschlüsselt vom Browser zum Server übermittelt (im Safari wird dies vernüftiger Weise sogar angezeigt) und gilt somit nicht als sonderlich sicher. Wer die Möglichkeit hat, z.B. beim Betrieb eines eigenen Servers, sollte den Authentifizierungstyp Digest nutzen. Die Passwortübertragung findet hierbei verschlüsselt zwischen Client und Server statt.
Der Zugriffsschutz setzt die Apache-Module mod_auth und mod_access voraus. Ebenso muss die Anweisung AllowOverride den Wert AuthConfig bzw. All besitzen, was normalerweise innerhalb des Directory-Bereichs der virtuellen Hosts-Konfiguration erledigt wird (mehr hierzu auf apache.org).
Es gibt sicher noch eine ganze Reihe weiterer Möglichkeiten einen htaccess/htpasswd-Zugriffschutz umzusetzen. Gern könnt ihr diese in den Kommentaren der Welt vorstellen.
Kommentar hinterlassen zu "htpasswd / htaccess Verzeichnisschutz"