|
|
| 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]] |
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
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