Apache-Verzeichnis ohne .htaccess schützen
Aktuell bin ich damit beschäftigt, ein (oder mehrere) Verzeichnisse, die unterhalb eines Apache-DocumentRoot liegen, mit einem Password zu schützen.
Es handelt sich hierbei, wie in den vorherigen Artikeln beschrieben (Teil 1 und Teil 2), um gemountete Windows-Freigaben.
Da ich nicht möchte, dass in den Freigaben selbst eine .htaccess zur Authentifizierung liegt, habe ich nach einer Möglichkeit gesucht, einen Passwortschutz auf Apache-Konfigurationslevel zu erstellen.
Die Lösung nennt sich Digest Authentification.
Inhaltsverzeichnis
Probleme während des SetUps
Ich bin bei der Durchführung auf mehrere Probleme gestoßen, die ich nachfolgend erläutern werde:
- Invalid command ‚AuthDigestFile‘, perhaps misspelled or defined by a module not included in the server configuration
- Trotz (gedacht) korrekten Einstellungen, ist eine Authentifizierung mit hinterlegten Benutzerdaten am Share per Browser nicht möglich; die Anmeldedaten scheinen falsch.
Vorraussetzungen
Es wird ein Apache Webserver (in meinem Fall Version 2.2.3) mit korrekter Konfiguration benötigt.
auth_digest Modul laden
Das Modul „auth_digest“ muss am Webserver aktiviert werden. Bei Debian funktioniert das mit dem Programm „a2enmod“ sehr einfach:
a2enmod auth_digest
Erstellen von Benutzerdatei
Zur Authentifizierung muss eine Datei (ähnlich der .htpasswd) angelegt werden, die die Benutzer beinhaltet, die Zugriff auf ein „Browser-Share“ erhalten sollen. Diese lässt sich wie folgt erstellen:
htdigest -c pfadzurdatei realm benutzer
htdigest -c /var/www/htdocs/website/.authfile wiki testnutzer
Das Realm bezeichnet in diesem Fall eine Zugehörigkeit zur Website. Es ist darauf zu achten, diese Angabe sinngemäß zu treffen!
Konfigurationsdatei der Website anpassen
Nun muss die entsprechende Apache2-Konfigurationsdatei der Website editiert werden. Diese liegen bei Debian unter:
/etc/apache2/sites-available
Die bestehende Datei sah bei mir folgendermaßen aus:
ServerName wiki
DocumentRoot /var/www/htdocs/wiki
IndexOptions +FancyIndexing +FoldersFirst
Sie wurde um den Eintrag zur Digest-Protection folgendermaßen abgeändert:
ServerName wiki
DocumentRoot /var/www/htdocs/wiki
IndexOptions +FancyIndexing +FoldersFirst
AuthType Digest
AuthName "wiki"
AuthDigestDomain /Puffer/ /Info/
AuthDigestProvider file
AuthUserFile /var/www/htdocs/.authfile
Require valid-user
Wichtig ist hierbei, dass:
- „AuthName“ = dem beim Benutzer angegebenem „Realm“ entspricht. Sonst schlägt die Authentifizierung fehl!
- AuthUserFile anstatt AuthDigestFile verwendet wird – ansonsten tritt der initial genannte Fehler auf. Hier nachzulesen.
- Wie oben zu sehen, kann bei „Require“ auch ein oder mehrere einzelne Benutzer angegeben werden. Bei valid-user sind alle Benutzer in der Passwortdatei für den Zugriff freigeschaltet.
- AuthDigestDomain kann mit mehreren Angaben umgehen – wie oben zu sehen. Zusätzlich könnten auch Angaben wie „/Puffer/ /Info/ http://wiki/Puffer“ gelten.
Nach einem Neustart des Apache’s greifen die getätigten Einstellungen und können bei einem ersten Test überprüft werden:
/etc/init.d/apache2 force-reload
Wirft der Indianer hierbei Fehlermeldungen aus, sollte man zum einen die Fehlermeldung genauer analyieren oder einen Blick in die Apache-Logs werfen, die äußerst Hilfreich bei Problemen sind !!
Diese finden sich unter Debian hier:
tail -f /var/log/apache2/access.log
# oder
tail -f /var/log/apache2/error.log