Detaillierte Erklärung des SELINUX-Arbeitsprinzips

Detaillierte Erklärung des SELINUX-Arbeitsprinzips

1. Einleitung

Der Hauptvorteil, den SELinux für Linux mit sich bringt, besteht in der Bereitstellung eines flexiblen und konfigurierbaren MAC-Mechanismus.

Security-Enhanced Linux (SELinux) besteht aus zwei Teilen:

1) Kernel-SELinux-Modul (/kernel/security/selinux)

2) Benutzermodus-Tools

SELinux ist eine Sicherheitsarchitektur, die über das LSM-Framework (Linux Security Modules) in den Linux-Kernel 2.6.x integriert ist. Es ist ein Gemeinschaftsprojekt der NSA (National Security Agency der Vereinigten Staaten) und der SELinux-Community.

SELinux bietet ein flexibles Mandatory Access Control (MAC)-System und ist in den Linux-Kernel eingebettet. SELinux definiert die Zugriffs- und Änderungsberechtigungen für jeden Benutzer, Prozess, jede Anwendung und jede Datei im System und verwendet dann eine Sicherheitsrichtlinie, um die Interaktionen zwischen diesen Entitäten (Benutzer, Prozesse, Anwendungen und Dateien) zu steuern. Die Sicherheitsrichtlinie gibt an, wie streng oder locker geprüft werden soll.

SELinux ist für Systembenutzer transparent und nur der Systemadministrator muss darüber nachdenken, wie er strenge Richtlinien auf seinem Server formuliert. Richtlinien können je nach Bedarf so streng oder nachsichtig sein.

Das Subjekt kann nur dann auf das Objekt zugreifen, wenn sowohl [Standard Linux Access Control] als auch [SELinux Access Control] erfüllt sind.

1.1 Der Hauptunterschied zwischen DAC und MAC (Root-Benutzer)

Security Enhanced Linux (SELinux) wurde ursprünglich von der NSA (National Security Agency) eingeführt und dem Linux-System als Satz von Kernkomponenten und Benutzertools hinzugefügt, die es ermöglichen, Anwendungen mit den erforderlichen Mindestberechtigungen auszuführen. Unmodifizierte Linux-Systeme nutzen eine beliebige Zugriffskontrolle, bei der Benutzer selbst höhere Berechtigungen anfordern können. So kann Malware auf fast jede gewünschte Datei zugreifen und wenn Sie ihr Root-Berechtigungen erteilen, kann sie alles tun.

In SELinux gibt es kein Root-Konzept. Sicherheitsrichtlinien werden von Administratoren definiert und können durch keine Software ersetzt werden. Der Schaden, den mögliche Schadsoftware anrichten kann, lässt sich somit gering halten. Generell gilt, dass nur Unternehmensbenutzer, die großen Wert auf Datensicherheit legen, SELinux verwenden.

Es gibt zwei Arten der Zugriffskontrolle in Betriebssystemen: Discretionary Access Control (DAC) und Mandatory Access Control (MAC). Die Standardsicherheit von Linux ist ein DAC, SELinux fügt Linux einen flexiblen und konfigurierbaren MAC hinzu.

Alle DAC-Mechanismen haben eine gemeinsame Schwäche: Sie erkennen den grundlegendsten Unterschied zwischen natürlichen Personen und Computerprogrammen nicht. Einfach ausgedrückt: Wenn ein Benutzer Zugriffsrechte hat, bedeutet das, dass auch das Programm Zugriffsrechte hat. Wenn das Programm Zugriffsrechte hat, dann hat auch das Schadprogramm dieselben Zugriffsrechte. Die grundlegende Schwäche von DAC besteht darin, dass das Subjekt anfällig für eine Vielzahl von Malware-Angriffen ist. MAC ist die Möglichkeit, diese Angriffe zu vermeiden. Die meisten MAC-Funktionen bilden ein mehrschichtiges Sicherheitsmodell.

SELinux implementiert eine flexiblere MAC-Form namens Type Enforcement und eine nicht obligatorische mehrstufige Sicherheitsform.

In Android 4.2 ist SELinux eine optionale Funktion und Google hat Root-Berechtigungen oder andere Funktionen nicht direkt abgebrochen. Diese Option ist für Benutzer auf Unternehmensebene oder Benutzer vorgesehen, die großen Wert auf den Schutz vertraulicher Daten legen. Normale Verbraucher können sie vollständig deaktivieren.

