Bewertung 2


Die Kandidaten sollten in der Lage sein, PAM für die Unterstützung von Authentisierung über das traditionelle /etc/passwd, über Shadow-Paßwörter, NIS oder LDAP zu konfigurieren.

Schlüsseldateien, Begriffe und Hilfsmittel beinhalten:

  • /etc/pam.d
  • pam.conf

Syntax der PAM-Dateien:

  Typ       Kontrolle      Modulpfad     Parameter

Die einzelnen Felder haben folgende Bedeutung:

Typ

Hier wird der Typ der Authentifizierung angegeben, der für das entsprechende Modul Verwendung finden soll. Module des selben Typs können hintereinander abgearbeitet werden, damit PAM Zugriff gewährt müssen dann alle angegebenen Bedingungen erfüllt sein. PAM unterstützt die vier folgenden Typen:

account

Entscheidet, ob der User auf einen Dienst zugreifen darf, ob sein Passwort abgelaufen ist usw.

auth

Entscheidet, ob der User derjenige ist, der er vorgibt zu sein. Üblicherweise wird das durch ein Passwort realisiert, es sind aber auch andere Methoden (Biometrie) denkbar.

password

Bietet Möglichkeiten an, mit denen User ihre Authentifizierung ändern können. Auch das wird üblicherweise ein Passwort sein.

session

Dinge, die vor oder nach der Authentifizierung eines Users ablaufen müssen. Das kann z.B. das Mounten des Homeverzeichnisses sein, oder die Einstellungen für das Logbuch oder ähnliches. In der Konfigurationsdatei, die den Login steuert, gibt es mindestens einen Eintrag jeden dieser Typen.

Kontrolle

Diese Einstellung legt fest, was PAM tun soll, wenn ein Modul der Authentifizierung fehlschlägt. Es gibt auch hier wiederum vier verschiedene Möglichkeiten:

requisite

Wenn die Authentifizierung mit diesem Modul fehlschlägt, wird sofort jeder weitere Versuch unterbunden und der Zugriff auf den entsprechenden Dienst verweigert.

required

Auch hier führt eine fehlgeschlagene Authentifizierung zu einer Weigerung des Zugriffs, es werden aber eventuell existierende weitere Module noch abgearbeitet. Trotzdem gilt der Zugriff als verweigert, wenn auch nur ein mit required markierter Test fehlschlug.

sufficient

Wenn die Authentifizierung mit diesem Modul erfolgreich war, dann wird Zugriff sofort gewährt, wenn alle anderen vorher abgelaufenen und mit required markierten Module erfolgreich waren. Weitere Module werden nicht mehr abgearbeitet.

optional

Ob dieses Modul erfolgreich abgearbeitet wurde oder fehlschlägt ist nur dann relevant, wenn es das einzige Modul eines Typs für einen Service ist. In der Konfigurationsdatei, die den Login steuert, gibt es für fast alle dieser Kontrolltypen Beispiele. Die meisten Module mit dem Kontrolltyp required beziehen sich auf pam_unix.so, dem Haupt Authentifizierungsmodul. Das einzige Modul mit dem Kontrolltyp requisite ist pam_securetty.so, das überprüft, ob der Login auf einem sicheren Terminal stattfindet und das einzig optionale Modul ist das, was sich mit der Information über den letzten Login beschäftigt, also pam_lastlogin.so.

Modulpfad

Der Name (und optional der Pfad) des Moduls, das die entsprechende Aufgabe übernehmen soll. Wird der Pfad weggelassen, so wird davon ausgegangen, dass sich die Module in /usr/lib/security oder /lib/security befinden. Der FileSystemStandard legt die zweite Lokalität fest, damit die Module auch existieren, wenn nur das Wurzelverzeichnis gemountet ist.

Parameter

Die Parameter, die dem Modul mitgegeben werden sollen. Jedes Modul kennt eigene Parameter. Der Parameter nullok (Null OK) den das Modul pam_unix.so mitbekommen kann, bedeutet, dass es OK ist, wenn ein User kein Passwort (bzw. ein leeres Passwort) benutzt.

Sind die Anweisungen von PAM statt im Verzeichnis /etc/pam.d alle zusammen in der Datei /etc/pam.conf, dann steht vor den vier oben beschriebenen Feldern noch der Name des Dienstes, um den es geht.

Entweder ist also in der Datei /etc/pam.d/login die Zeile

  auth    required    pam_unix.so  nullok

oder in der Datei /etc/pam.conf steht

  login   auth    required    pam_unix.so  nullok

Die other-Datei

Jede Datei in /etc/pam.d bezieht sich auf einen bestimmten Dienst. Die einzige Ausnahme ist die Datei /etc/pam.d/other. Diese Datei enthält die Konfiguration für all diejenigen Dienste, die keine eigene Konfigurationsdatei haben. Wenn ein bestimmter Dienst gestartet werden soll, dann sucht PAM zunächst nach einer Datei in /etc/pam.d, die den Namen des Dienstes trägt. Findet PAM diese Datei nicht, dann wird die Datei others im Verzeichnis /etc/pam.d abgearbeitet. Da diese Datei sozusagen als Rückgriff für alle nicht spezifizierten Dienste fungiert, muss sie besonders sicher sein.

