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 durch.

Benutzen kann man die Authentifizierung so:

AuthName "Angezeigte 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

Leave a Reply

Your email address will not be published. Required fields are marked *