2. SELinux-Betriebsmechanismus

Der SELinux-Entscheidungsprozess wird in der folgenden Abbildung dargestellt:

Wenn ein Subjekt (z. B. eine Anwendung) versucht, auf ein Objekt (z. B. eine Datei) zuzugreifen, überprüft der Richtliniendurchsetzungsserver im Kernel den AVC (Access Vector Cache), in dem die Berechtigungen des Subjekts und des Objekts zwischengespeichert sind. Kann aufgrund der Daten im AVC keine Entscheidung getroffen werden, erfolgt eine Anfrage an den Sicherheitsserver, welcher in einer Matrix die Sicherheitsumgebung der „Anwendung+Datei“ nachschlägt. Der Zugriff wird dann basierend auf den Abfrageergebnissen zugelassen oder verweigert. Die Details der Ablehnungsnachricht befinden sich unter /var/log/messages.

3. SELinux-Pseudodateisystem

/selinux/ Pseudodateisystem - Häufig verwendete Befehle des Kernel-Subsystems. Es ähnelt dem /proc/ Pseudodateisystem. Eine Bedienung dieses Teils durch Systemadministratoren und Benutzer ist nicht erforderlich. Ein Beispiel für das Verzeichnis /selinux/ sieht wie folgt aus:

-rw-rw-rw- 1 root root 0 22. September 13:14 Zugriff 
dr-xr-xr-x 1 root root 0 22. September 13:14 Boolesche Werte 
--w------ 1 root root 0 22. September 13:14 commit_pending_bools 
-rw-rw-rw- 1 root root 0 22. September 13:14 Kontext 
-rw-rw-rw- 1 root root 0 22. September 13:14 erstellen 
--w------ 1 root root 0 Sep 22 13:14 deaktivieren 
-rw-r--r-- 1 root root 0 Sep 22 13:14 erzwingen 
-rw------ 1 root root 0 Sep 22 13:14 laden 
-r--r--r-- 1 Wurzel Wurzel 0 22. September 13:14 mls 
-r--r--r-- 1 root root 0 22. September 13:14 policyvers 
-rw-rw-rw- 1 root root 0 22. September 13:14 umbenennen 
-rw-rw-rw- 1 root root 0 22. September 13:14 Benutzer

Beispielsweise kann der Wert von cat enforce wie folgt lauten:

1: Durchsetzungsmodus

0: permissiver Modus

4. SELinux-Konfigurationsdatei

SELinux-Konfigurationsdateien oder Richtliniendateien befinden sich im Verzeichnis /etc/.

4.1 /etc/sysconfig/selinux-Konfigurationsdatei

/etc/sysconfig/selinux ist ein symbolischer Link, die eigentliche Konfigurationsdatei ist: /etc/selinux/config

Es gibt zwei Möglichkeiten, SELinux zu konfigurieren:

1) Verwenden Sie das Konfigurationstool: Security Level Configuration Tool (system-config-selinux)

2) Bearbeiten Sie die Konfigurationsdatei (/etc/sysconfig/selinux).
/etc/sysconfig/selinux enthält die folgenden Konfigurationsoptionen:

1) Aktivieren oder deaktivieren Sie SELinux

2) Legen Sie fest, welche Richtlinie das System ausführt

3) Legen Sie fest, wie das System die Richtlinie ausführt

4.2 Konfigurationsdateioptionen

4.2.1 SELINUX

SELINUX=enforcing|permissive|disabled — definiert den erweiterten Status von SELinux

  • Erzwingen – Die SELinux-Sicherheitsrichtlinie wird erzwungen.
  • permissiv – Das SELinux-System druckt Warnungen, setzt die Richtlinien jedoch nicht durch.
  • deaktiviert — SELinux ist vollständig deaktiviert. SELinux-Hooks sind vom Kernel getrennt und das Pseudodateisystem ist nicht registriert.

4.2.2 SELINUXTYPE (Sicherheitsrichtlinie)

SELINUXTYPE=targeted|strict — gibt an, welche SELinux-Richtlinie durchgesetzt werden soll

