Zum Inhalt springen

Linux/SELinux/06 Benutzer/PAM: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 50: Zeile 50:
[[Pam_oddjob_mkhomedir.so]]
[[Pam_oddjob_mkhomedir.so]]


=== Praxis zu pam_namespace.so ===
Isolation von /tmp unterschiedlicher Sitzungen mit Hilfe von pam_namespace.so
Für su wird die Option unmnt_remnt empfohlen, da bei solchen Programmen die Polyinstanziierung möglicherweise bereits für die ursprüngliche Login-Sitzung eingerichtet ist und vor einer neuen Einrichtung sauber zerlegt und erneut aufgebaut werden muss
Benutzer vorbereiten
<syntaxhighlight lang="bash" highlight="" copy line>
useradd -m alice
useradd -m bob
passwd alice
passwd bob
</syntaxhighlight>
Für diese Übung kann der Modus permissive gesetzt werden, da hier keine Blockierungen benötigt werden; wichtig ist lediglich, dass SELinux aktiviert ist
<syntaxhighlight lang="bash" highlight="1" copy line>
setenforce 0
</syntaxhighlight>
Boolean prüfen und aktivieren, damit diese Funktion in der Policy erlaubt wird
<syntaxhighlight lang="bash" highlight="" copy line>
setsebool -P allow_polyinstantiation 1
getsebool allow_polyinstantiation
</syntaxhighlight>
Verzeichnis für die /tmp-Instanzen anlegen
<syntaxhighlight lang="bash" highlight="1" copy line>
mkdir /tmp-inst --mode 000
</syntaxhighlight>
Nach der Erstellung muss dafür der erwartete SELinux-Kontext wiederhergestellt werden
<syntaxhighlight lang="bash" highlight="1" copy line>
restorecon -Fv /tmp-inst
</syntaxhighlight>
Prüfung
<syntaxhighlight lang="bash" highlight="1" copy line>
ls -ldZ /tmp-inst
</syntaxhighlight>
Anschließend namespace.conf konfigurieren
Zunächst eine Sicherungskopie anlegen
<syntaxhighlight lang="bash" highlight="1" copy line>
cp /etc/security/namespace.conf /etc/security/namespace.conf.bak
</syntaxhighlight>
Danach muss in die Datei /etc/security/namespace.conf folgende Konfiguration eingetragen werden
<syntaxhighlight lang="bash" highlight="1" copy line>
/tmp    /tmp-inst/    user    root,adm
</syntaxhighlight>
Diese Zeile bedeutet Folgendes
* /tmp — das logische Verzeichnis, das isoliert werden soll
* /tmp-inst/ — der Basispfad, unter dem die realen Instanzen abgelegt werden
* user — Trennungsmethode nach Benutzername
Zur Veranschaulichung wird hier die Methode user verwendet
* root,adm — Liste der Ausnahmen
Nun pam_namespace.so für su aktivieren
* Dazu muss in der Datei /etc/pam.d/su im Abschnitt session Folgendes ergänzt werden
<syntaxhighlight lang="bash" highlight="1" copy line>
session    required  pam_namespace.so  unmnt_remnt
</syntaxhighlight>
Wie bereits erwähnt, gehört pam_namespace.so zum Typ session, da es weder die Passwortprüfung noch das eigentliche Zugangsrecht behandelt, sondern die Laufzeitumgebung für eine neue Benutzersitzung vorbereitet
* Damit ist die Konfiguration abgeschlossen
* Nun kann aus zwei verschiedenen Terminals eine Anmeldung für die Benutzer alice und bob mit Hilfe von su initiiert werden
Befehlssatz zur Prüfung für alice
<syntaxhighlight lang="bash" highlight="" copy line>
su - alice
findmnt --mountpoint /tmp
touch /tmp/alice.test
ls -la /tmp
</syntaxhighlight>
Zur Prüfung für bob
<syntaxhighlight lang="bash" highlight="" copy line>
su - bob
findmnt --mountpoint /tmp
ls -la /tmp
touch /tmp/bob.test
ls -la /tmp
</syntaxhighlight>
Der Befehl findmnt --mountpoint /tmp zeigt, dass /tmp innerhalb der Sitzung nicht mehr einfach das gemeinsame Systemverzeichnis ist, sondern aus einer separaten Instanz eingebunden wird, die auf Grundlage von /tmp-inst/ aufgebaut wurde
==== Rückbau ====
Nach Abschluss des Labors können die Änderungen manuell zurückgenommen werden
Aus /etc/pam.d/su muss die Zeile
<syntaxhighlight lang="bash" highlight="1" copy line>
session    required  pam_namespace.so  unmnt_remnt
</syntaxhighlight>
entfernt werden
Anschließend die ursprüngliche namespace.conf wiederherstellen
<syntaxhighlight lang="bash" highlight="1" copy line>
cp /etc/security/namespace.conf.bak /etc/security/namespace.conf
</syntaxhighlight>
Danach den Boolean wieder deaktivieren
<syntaxhighlight lang="bash" highlight="1" copy line>
setsebool -P allow_polyinstantiation 0
</syntaxhighlight>
Abschließend das angelegte Verzeichnis und die Benutzer entfernen
<syntaxhighlight lang="bash" highlight="" copy line>
rm -rf /tmp-inst
userdel bob
userdel alice
</syntaxhighlight>


{{navigation|Linux/SELinux/06 Benutzer|Linux/SELinux/07 Sandbox}}
{{navigation|Linux/SELinux/06 Benutzer|Linux/SELinux/07 Sandbox}}


[[Kategorie:Linux/SELinux/06]]
[[Kategorie:Linux/SELinux/06]]

Version vom 12. Juni 2026, 16:29 Uhr

Linux/SELinux/06 Benutzer/PAM - PAM-Module für SELinux

Beschreibung

Grundlagen der PAM-Architektur

PAM (Pluggable Authentication Modules)

Anwendungen können Vorgänge im Zusammenhang mit der Anmeldung an das System delegieren

  • modulares Subsystem

Anwendungen

Konfiguration

/etc/pam.d/

  • Ein Modul je jeden Dienst

Grundlegende PAM-Gruppen

auth Bestätigung der Identität des Benutzers und initiale Vergabe von Credentials
account Prüfung, ob der Zugriff auf den Dienst als solcher erlaubt ist
password Änderung des Authentifizierungs-Tokens
session Aktionen, die vor der Bereitstellung einer Sitzung und nach deren Beendigung ausgeführt werden müssen
Gruppe session

Für SELinux ist insbesondere die Gruppe session kritisch

  • da die Zuweisung des SELinux-Kontexts eines Benutzers zur Vorbereitung der Laufzeitumgebung für die zukünftige Sitzung gehört

pam_selinux.so

Pam_selinux.so

Erweiterte Isolation

Hier werden noch einige weitere Module behandelt

pam_sepermit.so

Pam_sepermit.so

pam_namespace.so

Pam_namespace.so

pam_oddjob_mkhomedir.so

Pam_oddjob_mkhomedir.so