Fingerübung
Benutzeranmeldung mit Fingerabdruck
PAM anpassen
Nach Abschluss der Vorbereitungen gilt es, PAM für die Authentifizierung per Fingerprint einzurichten. Je nach Distribution müssen Sie dazu andere Dateien bearbeiten; deren Inhalt fällt in den meisten Fällen jedoch nahezu identisch aus. Möchten Sie die Authentifizierung über den Fingerprint-Reader als erstes vornehmen, binden Sie das Modul pam_thinkfinger.so vor pam_unix.so ein.
Damit PAM nach der erfolgreichen Authentifizierung über den Fingerabdruck nicht noch einmal das Passwort abfragt, setzen Sie das Kontroll-Flag sufficient, das bei erfolgreicher Anmeldung keine weiteren Bibliotheken aufruft und die Anmeldung somit erfolgreich abschließt. Sollte das Login über den Fingerabdruck nicht funktionieren, springt sozusagen als Notlösung pam_unix.so ein und fragt den Benutzer nach seinem Passwort.
Nun wäre es allerdings recht umständlich, wenn Sie für alle Programme die notwendigen PAM-Module in jeder einzelnen PAM-Konfiguration manuell eintragen müssten. Hier hilft eine Art zentrale PAM-Konfigurationsdatei: Unter Fedora heißt sie /etc/pam.d/system-auth, einige andere Linux-Distributionen verwenden dafür /etc/pam/common-auth. In dieser Datei tragen Sie sämtliche PAM-Module ein, die Sie zur Authentifizierung verwenden. Das Kontroll-Flag include erlaubt das Einbinden in allen anderen PAM-Konfigurationen, sodass allen Programmen die PAM-Bibliotheken aus der zentralen Konfigurationsdatei zur Verfügung stehen. Listing 5 und Listing 6 zeigen die Einträge für die Dateien /etc/pam.d/login und /etc/pam.d/system-auth.
# /etc/pam.d/login auth required pam_securetty.so auth include system-auth
# /etc/pam.d/system-auth auth required pam_env.so auth sufficient pam_thinkfinger.so auth sufficient pam_unix.so auth required pam_deny.so
Da die meisten PAM-Konfigurationen die zentral verwaltete PAM-Konfiguration mittels include einbinden, steht nun auch das PAM-Modul für den Fingerprint-Reader für alle Programme bereit, die PAM zur Authentifizierung verwenden. Beispielsweise klappt eine Authentifizierung mittels su oder einer grafischen Anwendung (Abbildung 3) nun auch mittels Fingerabdruck.
Erweiterungen
Wie schon erwähnt, beherrscht PAM nicht nur die Benutzerauthentifizierung, sondern kann noch viel mehr. Wollen Sie beispielsweise Benutzern nur zu einer bestimmten Uhrzeit den Zugang zum System erlauben, verwenden Sie das Modul pam_time.so. Sie binden es genau wie pam_thinkfinger.so in der zentralen Datei /etc/pam.d/system-auth (bzw. common-auth) ein. Da es sich hier jedoch um ein Modul zur Autorisierung anstatt zur Authentifizierung handelt, tragen Sie es in der Sektion account ein. Über die Steuerdatei /etc/security/time.conf konfigurieren Sie es. Möchten Sie beispielsweise den Zugang zum SSH-Server in der Nacht verbieten, erledigen Sie das mit dem Eintrag sshd;*;*;!Al2100-0600. Die Abkürzung Al steht für alle Tage der Woche; eine genaue Beschreibung der Syntax steht in der Konfigurationsdatei.
Ein weiteres interessantes Modul, diesmal für die password-Sektion von PAM, ist pam_cracklib.so. Mit ihm setzten Sie eine strenge Passwort-Policy durch. Da es keine eigene Konfigurationsdatei besitzt, konfigurieren Sie das Modul durch das Anhängen von Argumenten in der Sektion passwort. Damit ein Benutzer bei jeder Passwortänderung mindestens zwei Sonderzeichen in das neue Passwort einbauen muss, wählen Sie als Argument ocredit=2. Für drei Zahlen, die im Passwort vorkommen müssen, lautet es dcredit=3. Die komplette Liste aller Argumente finden Sie in der PAM-Dokumentation.
Mit dem Modul pam_limits.so setzen Sie gewisse Ressourcenbeschränkungen durch. Sie rufen es in der PAM-Sektion session auf und konfigurieren es über /etc/security/limits.conf. Möchten Sie beispielsweise dem Benutzer foo nur das Ausführen von zehn parallelen Prozessen erlauben, so sieht die Konfiguration dafür wie in Listing 8 aus. Der Befehl ulimit -u zeigt das gesetzte Limit an, das der Benutzer mit ulimit -u Zahl_der_Prozesse
bis zum Hard-Limit selbständig erhöhen kann.
foo soft nproc 10 foo hard nproc 15
Sie sehen also, mit PAM lassen sich jede Menge interessante Dinge anstellen [4]. Fehlen Module in Ihrer Distribution, finden Sie bei Kernel.org [5] eine große Auswahl zusätzlicher PAM-Module.
[1] Linux-PAM-Dokumentation: http://www.kernel.org/pub/linux/libs/pam/
[2] Thinkfinger: http://thinkfinger.sourceforge.net/
[3] Fprint: http://www.reactivated.net/fprint/wiki/Main_Page
[4] Verschlüsselte Partitionen automatisch einhängen via PAM: Markus Klimke, "Generalschlüssel", LinuxUser 02/2009, S. 31, http://www.linux-community.de/artikel/17404/
[5] PAM-Modul-Listing: http://www.kernel.org/pub/linux/libs/pam/modules.html



