Pam namespace.so
Erscheinungsbild
pam_namespace.so
- Risiko /tmp
Das gemeinsame Verzeichnis /tmp ist in einem Mehrbenutzersystem traditionell eine Quelle verschiedener Risiken, etwa
- Manipulation temporärer Dateien
- Race Conditions
- unerwünschte Überschneidung von Arbeitsdaten zwischen Benutzern
- Ansammlung von Artefakten, die das Verhalten von Anwendungen in einer anderen Sitzung beeinflussen
- Dieses Modul richtet für die Benutzersitzung private Namensräume mit sogenannten polyinstantiated directories ein
Die Idee der polyinstantiated directories besteht darin, dass dasselbe logische Verzeichnis, zum Beispiel /tmp, unterschiedliche physische Instanzen für verschiedene Benutzer oder — in SELinux-Szenarien — für unterschiedliche Sicherheitskontexte und Levels besitzen kann
pam_namespace.so wird als letzte Zeile der Gruppe session in der PAM-Konfiguration des jeweiligen Dienstes eingebunden
- Entsprechend wird es erst nach pam_selinux.so aktiv und arbeitet somit mit einem bereits bestimmten Kontext
Konfiguration
Die zentrale Konfigurationsdatei ist /etc/security/namespace.conf
- Falls sie nicht vorhanden ist, wird /usr/share/pam/security/namespace.conf verwendet
- Zusätzlich werden .conf-Dateien aus den Verzeichnissen /etc/security/namespace.d/ und /usr/share/pam/security/namespace.d/ eingelesen
Format einer Regel in namespace.conf
polydir instance_prefix method list_of_uids
| polydir | Zielverzeichnis |
| instance_prefix | Basispfad für die Instanzen |
| method | - |
| list_of_uids | Ausnahmen, für die die Verzeichnisaufteilung nicht angewendet wird |
Methoden
- namespace.conf unterstützt mehrere Methoden
Für die Zugriffskontrolle mit SELinux sind die Methoden context und level besonders nützlich
| Methoden | Beschreibung |
|---|---|
| user | Trennung nach Benutzername |
| level | Trennung nach MLS/MCS-Level und Benutzername |
| context | Trennung nach vollständigem Sicherheitskontext und Benutzername |
| tmpfs | die Instanz wird als separates tmpfs erzeugt |
| tmpdir | es wird ein temporäres Verzeichnis erstellt |