gezielt – Nur die gezielten Netzwerk-Daemons sind geschützt. Ob jeder Daemon die Richtlinie ausführt, kann über system-config-selinux konfiguriert werden. Schützen Sie allgemeine Netzwerkdienste. Dies ist der Standardwert für SELinux.

Sie können die folgenden Tools verwenden, um den Booleschen Wert jedes Daemons festzulegen:

1) getsebool -a: Listet alle SELinux Booleschen Werte auf

2) setsebool: Legen Sie den Booleschen Wert für SELinux fest, z. B.: setsebool -P dhcpd_disable_trans=0, -P bedeutet, dass er auch nach einem Neustart weiterhin gültig ist.

  • strict – Erzwingt vollständigen Schutz von SELinux. Definiert den Sicherheitskontext für alle Subjekte und Objekte. Jede Aktion wird vom Richtlinienausführungsserver verarbeitet. Bietet Richtlinien, die der rollenbasierten Zugriffskontrolle (RBAC) entsprechen und über umfassende Schutzfunktionen zum Schutz von Netzwerkdiensten, allgemeinen Befehlen und Anwendungen verfügen.

4.2.3 SETLOCALDEFS

SETLOCALDEFS=0|1 — Steuert, wie lokale Definitionen festgelegt werden (Benutzer und Boolesche Werte).

  • 1: Diese Definitionen werden durch load_policy gesteuert, das aus der Datei /etc/selinux/<policyname> stammt.
  • 0: gesteuert durch semanage

4.3 /etc/selinux/ Verzeichnis

/etc/selinux/ ist das Verzeichnis, in dem alle Richtliniendateien und wichtigsten Konfigurationsdateien gespeichert sind. Ein Beispiel dafür ist wie folgt:

-rw-r--r-- 1 root root 448 22. September 17:34 Konfiguration 
drwxr-xr-x 5 root root 4096 22. September 17:27 streng 
drwxr-xr-x 5 root root 4096 Sep 22 17:28 gezielt

5. SELinux-Tools

1) /usr/sbin/setenforce — Ändert den SELinux-Betriebsmodus, das Beispiel sieht wie folgt aus:

  • setenforce 1 – SELinux läuft im Durchsetzungsmodus
  • setenforce 0 – SELinux läuft im Warnmodus (permissiv).

Um SELinux zu deaktivieren, können Sie die Konfigurationsdatei ändern: /etc/selinux/config oder /etc/sysconfig/selinux

2) /usr/sbin/sestatus -v — Zeigt den detaillierten Systemstatus an, wie unten dargestellt:

SELinux-Status: aktiviert 
SELinuxfs-Einbindung: /selinux 
Aktueller Modus: Erzwingen 
Modus aus Konfigurationsdatei: Erzwingen 
Richtlinienversion: 21 
Richtlinie aus Konfigurationsdatei: gezielt 
Prozesskontexte: 
Aktueller Kontext: user_u:system_r:unconfined_t:s0 
Init-Kontext: system_u:system_r:init_t:s0 
/sbin/mingetty system_u:system_r:getty_t:s0

3) /usr/bin/newrole — führt eine neue Shell in einem neuen Kontext oder einer neuen Rolle aus

4) /sbin/restorecon — Legt die Sicherheitsumgebung für eine oder mehrere Dateien fest, indem die entsprechenden Dateien oder Sicherheitsumgebungen mit erweiterten Attributen markiert werden.

5) /sbin/fixfiles — Überprüfen oder korrigieren Sie die Sicherheitsumgebungsdatenbank im Dateisystem

6) getsebool — getsebool -a: Alle Booleschen Werte anzeigen

7) setsebool — Parameter -P, permanente Einstellung

8) chcon ändert den Sicherheitskontext von Dateien und Verzeichnissen

chcon –u [Benutzer]
chcon –r [Rolle]
chcon –t [Typ]
chcon –R rekursiv

6. Typ-Durchsetzungssicherheitskontext

Der Sicherheitskontext ist ein einfaches, konsistentes Zugriffskontrollattribut. In SELinux ist der Typbezeichner die Hauptkomponente des Sicherheitskontexts. Aus historischen Gründen wird der Typ eines Prozesses häufig als Domäne bezeichnet. „Domäne“ und „Domänentyp“ haben dieselbe Bedeutung. Wir müssen nicht streng unterscheiden oder die Verwendung des Begriffs Domäne vermeiden. Normalerweise denken wir, dass [Domäne], [Domänentyp], [Betrefftyp] und [Prozesstyp] synonym sind, d. h. sie sind alle „TYP“ im Sicherheitskontext.

