0

Passwortschutz für Verzeichnisse mit htaccess und htpasswd

Der Apache Webserver bietet die Möglichkeit bestimmte Verzeichnisse mit einem Passwortschutz zu versehen, um sie vor ungewollten Zugriffen zu schützen. Dazu kann man entweder die Konfiguration des VHosts anpassen oder eine .htaccess in die zu schützenden Verzeichnisse legen. Die Einstellungen in der .htaccess gelten für das Verzeichnis in dem sie liegt und alle darunter liegenden. Im Unterschied zur Anpassung des VHosts braucht der Apache bei Änderungen in der .htaccess nicht neu gestartet werden. Die Datei wird bei jedem Aufruf automatisch neu eingelesen.

Die Einstellungen für den VHost oder die .htaccess:

AuthName "Geschützter Bereich"
AuthUserFile /absoluter/pfad/zur/.htpasswd
AuthType Basic

require valid-user

In diesem Beispiel bekommt jeder gültige Benutzer Zugang zum Verzeichnis. Alternativ kann man den Zugriff aber auch auf bestimmte User oder Gruppen beschränken:

require user admin
oder
require group team

Der Pfad zur Datei .htpasswd, in der die User mit ihren Passwörtern gespeichert werden, wird über die Direktive AuthUserFile angegeben. Wichtig ist hierbei, dass der Pfad absolut angegeben werden muss und nach Möglichkeit nicht unterhalb des DocumentRoot-Verzeichnisses liegt, damit sie nicht über den Webserver erreichbar ist und die Benutzernamen ausgelesen werden können.

Das wars im Grunde schon mit der Server Konfiguration. Es gibt natürlich noch weitere Optionen, wie die Limitierung der Passwortabfrage auf POST oder GET Requests usw. aber das ist für den gängigen Einsatz nicht weiter wichtig. Also weiter zum zweiten Schritt, der Erzeugung der .htpasswd Datei. Diese baut sich nach dem Muster username:passwort auf. Die einzige Schwierigkeit besteht jetzt darin, das Passwort zu verschlüsseln. Linux bietet dafür das Programm htpasswd an. Hier die wichtigsten Funktionen für unseren Zweck im Überblick:

Neue .htpasswd Datei mit User admin und Passwort 12345 erstellen

htpasswd -c -b .htpasswd admin 12345

Einen User udo hinzufügen (ohne -b wird das Passwort per Promt abgefragt)

htpasswd .htpasswd udo

Den User udo wieder löschen

htpasswd -D .htpasswd udo

Das wars schon.