Integration der AFS/Kerberos-Authentisierung in Linux/Unix-Dienste mittels PAM
Vorbemerkung
PAM steht für
Pluggable Authentication Modules. Dabei handelt es sich um einen universellen Mechanismus, mit dessen Hilfe einzelne Authentisierungsverfahren durch den Administrator eines Systems für jede einzelne Anwendung (z.B.
login,
xdm,
sshd, ...) geeignet festgelegt werden können.
Bestandteil der AFS-Klient-Software ist auch ein PAM-Modul, welcher die Authentisierung gegen eine AFS/Kerberos-Datenbasis ermöglicht.
Diese Beschreibung folgt in der Darstellung der Beschreibung der PAM-Moduln aus dem
Linux-PAM Project.
Module Name
- pam_afs
- Standard-AFS-PAM-Modul, im authentication-Teil wird ein AFS-Token erzeugt und in einer PAG dem AFS Cache Manager zugeordnet
- pam_afs.krb
- Erweiterung des Standard-AFS-PAM-Moduls, legt das AFS Service Ticket und(!) das Ticket Granting Ticket des Nutzers im Ticketfile des Nutzers ab (Umgebungsvariable
KRBTKTFILE)
Management Groups
authentication, password, session
Überblick zu den Moduln
authentication
Argumente
debug, dont_fork, ignore_uid, ignore_root, no_unlog, refresh_token, remain, remainfiletime, setenv_password_expires, set_token, try_first_pass, use_first_pass, use_klog
- debug
- erzeugt zusätzliche Debugging-Ausgaben über
syslogd
- dont_fork
- die eigentliche Authentisierung geschieht in einem Subprozeß, durch Angabe dieses Arguments erfolgt die Authentisierung im Kontext des Anwednung selbst, es wird kein Subprozeß erzeugt (damit sind einige Nebeneffekte verbunden, dieses Argument sollte man nur nutzen, wenn sonst Probleme auftreten)
- ignore_uid uid
- wenn die UNIX-UID des sich anmeldenden Nutzers kleiner oder gleich uid ist, dann unterlasse die Authentisierung und liefere
PAM_AUTH_ERR)
- ignore_root
- gleichbedeutend mit ignore_uid 0
- no_unlog
- verwerfe am Sitzungsende (während
pam_sm_setcred(DELETE_CRED)) das Token nicht
- refresh_token
- beschaffe keine neue PAG, sondern nur ein neues Token
- remain
- das Token soll über das Sitzungsende hinaus noch für max. 5 Minuten erhalten bleiben
- remainlifetime time
- das Token soll über das Sitzungsende hinaus noch für max. time Sekunden erhalten bleiben
- setenv_password_expires
- setzt die Umgebungsvariable
PASSWORD_EXPIRES
- set_token
- speichere das Token bereits bereits während
pam_sm_authenticate() und nicht erst wärend pam_setcred() (hilfreich bei Anwendungen, die pam_setcred() nie rufen)
- try_fist_pass
- versuche zuerst das Passwort zu verwenden, welches von einem vorausgegangenen PAM-Modul bereits beschafft und im PAM-Handle übergeben wurde, wenn dieses Passwort nicht zum Erfolg führt, erfrage das Passwort selbst von der Anwendung use_first_pass verwende nur das Passwort, welches von einem vorausgegangenen PAM-Modul bereits beschafft und im PAM-Handle übergeben wurde, wenn dieses Passwort nicht zum Erfolg führt, liefere
PAM_AUTH_ERR use_klog benutzte das Programm klog, um die Authentisierung durchzuführen (dieses Argument sollte nur benutzt werden, wenn alle anderen Konfigurationen nicht funktionieren)
session
Argumente
debug, no_unlog, remain, remainlifetime
password
Argumente
keine.
Beispiel
Das Beispiel stammt aus Red Hat Linux 7.3 und illustriert die Verwendung im Zusammenhang mit
login,
sshd,
su und
KDE
% cd /etc/pam.d
% cat login
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_console.so
% cat su
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_xauth.so
% cat sshd
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_console.so
% cat system-auth
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_afs.krb.so remainlifetime 60 ignore_uid 200
auth sufficient /lib/security/pam_unix.so likeauth
auth required /lib/security/pam_deny.so
account required /lib/security/pam_access.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3 type=
password sufficient /lib/security/pam_afs.so
password required /lib/security/pam_unix.so use_authtok md5 shadow
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
% cat kde
# used by kscreensaver
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_stack.so service=system-auth.xdm
password required /lib/security/pam_stack.so service=system-auth.xdm
session required /lib/security/pam_stack.so service=system-auth.xdm
session optional /lib/security/pam_console.so
% cat xdm
auth required /lib/security/pam_stack.so service=system-auth.xdm
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_stack.so service=system-auth.xdm
password required /lib/security/pam_stack.so service=system-auth.xdm
session required /lib/security/pam_stack.so service=system-auth.xdm
session optional /lib/security/pam_console.so
% cat system-auth.xdm
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_afs.krb.so remainlifetime 60 ignore_uid 200 set_token
auth sufficient /lib/security/pam_unix.so likeauth
auth required /lib/security/pam_deny.so
account required /lib/security/pam_access.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3 type=
password sufficient /lib/security/pam_afs.so
password required /lib/security/pam_unix.so use_authtok md5 shadow
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so