SELinux ändert viele Befehle im System, indem es eine Option -Z hinzufügt, um den Sicherheitskontext von Objekten und Subjekten anzuzeigen.

1) Das System legt den Sicherheitskontext für das vom angemeldeten Benutzer ausgeführte Programm basierend auf dem Modul pam_selinux.so im PAM-Subsystem fest.
2) Die Sicherheitskontextregeln für die Datei lauten wie folgt:

  • Wenn das RPM-Paket installiert ist, wird der Sicherheitskontext entsprechend den Datensätzen im RPM-Paket generiert.
  • Manuell erstellte Dateien: Der Sicherheitskontext wird gemäß der Richtlinie festgelegt.
  • cp: wird den Sicherheitskontext neu generieren;
  • mv: Der Sicherheitskontext bleibt unverändert.

3) Ich würde -Z

Zeigt den Sicherheitskontext Ihrer Shell;

4) ps -Z

Überprüfen Sie den Sicherheitskontext des Prozesses.

5) ls -Z

Überprüfen Sie den Sicherheitskontext von Dateien und Verzeichnissen.

6.1 Sicherheitskontextformat

Alle Zugriffskontrollen des Betriebssystems basieren auf bestimmten Zugriffskontrollattributen für die zugehörigen Objekte und Themen. In SELinux werden Zugriffskontrollattribute als Sicherheitskontexte bezeichnet. Allen Objekten (Dateien, Interprozess-Kommunikationskanälen, Sockets, Netzwerkhosts usw.) und Subjekten (Prozessen) sind Sicherheitskontexte zugeordnet. Ein Sicherheitskontext besteht aus drei Teilen: Benutzer, Rolle und Typkennung. Der Sicherheitskontext wird normalerweise im folgenden Format angegeben oder angezeigt:

USER:ROLE:TYPE[LEVEL[:CATEGORY]]

Die Benutzer- und Rollenkennungen im Sicherheitskontext haben nur geringe Auswirkungen auf die typgesteuerte Zugriffskontrollrichtlinie, abgesehen von einer kleinen Einschränkung bei der Durchsetzung. Für Prozesse sind Benutzer- und Rollenkennungen aussagekräftiger, da sie zur Steuerung der Vereinigung von Typ- und Benutzerkennungen verwendet werden, die mit Linux-Benutzerkonten verknüpft sind. Für Objekte werden Benutzer- und Rollenkennungen jedoch selten verwendet. Bei der standardisierten Verwaltung ist die Rolle eines Objekts häufig object_r, und der Benutzer eines Objekts ist häufig die Benutzerkennung des Prozesses, der das Objekt erstellt hat. Sie haben nur geringe Auswirkungen auf die Zugriffskontrolle.

Der Unterschied zwischen Benutzer-IDs in der Standard-Linux-Sicherheit und Benutzerkennungen in Sicherheitskontexten besteht darin, dass es sich technisch gesehen um orthogonale Kennungen handelt, die für standardmäßige bzw. sicherheitserweiterte Zugriffskontrollmechanismen verwendet werden, und dass jede Korrelation zwischen beiden streng durch den Anmeldevorgang vorgegeben und nicht direkt durch die SELinux-Richtlinie erzwungen wird.

6.1.1 BENUTZER
1) Benutzeridentität: Ähnlich wie die UID im Linux-System ermöglicht sie die Identitätsidentifizierung und wird zum Aufzeichnen der Identität verwendet; sie ist Teil des Sicherheitskontexts;
2) Drei gängige Benutzertypen:

  • user_u: die Standardeinstellung für normale Benutzer nach der Anmeldung am System;
  • system_u: Die Standardeinstellung von Systemprozessen beim Booten;
  • root: Standard nach Root-Anmeldung;

3) Benutzer sind bei gezielten Maßnahmen nicht sehr wichtig;
4) Bei strengen Richtlinien ist es wichtiger, dass alle Standard-SELinux-Benutzer mit „_u“ enden, außer root.

6.1.2 ROLLE

