Apache 2: Authentifizierung mittels Systemaccount
Es gibt verschiedene Methoden, um /etc/passwd
bzw. /etc/shadow
als Benutzerdatenbank für Apache 2 zu verwenden. Einige davon verlangen, dass Apache /etc/shadow
lesen kann, was das Konzept von Shadow-Passwörtern ad absurdum führt. Eine elegantere und sicherere Lösung bietet mod_authnz_external
.
Den Code des Moduls kann man unter http://unixpapa.com/mod_authnz_external/ herunterladen. Die Kompilierung ist in der Datei INSTALL
recht gut beschrieben. Dazu noch einige Debian-spezifische Anmerkungen:
Die Installation mit apxs2 -i -a mod_authnz_external.la
klappt nicht, da das Laden von Modulen unter Debian nicht über die httpd.conf
läuft. Dies kann aber so gelöst werden:
apxs -i mod_authnz_external.la
echo "LoadModule authnz_external_module /usr/lib/apache2/modules/mod_authnz_external.so" > /etc/apache2/mods-available/authnz_external.load
Wenn man nun Authentifizierung via /etc/{passwd,shadow}
nutzen möchte, benötigt man noch pwauth. Auch hier ist die Installation in INSTALL
beschrieben. Wichtig: Das Editieren der config.h
nicht vergessen!
Schließlich muss man noch mod_authnz_external
so konfigurieren, dass es pwauth nutzen kann. Dafür legt man folgende Datei an:
# /etc/apache2/mods-available/authnz_external.conf
AddExternalAuth sys_user /usr/local/bin/pwauth
SetExternalAuthMethod sys_user pipe
Dabei wird davon ausgegangen, dass pwauth unter /usr/local/bin
liegt. Mit a2enmod authnz_external
aktiviert man das Modul, apache2ctl restart
führt den nötigen Neustart von Apache durch.
Benutzen kann man die Authentifizierung so:
AuthName "Angezeigter Name"
AuthType Basic
AuthBasicProvider external
AuthExternal sys_user
Require valid-user
Wenn sowohl eine Passwort-Datei als auch die Systemkonten verwendet werden sollen:
AuthName "Angezeigter Name"
AuthType Basic
AuthBasicProvider file external
AuthExternal sys_user
AuthUserFile /pfad/zur/.htpasswd
Require valid-user