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 im Fenster.

  1. Generatoren zum Erstellen eines Verzeichnisschutzes
  2. Arbeiten auf der Linux-Kommandozeile
  3. Sicherheit und Betrieb

Generatoren zum Erstellen eines Verzeichnisschutzes

Ein htaccess-Generator mit dem sich ein Zugriffsschutz sowie eigene Fehlerseiten erstellen lassen, gibt es eine ganze Reihe im Internet. Hier eine kleine Auswahl oder selbst mal bei Google von der Masse an Generatoren erschlagen lassen:

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

Einen Zugriffsschutz direkt auf der Linux-Kommandozeile einzurichten ist auch nicht weiter kritisch. Die Software htpasswd muss auf dem System installiert sein und Debian erledigt das in wenigen Augenblicken. Als Benutzername verwende ich hier „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. Ich würde ihn allerdings immer mit einem führenden Punkt versehen und 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 tiefer, 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 gesicherete Ressourcen lassen sich auf einem Linux-Server recht gut mit Fail2Ban oder eigenen Firewallregeln gegen Brute-Force-Attacken schützen.

Noch ein Wort zur Sicherheit und zum Betrieb

Zugriffskontrolle beim Verzeichnisschutz mit htaccess
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.