Eine Einführung in SELinux unter CentOS 7 - Teil 3: Benutzer

Einführung

In diesem letzten Teil unseres SELinux-Tutorials werden wir uns mit SELinux-Benutzern und der Feinabstimmung ihres Zugriffs befassen. Außerdem erfahren Sie mehr über SELinux-Fehlerprotokolle und wie Sie die Fehlermeldungen verstehen.

_ * Hinweis * + Die in diesem Tutorial gezeigten Befehle, Pakete und Dateien wurden unter CentOS 7 getestet. Die Konzepte bleiben für andere Distributionen gleich. _

In diesem Lernprogramm führen wir die Befehle als Root-Benutzer aus, sofern nicht anders angegeben. Wenn Sie keinen Zugriff auf das Root-Konto haben und ein anderes Konto mit Sudo-Berechtigungen verwenden, müssen Sie den Befehlen das Schlüsselwort "+ sudo +" voranstellen.

SELinux-Benutzer

SELinux-Benutzer unterscheiden sich von normalen Linux-Benutzerkonten, einschließlich des Root-Kontos. Ein SELinux-Benutzer wird weder mit einem speziellen Befehl erstellt, noch verfügt er über einen eigenen Anmeldezugriff auf den Server. Stattdessen werden SELinux-Benutzer in der Richtlinie definiert, die beim Booten in den Speicher geladen wird, und es gibt nur wenige dieser Benutzer. Die Benutzernamen enden mit "+ _u ", ebenso wie Typen oder Domänennamen mit " _t " und Rollen mit " _r +". Verschiedene SELinux-Benutzer haben unterschiedliche Rechte im System, und das macht sie nützlich.

Der im ersten Teil des Sicherheitskontexts einer Datei aufgeführte SELinux-Benutzer ist der Benutzer, dem diese Datei gehört. Dies ist genau so, als würden Sie den Eigentümer einer Datei anhand einer regulären Ausgabe des Befehls "+ ls -l +" sehen. Ein Benutzerlabel in einem Prozesskontext zeigt die Berechtigung des SELinux-Benutzers an, mit der der Prozess ausgeführt wird.

Wenn SELinux erzwungen wird, wird jedes reguläre Linux-Benutzerkonto einem SELinux-Benutzerkonto zugeordnet. Es können mehrere Benutzerkonten demselben SELinux-Benutzer zugeordnet sein. Diese Zuordnung ermöglicht es einem regulären Konto, die Berechtigung seines SELinux-Gegenstücks zu erben.

Um diese Zuordnung anzuzeigen, können Sie den Befehl + semanage login -l + ausführen:

semanage login -l

In CentOS 7 können wir Folgendes sehen:

Login Name           SELinux User         MLS/MCS Range        Service

__default__          unconfined_u         s0-s0:c0.c1023       *
root                 unconfined_u         s0-s0:c0.c1023       *
system_u             system_u             s0-s0:c0.c1023       *

Die erste Spalte in dieser Tabelle, "Anmeldename", enthält die lokalen Linux-Benutzerkonten. Hier sind jedoch nur drei aufgeführt. Haben wir im zweiten Teil dieses Tutorials nicht ein paar Konten erstellt? Ja, und sie werden durch den als Standard angezeigten Eintrag dargestellt. Jedes reguläre Linux-Benutzerkonto wird zuerst dem Standard -Login zugeordnet. Dies wird dann dem SELinux-Benutzer mit dem Namen unconfined_u zugeordnet. In unserem Fall ist dies die zweite Spalte der ersten Zeile. In der dritten Spalte wird die MLS / MCS-Klasse (Multilevel Security / Multi Category Security) für den Benutzer angezeigt. Lassen Sie uns vorerst diesen Teil und auch die Spalte danach (Service) ignorieren.

Als nächstes haben wir den Benutzer * root . Beachten Sie, dass es nicht dem " default *" - Login zugeordnet ist, sondern einen eigenen Eintrag erhalten hat. Wieder wird root auch dem Benutzer unconfined_u SELinux zugeordnet.

system_u ist eine andere Benutzerklasse, die zum Ausführen von Prozessen oder Daemons vorgesehen ist.

Um zu sehen, welche SELinux-Benutzer im System verfügbar sind, können wir den Befehl + semanage user + ausführen:

semanage user -l

Die Ausgabe in unserem CentOS 7-System sollte folgendermaßen aussehen:

                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

Was bedeutet dieser größere Tisch? Zunächst werden die verschiedenen SELinux-Benutzer angezeigt, die in der Richtlinie definiert sind. Wir hatten zuvor Benutzer wie unconfined_u und system_u gesehen, aber jetzt sehen wir andere Benutzertypen wie guest_u, staff_u, sysadm_u, user_u und so weiter. Die Namen sind ein Hinweis auf die damit verbundenen Rechte. Zum Beispiel können wir vielleicht annehmen, dass der Benutzer sysadm_u mehr Zugriffsrechte als guest_u hat.

Schauen wir uns die fünfte Spalte SELinux-Rollen an, um unseren Gast zu verifizieren. Wenn Sie sich aus dem ersten Teil dieses Tutorials erinnern, sind SELinux-Rollen wie Gateways zwischen einem Benutzer und einem Prozess. Wir haben sie auch mit Filtern verglichen: Ein Benutzer kann eine Rolle eingeben, sofern die Rolle dies erlaubt. Wenn eine Rolle berechtigt ist, auf eine Prozessdomäne zuzugreifen, können die dieser Rolle zugeordneten Benutzer diese Prozessdomäne eingeben.

In dieser Tabelle sehen wir, dass der Benutzer "+ unconfined_u " den Rollen " system_r " und " unconfined_r " zugeordnet ist. Obwohl dies hier nicht ersichtlich ist, ermöglicht die SELinux-Richtlinie diesen Rollen die Ausführung von Prozessen in der Domäne " unconfined_t ". In ähnlicher Weise wird der Benutzer " sysadm_u +" für die Rolle "sysadmr" autorisiert, "guestu" wird jedoch der Rolle "guest_r" zugeordnet. Für jede dieser Rollen sind unterschiedliche Domänen autorisiert.

Wenn wir nun einen Schritt zurücktreten, haben wir auch vom ersten Codeausschnitt gesehen, dass der Standard -Login dem unbeschränktenu-Benutzer zugeordnet ist, genau wie der Root-Benutzer dem unbeschränkten_u-Benutzer. Da das Standard _