1) Die Rolle von Dateien, Verzeichnissen und Geräten: normalerweise object_r;
2) Die Rolle des Programms: normalerweise system_r;
3) Benutzerrolle: Die gezielte Richtlinie lautet system_r; die strikte Richtlinie lautet sysadm_r, staff_r, user_r; die Benutzerrolle ähnelt der GID im System, unterschiedliche Rollen haben unterschiedliche Berechtigungen; ein Benutzer kann mehrere Rollen haben, aber nur eine Rolle kann gleichzeitig verwendet werden;

4) Verwenden Sie strenge und MLS-Richtlinien basierend auf RBAC (Roles Based Access Control), um Rolleninformationen zu speichern

6.1.3 TYP

1) Typ: Wird verwendet, um Subjekte und Objekte in verschiedene Gruppen zu unterteilen, für jedes Subjekt und Objekt im System einen Typ zu definieren und für den Prozessbetrieb eine Umgebung mit den geringsten Berechtigungen bereitzustellen.
2) Wenn ein Typ einem ausgeführten Prozess zugeordnet ist, wird sein Typ auch als Domäne bezeichnet.
3) Typ ist der wichtigste Teil des SELinux-Sicherheitskontexts und das Herzstück der SELinux-Typdurchsetzung. Der Standardwert endet mit _t.

LEVEL und CATEGORY: Definieren Sie Level und Kategorien, nur in der MLS-Strategie verwendet

  • LEVEL: stellt die Sicherheitsstufe dar. Die derzeit definierten Sicherheitsstufen sind s0-s15, mit aufsteigenden Stufen.
  • KATEGORIE: stellt die Kategorie dar. Die aktuell definierten Kategorien sind c0-c1023

6.2 Vergleich der Zugriffskontrollattribute von SELinux und Standard-Linux

Unter Standard-Linux sind die Zugriffskontrollattribute eines Subjekts die tatsächlichen und effektiven Benutzer- und Gruppen-IDs, die dem Prozess über die Prozessstruktur im Kernel zugeordnet sind. Diese Attribute werden vom Kernel mithilfe einer Reihe von Tools geschützt, darunter Anmeldeprozesse und Setuid-Programme. Bei Objekten (z. B. Dateien) enthält der Inode der Datei eine Reihe von Zugriffsmodusbits sowie die Benutzer- und Gruppen-IDs der Datei. Die bisherige Zugriffskontrolle basierte auf den drei Steuerbits Lesen/Schreiben/Ausführen, wobei ein Satz für den Dateieigentümer, ein Satz für die Gruppe, zu der der Dateieigentümer gehört, und ein Satz für andere galt.

In SELinux liegen Zugriffskontrollattribute immer in Form eines Sicherheitskontext-Tripels (Benutzer:Rolle:Typ) vor, und alle Objekte und Subjekte haben einen zugehörigen Sicherheitskontext. Es ist wichtig zu beachten, dass die Typkennung im Sicherheitskontext die Zugriffsrechte bestimmt, da die primäre Zugriffskontrollfunktion von SELinux die Typdurchsetzung ist.

Hinweis: SELinux fügt Standard-Linux eine Typdurchsetzung (TE) hinzu, was bedeutet, dass sowohl die Standard-Linux- als auch die SELinux-Zugriffskontrolle erfüllt sein müssen, um überhaupt auf ein Objekt zugreifen zu können. Wenn wir beispielsweise SELinux-Schreibberechtigung für eine Datei haben, aber nicht die w-Berechtigung für diese Datei, können wir nicht in diese Datei schreiben. Die folgende Tabelle fasst den Vergleich der Zugriffskontrollattribute zwischen Standard-Linux und SELinux zusammen:

Standard-Linux
SELInux

Prozesssicherheitsattribute echte und effektive Benutzer- und Gruppen-ID
Sicherheitskontext

Objektsicherheitsattribute: Zugriffsmodus, Dateibenutzer und Gruppen-ID
Sicherheitskontext

Zugriffskontrolle basierend auf Prozessbenutzer-/Gruppen-ID und Dateizugriffsmodi,
Dieser Zugriffsmodus basiert auf der Benutzer-/Gruppen-ID der Datei
Erlaubte Berechtigungen zwischen Prozesstypen und Dateitypen

6.3 Zusammenfassung

