Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Authentifizierung und Autorisierung unterLinux/Solaris: PAM und NSS
Vortrag im Proseminar”Konzepte von Betriebssystemkomponenten“
Clemens Lang
09. Juni 2010
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 1/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Motivation
Problem
Linux: Benutzer in der Datei /etc/passwd
Setup mit mehreren Rechnern:Authentifizierung von Benutzern ohne Anpassungvon /etc/passwd auf jedem Rechner?
Herangehensweise
Wie funktioniert die Authentifizierung unter Linux?
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 2/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Motivation
Problem
Linux: Benutzer in der Datei /etc/passwd
Setup mit mehreren Rechnern:Authentifizierung von Benutzern ohne Anpassungvon /etc/passwd auf jedem Rechner?
Herangehensweise
Wie funktioniert die Authentifizierung unter Linux?
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 2/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Gliederung
1 Motivation
2 Pluggable Authentication ModulesGeschichteAufbauKonfigurationFunktionsweiseErweiterungen in Linux-PAM
3 Name Service Switch
4 AbschlussZusammenfassungQuellenEnde
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 3/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Gliederung
1 Motivation
2 Pluggable Authentication ModulesGeschichteAufbauKonfigurationFunktionsweiseErweiterungen in Linux-PAM
3 Name Service Switch
4 AbschlussZusammenfassungQuellenEnde
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 4/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Problem
Problem
Services (z.B. ssh, login, gdm, ftp, screensaver . . . ) mussenBenutzer authentifizieren
Services bestimmen zunachst selbst, welcheAuthentifizierungsmethoden sie nutzen
Neue Authentifizierungsmethoden oder Bugfixes mussen injedem Programm implementiert werden
Losung
Abstrahierung der Authentifizierungsmethoden von den Services
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 5/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Problem
Problem
Services (z.B. ssh, login, gdm, ftp, screensaver . . . ) mussenBenutzer authentifizieren
Services bestimmen zunachst selbst, welcheAuthentifizierungsmethoden sie nutzen
Neue Authentifizierungsmethoden oder Bugfixes mussen injedem Programm implementiert werden
Losung
Abstrahierung der Authentifizierungsmethoden von den Services
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 5/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
PAM abstrahiert Authentifizierungsmethoden
Was ist PAM?
PAM steht fur Pluggable Authentication Modules
Abstraktionsebene zwischen sog.”system-entry services“
und Authentifizierungsmethoden
PAM erlaubt Administratoren Authentifizierungsmethodenzu wahlen
Entstehungsgeschichte
Entwickelt von Sun als interne Komponente von Solaris
1996 durch Samar spezifiziert und publiziert [Sam96]
Spezifikation in Linux implementiert
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 6/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
PAM abstrahiert Authentifizierungsmethoden
Was ist PAM?
PAM steht fur Pluggable Authentication Modules
Abstraktionsebene zwischen sog.”system-entry services“
und Authentifizierungsmethoden
PAM erlaubt Administratoren Authentifizierungsmethodenzu wahlen
Entstehungsgeschichte
Entwickelt von Sun als interne Komponente von Solaris
1996 durch Samar spezifiziert und publiziert [Sam96]
Spezifikation in Linux implementiert
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 6/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Schematischer Aufbau
login gdm ssh ftp . . .
Application Programming Interface
Configuration (pam.conf)
Service Provider Interface
pam unix.so
/etc/passwd
pam ldap.so
LDAP
pam pkcs11.so
Certificate Storage
. . .
. . .
system-entry services
PAM
password databases
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 7/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Logischer Aufbau
Logischer Aufbau
Authentifizierung Ist der Benutzer, wer er vorgibt zu sein?Kontoverwaltung Ist der Account abgelaufen oder gesperrt?
Sitzungsverwaltung Ist der Benutzer bereits eingeloggt?Wie lange ist der Benutzer eingeloggt?
Passwortverwaltung Anderung des Passworts
Unabhangig voneinander konfigurierbar
Nutzung durch Services optional
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 8/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Stapeln von Modulen
session stack auth stack account stack
system-entry service
PAM Framework
Auth
pam kerberos auth.so
pam unix auth.so
pam rsa auth.so
Session
pam unix session.so
Account
pam unix account.so
vgl. [Sam96, Fig.2]
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 9/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Konfiguration: pam.conf bzw. pam.d/
Beispielkonfiguration von PAM
Service Type Flags Module Path Options
login auth required pam kerb auth.so debuglogin auth required pam unix auth.so use mapped passlogin auth optional pam rsa auth.so try first pass
[Sam96]
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 10/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Funktionsweise aus Anwendungssicht
Beispielhafter Ablauf einer Authentifizierungsanforderung
pam start() Erzeugen eines PAM Handlespam authenticate() Authentifizierung des Nutzers
pam acct mgmt() Prufen das Kontos des Nutzerspam open session() Benachrichtigung uber neue Session
pam setcred() Setzen von Eigenschaften,z.B. Starten eines ssh-agent
pam end() Beenden des Authentifizierungsprozesses
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 11/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Schnittstelle zum User: Conversation Function
Schnittstelle zum User
Benutzerinteraktion durch Callback-Funktion
4 Nachrichten moglich:
Eingabeaufforderung (versteckt oder sichtbar)Fehlermeldunginformative Meldung
Authentifizierung (nach dem Standard) nur durch Eingaben
⇒ z.B. Token/Fingerabdruck nur lokal nutzbar
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 12/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Erweiterungen in Linux-PAMau
then
ticating
mach
ine
client
mach
ine
user libpamc
client
agent
server
libpam
module
[Mor01]
//
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 13/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Erweiterungen in Linux-PAM: libpamc
client-side support fur PAM
libpamc: Client-seitige Unterstutzung fur PAM [Mor01]
Theoretisch: Token/Fingerabdruck/. . . durch sog. Agent amClient auch entfernt nutzbar
Praktisch: Keine Implementierung
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 14/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Gliederung
1 Motivation
2 Pluggable Authentication ModulesGeschichteAufbauKonfigurationFunktionsweiseErweiterungen in Linux-PAM
3 Name Service Switch
4 AbschlussZusammenfassungQuellenEnde
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 15/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Name Service Switch
Benutzerdatenbank jenseits der Authentifizierung
Wie zeigt z.B. ls -l Benutzernamen an?
GNU C Library pwd.h
⇒ libc muss Zugriff auf die Benutzerdatenbank haben
Name Service Switch [lib]
Konfigurierbare Schnittstelle
Leitet Datenbankabfragen an Module weiter
Module sind Shared Libraries, z.B. libnss ldap.so
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 16/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Name Service Switch
Benutzerdatenbank jenseits der Authentifizierung
Wie zeigt z.B. ls -l Benutzernamen an?
GNU C Library pwd.h
⇒ libc muss Zugriff auf die Benutzerdatenbank haben
Name Service Switch [lib]
Konfigurierbare Schnittstelle
Leitet Datenbankabfragen an Module weiter
Module sind Shared Libraries, z.B. libnss ldap.so
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 16/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Funktionsweise
getpwnam()
Name Service Switch (nsswitch.conf)
libnss ldap.so libnss files.solibnss mysql.so
MySQL /etc/passwdLDAP
application
name service switch
user databases
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 17/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Gliederung
1 Motivation
2 Pluggable Authentication ModulesGeschichteAufbauKonfigurationFunktionsweiseErweiterungen in Linux-PAM
3 Name Service Switch
4 AbschlussZusammenfassungQuellenEnde
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 18/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Zusammenfassung
AusgangspunktMehrbenutzerumgebung
Authentifizierung mit PAMAbstrahierung der Authentifizierung von
”system-entry services“,
Aufbau, Modul-Stacking, Schnittstelle zum Benutzer, libpamc
Name Service SwitchKonfigurierbare Datenbankschnittstelle der libc, Funktionsweise
Zuruck zum AusgangspunktUmsetzung von Mehrbenutzersystemen moglich
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 19/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Quellen I
The Open Group.X/open single sign-on service (xsso) – pluggableauthentication modules.X/open preliminary specification, The Open Group, Mar 1997.
Charlie Lai.Making login services independent of authenticationtechnologies.Presentation published by Linux-PAM on kernel.org, Nov 1996.
The GNU C Library Manual.Section 28 System Databases and Name Service Switch.
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 20/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Quellen II
Andrew G. Morgan and Thorsten Kukuk.The Linux-PAM Guides, 1.1.1 edition, Dec 2009.Manuals for Linux-PAM.
Andrew G. Morgan.Pluggable Authentication Modules (PAM), Dec 2001.Draft for the Open-PAM working group PAM standard.
Vipin Samar.Unified login with pluggable authentication modules (pam).In CCS ’96: Proceedings of the 3rd ACM conference onComputer and communications security, pages 1–10, NewYork, NY, USA, 1996. ACM.
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 21/22
Motivation Pluggable Authentication Modules Name Service Switch Abschluss
Q&A
Danke fur die Aufmerksamkeit
Questions & Answers
Clemens Lang [email protected]
Authentifizierung & Autorisierung unter Linux/Solaris: PAM und NSS 22/22