SELinux - Benutzer und Rollen

Carsten Strotmann, sys4 AG

Created: 2023-11-22 Wed 09:03

Benutzer und Rollen

SELinux Benutzer und Rollen

  • Linux-Benutzer werden bei der Anmeldung über ein PAM-Modul einem SELinux-Benutzer zugeordnet
    • Ohne weitere Konfiguration ist dies der Benutzer unconfined_u (klassische Linux Rechte)
  • Linux-Benutzer können speziellen SELinux Benutzer-Klassen zugewiesen werden
  • Die SELinux Richtlinie erlaubt diesen Benutzern, in eine oder mehrere SELinux Rollen zu wechseln
    • Die SELinux Rollen können die Rechte des Benutzers erweitern oder einschränken
    • Hiermit lassen sich auch die Rechte des root Benutzers einschränken

Zuordnung von SELinux Benutzer-Arten zu Rollen

# semanage user -l

                Labeling   MLS/       MLS/
SELinux User    Prefix     MCS Level  MCS Range                      SELinux Roles

guest_u         user       s0         s0                             guest_r
root            user       s0         s0-s0:c0.c1023                 staff_r sysadm_r system_r unconfined_r
staff_u         user       s0         s0-s0:c0.c1023                 staff_r sysadm_r system_r unconfined_r
sysadm_u        user       s0         s0-s0:c0.c1023                 sysadm_r
system_u        user       s0         s0-s0:c0.c1023                 system_r unconfined_r
unconfined_u    user       s0         s0-s0:c0.c1023                 system_r unconfined_r
user_u          user       s0         s0                             user_r
xguest_u        user       s0         s0                             xguest_r

Linux Benutzer zu SELinux Benutzer Zuordnung

  • Der Befehl semanage login -l zeigt die aktuelle Zuordnung von Linux-Benutzern zu SELinux Benutzer-Klassen an
  • Alle nicht explizit zugewiesenen Benutzer werden nach der Regel für den Login-Namen __default__ zugewiesen
# semanage login -l

Login Name           SELinux User         MLS/MCS Range        Service
__default__          unconfined_u         s0-s0:c0.c1023       *
root                 unconfined_u         s0-s0:c0.c1023       *

SELinux Benutzer zuweisen

  • Die SELinux Richtlinien für Red Hat Systeme enthalten einige SELinux Benutzer
  • Die SELinux Benutzer-Klasse user_u verhindert das ein Benutzer die eigenen Rechte durch Programme wie su oder sudo ausweitet (auch wenn dieser Benutzer das Root-Passwort kennt und in der sudo Konfiguration eingetragen ist)
semanage login -a -s user_u <linux-user>

Schalter von SELinux-Klassen

  • Wie auch bei Prozess-Richtlinien lassen sich Benutzer-Richtlinien mittels SELinux Schalter (Booleans) anpassen
  • So kann mittels des Schalters allow_guest_exec_content einem Benutzer in der SELinux-Klasse guest_u das Recht entzogen werden, Shell-Skripte auszuführen
    • In der Standard-Konfiguration eines Linux-Systems gibt es jedoch Möglichkeiten, diese Beschränkung zu umgehen
# setsebool allow_guest_exec_content off

Prozesse in speziellem SELinux Kontext starten

  • Prozesse erhalten ihren SELinux Sicherheitskontext aufgrund der in der SELinux Policy definierten Kontext-Übergänge (Datei-Label -> Prozess-Label)
  • Mit dem Befehl runcon kann ein Prozess unter einen vom Benutzer definierten Sicherheitskontext gestartet werden (wenn die SELinux-Policy dies erlaubt)

# runcon system_u:system_r:httpd_t:s0-s0:c0.c1023 /usr/bin/python3 -m http.server

Ende des Kapitels "SELinux Benutzer"