1) Jeder Datei, jedem Verzeichnis, jedem Netzwerkport usw. im System wird ein Sicherheitskontext zugewiesen, und die Richtlinie gibt die Regeln für die Interaktion zwischen den Sicherheitskontexten vor.
2) SELinux bestimmt basierend auf Richtlinien und Sicherheitskontextregeln, ob das Zugriffsverhalten ausführbar ist.
3) Betreff: Systemprozess, wie z. B. /usr/sbin/httpd;
4) Objekt: Das Element, auf das zugegriffen wird, z. B. Datei, Verzeichnis, IP, Socket usw.

7. Type Enforcement (TE)-Zugriffskontrolle

In SELinux muss jeder Zugriff explizit autorisiert werden, und SELinux erlaubt standardmäßig keinen Zugriff, unabhängig von der Linux-Benutzer-/Gruppen-ID. Das bedeutet, dass es in SELinux keinen Standard-Superuser gibt. Anders als beim Root in Standard-Linux werden Zugriffsrechte mithilfe von Allow-Regeln vergeben, indem der Subjekttyp (also die Domäne) und der Objekttyp angegeben werden. Die Allow-Regel besteht aus vier Teilen:

  • Quelltyp(en) ist in der Regel der Domänentyp des Prozesses, auf den zugegriffen werden soll
  • Zieltyp(en) Der Typ des Objekts, auf das der Prozess zugreift
  • Objektklasse(n) gibt den Objekttyp an, auf den zugegriffen werden darf
  • Berechtigung(en) gibt den Zugriffstyp an, den der Zieltyp dem Quelltyp für den Zugriff auf den Objekttyp gestattet.

Hier sind einige Beispiele:

erlauben user_t bin_t: Datei {lesen ausführen getattr};

Dieses Beispiel zeigt die grundlegende Syntax einer TE-Zulassungsregel, die zwei Typkennungen enthält: den Quelltyp (oder Subjekttyp oder Domäne) user_t und den Zieltyp (oder Objekttyp) bin_t. Die Kennung „file“ ist der Name der in der Richtlinie definierten Objektklasse (in diesem Fall eine normale Datei). Die in geschweiften Klammern eingeschlossenen Berechtigungen sind eine Teilmenge der gültigen Berechtigungen für die Dateiobjektklasse. Diese Regel wird wie folgt interpretiert:

Ein Prozess mit dem Domänentyp user_t kann Dateiobjekte mit dem Typ bin_t lesen/ausführen oder Attribute davon abrufen.

SELinux-Zulassungsregeln wie im vorherigen Beispiel erteilen tatsächlich Zugriffsrechte in SELinux. Die eigentliche Herausforderung besteht darin, sicherzustellen, dass Zehntausende von Zugriffen korrekt autorisiert werden und nur die erforderlichen Berechtigungen erteilt werden, um die größtmögliche Sicherheit zu erreichen.

7.1 Setuid-Programme in der Standard-Linux-Sicherheit

Der versierte Benutzer Joe möchte ein bestehendes Passwort sicher ändern. Linux löst dieses Problem, indem es passwd einen Setuid-Wert gibt, der es mit Root-Rechten ausführbar macht. Wenn Sie die Passwortdatei auf einem normalen Linux-System auflisten, sehen Sie:

# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 41292 7. September 2012 /usr/bin/passwd

Beachten Sie hier zwei Dinge. Erstens ist die Position x in den Eigentümerberechtigungen auf s gesetzt. Dies ist das sogenannte Setuid-Bit, das bedeutet, dass bei jedem Prozess, der diese Datei ausführt, die effektive UID (Benutzer-ID) auf die des Dateieigentümers geändert wird. Hier ist root der Eigentümer der Datei. Wenn das Kennwortprogramm ausgeführt wird, wird es daher tatsächlich mit der Root-Benutzer-ID ausgeführt. Der Ausführungsvorgang ist in der folgenden Abbildung dargestellt:

Aus der obigen Analyse können wir ersehen, dass passwd mit Root-Rechten ausgeführt wird. Es kann auf alle Ressourcen des Systems zugreifen, was Sicherheitsprobleme für das System mit sich bringt. Tatsächlich muss es nur auf Shadow und die zugehörigen Dateien zugreifen. Und Shadow muss nur den Zugriff von Passwd akzeptieren. Dies ist im Standard-Linux nicht möglich, aber TE (Type Enforcement) kann diese Funktion erreichen.

8. Rollenbasierte Zugriffskontrolle