Um z.B. grundsätzlich alles zu verbieten, was nicht explizit in einer eigenen Datei erlaubt ist, kann in die Datei /etc/pam.d/other folgendes eingetragen werden:

    auth	required	pam_deny.so 
    auth	required	pam_warn.so 
    account	required	pam_deny.so 
    account	required	pam_warn.so 
    password	required	pam_deny.so 
    password	required	pam_warn.so 
    session	required	pam_deny.so 
    session	required	pam_warn.so

Damit wären alle vier denkbaren Möglichkeiten abgelehnt (pam_deny.so) und im Syslog protokolliert (pam_warn.so).

Wichtige PAM-Module

Die gesammte Funktionalität von PAM wird über Module bereitgestellt. Für jede Aufgabe, die PAM erledigen soll, gibt es ein entsprechendes Modul, das diese Aufgabe löst. Dieses Prinzip ermöglicht die einfache und schnelle Erweiterung der Programme, die eine Authentifizierung erfordern, ohne dass an diesen irgend etwas am Quellcode verändert werden müsste.

Wichtige Module von PAM sind

pam_access.so

Ermöglicht eine Einstellungen, welche User (lokal oder netzweit) sich auf welchem Terminal einloggen dürfen. Hiermit kann z.B. festgelegt werden, dass sich ein User hans zwar vom Rechner1 aber nicht vom Rechner2 oder nicht auf Terminal3 einloggen darf. Konfigurierbar in /etc/security/access.conf oder der Datei, die als Parameter accessfile=Datei angegeben wurde.

pam_chroot.so

Ermöglicht den Betrieb verschiedener chroot-Umgebungen für verschiedene User.

pam_cracklib.so

Überprüfung, ob sichere Passwörter verwendet werden. Benötigt eine installierte libcrack-Library. Das Modul ermöglicht eine feine Einstellung der Anforderungen von Passwörtern über Parameter wie minlen=…

pam_deny.so

Verbietet einen beliebigen Dienst. Geeignet für die other Datei.

pam_env.so

Ermöglicht das Setzen und Entfernen von Umgebungsvariablen. Konfigurierbar über /etc/security/pam_env.conf.

pam_filter.so

Ermöglicht den Einsatz von Filterprogrammen, die alle Ein- und Ausgaben eines Terminals filtern. Einzige mitgelieferte Variante ist ein Programm, das Klein- in Großbuchstaben verwandelt…

pam_ftp.so

Ermöglicht anonymes Login für FTP-Logins mit eMail Adresse als Passwort.

pam_group.so

Steuert die Gruppenzugehörigkeit einzelner User. Konfigurierbar über /etc/security/groups.conf.

pam_issue.so

Ersetzt die Funktionalität des login/getty-Programmes, die Datei /etc/issue vor dem Login auf dem Terminal darzustellen. pam_krb4.so

Bietet die Nutzung von Kerberos4 Authentifizierung an.

pam_lastlog.so

Dieses Modul verwaltet die /var/log/lastlog Datei.

pam_limits.so

Übernimmt Einstellungen hinsichtlich der Beschränkung von Ressourcen aus der Datei /etc/security/limits.conf.

pam_listfile.so

Ermöglicht es, bestimmten Usern den Zugriff zu verweigern oder zu erlauben, wenn sie in bestimmten Dateien aufgelistet sind. (/etc/ftpusers wäre ein typisches Beispiel).

pam_mail.so

Überprüft nach dem Einloggen eines Users, ob neue Mail für ihn da ist und meldet es ihm gegebenenfalls.

pam_mkhomedir

Legt Homeverzeichnisse für User an, die noch keine haben.

pam_motd.so

Gibt die motd-Datei nach dem Login aus.

pam_nologin.so

Wenn die Datei /etc/nologin existiert, werden alle Versuche des Logins – außer die von root – abgewiesen.

pam_permit.so

Das Gegenteil von pam_deny.so. Erlaubt alles. Sehr gefährlich!!!

pam_pwdb.so

Unix-artiges Passwort Management und Authentifizierung.

pam_rhosts_auth.so

Steuert die Verwendung von .rhosts Dateien

pam_rootok.so

Gibt Dienste frei, wenn sie von root (echte UID, nicht effektive UID) aufgerufen werden.

pam_securetty.so

Arbeitet die Datei /etc/securetty ab, um festzulegen, ob sich root auf einem bestimmten Terminal einloggen darf.

pam_tally.so

Zählt fehlgeschlagene Login-Versuche mit und kann optional nach einer bestimmten Anzahl einen Account sperren.

pam_time.so

Ermöglicht über die Konfiguration in /etc/security/time.conf die Einstellung, zu welcher Zeit welche Dienste zur Verfügung stehen.

pam_unix.so

Stellt die normale Unix-Funktionalität zum Umgang mit den Dateien passwd und shadow zur Verfügung. Über den Parameter nis wird auch NIS unterstützt.

pam_userdb.so

Ermöglicht die Userauthentifizierung über eine Berkley (db) Datenbank.

pam_warn.so

Gibt Meldungen über syslog aus.

pam_wheel.so

Verschafft den Mitgliedern der Gruppe wheel (GID 0) Root-Privilegien.

Es existieren auch weitere Module, so etwa das Modul pam_ldap.so, mit dem Authentifizierung über LDAP-Server möglich ist.