Authentifizierung mit PAM [2]

PAM steht für Pluggable Authentication Modules und ist wie der Name schon sagt modular aufgebaut. Statt die Einzelheiten der Authentisierung in jeder Applikation neu zu formulieren, bietet die PAM einen standardisierten Dienste in Form von Modulen an. Vorteil: ändert man bsp. Etwas an der Passwort-Datenbank, so muss man lediglich das entsprechende PAM-Modul bearbeiten und nicht sämtliche Programme (login, passwd, etc) einzeln, die darauf zugreifen.

 

/etc/pam.conf = Zentrale Konfigurationsdatei. Für jedes Programm muss ein Eintrag definiert sein.
/etc/pam.d/ = In diesem Vrz. muss für jedes Programm eine Datei exisitieren, welche genau wie das Programm selbst heißt.

# Auszug /etc/pam.d/passwd
# Syntax: Modul-Typ Control-Flags Module Argumente
auth required pam_unix.so nullok

# Auszug /etc/pam.conf
# Hier muss natürlich das Programm zusätzlich angegeben werden
# auf das sich der Eintrag bezieht
passwd auth required pam_unix.so nullok

 

Modul-Typen

account = Dieses Modul wird für Account Management ausgewertet, dient nicht der Authentifizierung. Bsp. Werden Passwörter aus Gültigkeit geprüft
auth = Das Modul fordert zur Passworteingabe aus.
password = Dieses Modul verändert Passwörter (Authentication Token aktuell halten)
session = Die Session nach dem Login verwalten (bsp. Home-Laufwerk verealten)

Control-Flags

requisite = Das Modul darf keinen Fehler zurückliefern. Bei Fehler Abbruch der Abarbeitung
required = Das Modul muss erfolgreich abgeschlossen werden.
sufficent = Bei Erfolg, werden weitere Module nicht abgearbeitet.
optional = Diese Module werden nicht auf Erfolg/Fehler geprüft

 

Wichtige PAM-Module

pam_access.so = Welche User dürfen sich von wo anmelden. Konfig in /etc/security/access
pam_cracklib.so = Prüfen von Passwörtern auf Ihre Verwendbarkeit
pam_deny.so = Verhinden von Zugriff/Zugang
pam_devperm.so = Verändern von Device-Rechten. Liest /etc/logindevperm aus.
pam_ftp.so = Anonymen FTP Login ermöglichen
pam_group.so = Gruppenzugehörigkeit zuweisen (anhand /etc/security/groups.conf)
pam_homecheck.so = Testen, ob der User aus sein H-Laufwerk zugreifen darf
pam_issue.so = Ausgabe von /etc/issue (Willkomensmeldung)
pam_ldap.so = LDAP-Authetntifizierung ermöglichen
pam_limit.so = Anzahl der Prozesse und Ressourcen beschränken
pam_listfile.so = User, welche in bestimmten Listen eingetragen sind, Zugriff beschränken
pam_mail.so = Prüfen auf neue Mails für User
pam_mkhomedir.so = anlegen des Homeverzeichnis
pam_nologin.so = Login verbieten, wen /etc/nologin existiert
pam_permit.so = Gegenteil von pam_deny, Zugriff erlauben
pam_rootok.so = Dienste ohne Passwortabfrage (su) für root starten
pam_securetty.so = Root-Login auf bestimmte Terminals beschränken
pam_tally.so = Fehlgeschlagene Login-Versuche mitloggen
pam_time.so = Welche Dienste dürfen zu welcher Zeit benutzt werden?
pam_unix.so = Standard-Authentifzierungsmodul
pam_warn.so = Ausgabe von Meldungen über syslog

 

Argumente für PAM

debug = Syslog schreibt Debug-Infos mit
no_warn = Warnungen nicht an Anwendung weitergeben
use_first_pass = User nicht zur PW-Abfrage auffordern. Gilt nur für auth + password
try_first_pass = Modul fordert User zur Authentifzierung auf.
expose_account = Ausführliche Aufforderung zur Authentifzierung mit vollem Benutzernamen
nullok = Leere Passwörter sind erlaubt.

Dateien in /etc/pam.d/

- Dateien in /etc/pam.d/ bezieht sich auf einen Dienst
- Der Name der Datei muss identisch mit dem Namen des Dienstes/Programm sein
- Ausnahme:
/etc/pam.d/other. Diese gilt für alle Anwendungen, die keinen eigenen Eintrag haben.
- Einstellungen in /etc/pam.d/other sollten daher sehr sicher sein.

# Auszug /etc/pam.d/other
# Alle anderen Modultypen sperren (deny)
# und Syslog eine Warnung übermitteln (warn)
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

Hinweis:
Pam-Module liegen in /lib/security, Einträge in /etc/pam.d gehen vor /etc/pam.conf