SELinux bietet auch eine rollenbasierte Zugriffskontrolle (RBAC). Die RBAC-Funktion von SELinux basiert auf der Typdurchsetzung. Die Zugriffskontrolle in SELinux wird hauptsächlich über Typen implementiert. Rollen beschränken die Typen, in die ein Prozess basierend auf der Rollenkennung im Prozesssicherheitskontext umgewandelt werden kann. Auf diese Weise kann ein Richtlinienautor eine Rolle erstellen, die eine Umwandlung in eine Reihe von Domänentypen ermöglicht (vorausgesetzt, die Typdurchsetzungsregeln erlauben die Umwandlung) und so die Einschränkungen der Rolle definieren.

9. Mehrstufige Sicherheit in SELinux

Die Typdurchsetzung ist zweifellos der wichtigste MAC-Mechanismus (Mandatory Access Control), der von SELinux eingeführt wurde. In einigen Fällen, hauptsächlich bei einer Untergruppe von Anwendungen zur Vertraulichkeitskontrolle, ist der traditionelle MLS-MAC (Multi-Level Security) jedoch wertvoller, wenn er in Verbindung mit der Typdurchsetzung verwendet wird. In diesen Fällen enthält SELinux immer eine Form von MLS-Funktionalität. Die MLS-Funktion ist optional. Von den beiden MAC-Mechanismen in SELinux ist sie normalerweise nicht der wichtigste. Für die meisten sicheren Anwendungen, darunter viele Anwendungen mit nicht vertraulichen Daten, ist die Typdurchsetzung der am besten geeignete Mechanismus zur Verbesserung der Sicherheit. Trotzdem verbessert MLS die Sicherheit für einige Anwendungen.

In den meisten SELinux-Richtlinien werden für Sensitivitäten (s0, s1, …) und Kategorien (c0, c1, …) Platzhalternamen verwendet, sodass die Angabe aussagekräftiger Benutzernamen den Programmen und Bibliotheken im Userspace überlassen bleibt. (Beispielsweise könnte s0 mit UNCLASSIFIED und s1 mit SECRET verknüpft sein.)
Zur Unterstützung von MLS wird der Sicherheitskontext um folgende Sicherheitsstufen erweitert:

Benutzer:Rolle:Typ:Empfindlichkeit[:Kategorie,...] [-Empfindlichkeit[:Kategorie,...]]

Das folgende Beispiel zeigt ein Beispiel:

root@luohj-virtuelle-Maschine:~# ps -aZ 
LABEL PID TTY ZEIT CMD 
unconfined_u:system_r:insmod_t:s0-s0:c0.c255 4940 pts/0 00:00:00 passwd

Beachten Sie, dass ein MLS-Sicherheitskontext mindestens eine Sicherheitsstufe haben muss (die aus einer einzigen Sensibilität und null oder mehr Kategorien besteht), aber zwei Sicherheitsstufen umfassen kann, die als Niedrig (oder Prozesstrend) und Hoch (oder Prozesslücke) bezeichnet werden. Wenn die Sicherheitsstufe „Hoch“ fehlt, wird sie als dasselbe wie die Sicherheitsstufe „Niedrig“ betrachtet (der häufigste Fall). In der Praxis sind die Sicherheitsstufen „Niedrig“ und „Hoch“ für Objekte und Prozesse normalerweise gleich. Der für Prozesse üblicherweise verwendete Stufenbereich wird als vertrauenswürdiges Subjekt (d. h. Informationen zur Herabstufung der Prozessvertrauenswürdigkeit) oder als mehrschichtiges Objekt, z. B. ein Verzeichnis, betrachtet, das Objekte unterschiedlicher Sicherheitsstufen enthält. Um die Beschreibung einfach zu halten, wird davon ausgegangen, dass alle Prozesse und Objekte nur eine Sicherheitsstufe haben.

10. Strategieanalyse-Tool apol

Das Tool apol (Analyze Policy) ist ein ausgereiftes SELinux-Richtlinienanalysetool, das sich im Setools-Toolkit befindet. Öffnen Sie damit die Datei policy.xx, um alle relevanten Richtlinien zu analysieren. xx ist die Versionsnummer des Richtliniencompilers (checkpolicy).

11. Zusammenfassung

Die SELinux-Zugriffskontrolle basiert auf dem Sicherheitskontext, der allen Systemressourcen (einschließlich Prozessen) zugeordnet ist. Der Sicherheitskontext besteht aus drei Komponenten: Benutzer, Rolle und Typkennung. Typkennungen sind die primäre Grundlage der Zugriffskontrolle.

In SELinux ist die Typdurchsetzung das Hauptmerkmal der Zugriffskontrolle. Dabei handelt es sich um die Zugriffsautorisierung zwischen Subjekt (d. h. Prozess) und Objekt durch die Angabe von Zulassungsregeln (der Typ des Subjekts [auch Domänentyp genannt] ist die Quelle und der Typ des Objekts ist das Ziel). Der Zugriff wird auf bestimmte Objektkategorien gewährt und für jede Objektkategorie werden feinkörnige Berechtigungen festgelegt.

Ein wesentlicher Vorteil der Typdurchsetzung besteht darin, dass sie steuert, welche Programme in einem bestimmten Domänentyp ausgeführt werden dürfen. Daher ermöglicht sie die Zugriffskontrolle für einzelne Programme (was viel sicherer ist als Sicherheitskontrollen auf Benutzerebene). Wenn ein Programm in eine andere Domäne wechseln kann (d. h. als bestimmter Prozesstyp ausgeführt werden kann), wird dies als Domänenübergang bezeichnet, der streng durch die Zulassungsregeln von SELinux kontrolliert wird. SELinux ermöglicht auch automatische Domänenübergänge durch die Datei type_transition.

SELinux verwendet Rollenkennungen im Sicherheitskontext der Zugriffskontrolle nicht direkt. Stattdessen erfolgt der gesamte Zugriff typbasiert und Rollen werden verwendet, um zulässige Domänentypen zuzuordnen. Dadurch können typerzwungene zulässige Funktionen gruppiert und Benutzer als Rolle authentifiziert werden.

SELinux bietet einen optionalen MLS-Zugriffskontrollmechanismus, der weitere Zugriffsbeschränkungen bietet. Die MLS-Funktion basiert auf dem TE-Mechanismus. MLS erweitert den Inhalt des Sicherheitskontexts um eine aktuelle (oder niedrige) Sicherheitsstufe und eine optionale hohe Sicherheitsstufe.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Erste Schritte mit SELinux
  • Detaillierte Erläuterung des Selinux-Grundkonfigurationstutorials unter Linux
  • Beschreiben Sie kurz SELinux TE in Android
  • Detaillierte Erklärung der Android Selinux-Berechtigungen und -Probleme
  • Detaillierte Erläuterung des Problems, dass SELinux den Start von MongoDB unter dem CentOS 7-System verhindert
  • SELinux führt dazu, dass PHP sich nicht normal mit MySQL verbindet. Lösung für „Verbindung zum MySQL-Server nicht möglich“
  • So deaktivieren Sie Selinux (Firewall)
  • So verstehen Sie SELinux unter Linux

<<:  Implementieren Sie den Vollbildmodus und verlassen Sie den Vollbildmodus des Monitors in Vue

>>:  Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.17

Artikel empfehlen

Verwenden Sie zum Senden des Formulars ein Bild statt einer Schaltfläche.

Code kopieren Der Code lautet wie folgt: <form...

Einführung und Verwendung des Javascript-Generators

Was ist ein Generator? Ein Generator ist ein Code...

So erstellen Sie eine Ansicht für mehrere Tabellen in MySQL

Erstellen Sie in MySQL eine Ansicht für zwei oder...

Eintauchen in die JS-Vererbung

Inhaltsverzeichnis Vorwort Vorbereiten Zusammenfa...

Detaillierte Erläuterung der Mybatis-Sonderzeichenverarbeitung

Vorwort: Mybatis-Sonderzeichenverarbeitung, Verar...

Zusammenfassung von 10 erstaunlichen Tricks von Element-UI

Inhaltsverzeichnis el-scrollbar Bildlaufleiste el...

js, um den Effekt eines Lichtschalters zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...

So verwenden Sie & und nohup im Hintergrund von Linux

Wenn wir in einem Terminal oder einer Konsole arb...

Vier Kategorien von CSS-Selektoren: Basis, Kombination, Attribut, Pseudoklasse

Was ist ein Selektor? Die Rolle des Selektors bes...