Erste Schritte mit SELinux

Erste Schritte mit SELinux

Bereits zu Kernel 2.6-Zeiten wurde ein neues Sicherheitssystem eingeführt, das einen Mechanismus für Sicherheitsrichtlinien zur Zugriffskontrolle bereitstellte. Bei diesem System handelt es sich um Security Enhanced Linux (SELinux), das von der National Security Agency (NSA) der USA bereitgestellt wurde. Es führt eine robuste Mandatory Access Control-Architektur für Linux-Kernel-Subsysteme ein.

Wenn Sie SELinux während Ihrer gesamten Linux-Karriere deaktiviert oder ignoriert haben, ist dieser Artikel das Richtige für Sie: Eine Einführung in das SELinux-System, das unter Ihrem Linux-Desktop oder -Server läuft, Berechtigungen einschränkt und sogar die Möglichkeit ausschließt, dass anfällige Programme oder Daemons Schaden anrichten.

Bevor ich beginne, sollten Sie bereits wissen, dass SELinux in erster Linie ein Tool ist, das unter Red Hat Linux und seinen abgeleiteten Distributionen verfügbar ist. In ähnlicher Weise verwenden Ubuntu und SUSE (und ihre Derivate) AppArmor. SELinux und AppArmor unterscheiden sich erheblich. Sie können SELinux auf SUSE, openSUSE, Ubuntu usw. installieren, aber es ist unglaublich schwierig, wenn Sie nicht über sehr gute Linux-Kenntnisse verfügen.

Lassen Sie mich Ihnen nun SELinux vorstellen.

DAC im Vergleich zu MAC

Der traditionelle Zugriffskontrollstandard unter Linux ist Discretionary Access Control (DAC). In dieser Form wird eine Software oder ein Daemon als Benutzer-ID (UID) oder Set Owner User ID (SUID) ausgeführt und verfügt über die Berechtigungen dieses Benutzers für Objekte (Dateien, Sockets und andere Prozesse). Dadurch kann Schadcode leicht unter bestimmten Berechtigungen ausgeführt werden und Zugriff auf kritische Subsysteme erhalten.

Andererseits erzwingt Mandatory Access Control (MAC) die Isolierung von Informationen auf der Grundlage von Vertraulichkeit und Integrität, um den Schaden zu begrenzen. Diese Eingrenzungseinheit arbeitet unabhängig von herkömmlichen Linux-Sicherheitsmechanismen und kennt kein Superuser-Konzept.

So funktioniert SELinux

Beachten Sie die mit SELinux verbundenen Konzepte:

  • Themen
  • Zielobjekte
  • Politik
  • Modus

Wenn ein Subjekt (z. B. ein Programm) versucht, auf ein Zielobjekt (z. B. eine Datei) zuzugreifen, führt der SELinux-Sicherheitsserver (im Kernel) eine Prüfung anhand der Richtliniendatenbank durch. Basierend auf dem aktuellen Modus kann der Auftraggeber auf das Ziel zugreifen, wenn der SELinux-Sicherheitsserver die Berechtigung erteilt. Wenn der SELinux-Sicherheitsserver die Berechtigung verweigert, wird eine Ablehnungsmeldung in /var/log/messages protokolliert.

Klingt relativ einfach, oder? Der eigentliche Vorgang ist komplizierter, aber um die Einführung zu vereinfachen, werden nur die wichtigen Schritte aufgeführt.

Modell

SELinux hat drei Modi (die vom Benutzer eingestellt werden können). Diese Modi bestimmen, wie SELinux auf Prinzipalanforderungen reagiert. Diese Modi sind:

  • Durchsetzung – Durchsetzung der SELinux-Richtlinie, Gewährung oder Verweigerung des Zugriffs auf ein Ziel basierend auf SELinux-Richtlinienregeln
  • Permissiv - Die SELinux-Richtlinie wird nicht durchgesetzt, der Zugriff wird nicht tatsächlich verweigert, aber die Verweigerungsinformationen werden in das Protokoll geschrieben.
  • Deaktiviert – SELinux vollständig deaktivieren

Abbildung 1: Der Befehl getenforce zeigt, dass sich SELinux im Zustand „Enforcing“ befindet.

Standardmäßig ist SELinux auf den meisten Systemen auf „Erzwingen“ eingestellt. Woher wissen Sie, in welchem ​​Modus sich Ihr System gerade befindet? Sie können dies mit einem einfachen Befehl überprüfen: getenforce. Dieser Befehl ist unglaublich einfach zu verwenden (da er nur den SELinux-Modus meldet). Um dieses Tool zu verwenden, öffnen Sie ein Terminalfenster und führen Sie den Befehl getenforce aus. Der Befehl gibt „Enforcing“, „Permissive“ oder „Disabled“ zurück (siehe Abbildung 1 oben).

Das Einstellen des SELinux-Modus ist eigentlich ganz einfach – es hängt davon ab, auf welchen Modus Sie ihn einstellen möchten. Denken Sie daran: Das Deaktivieren von SELinux wird niemals empfohlen. Warum? Wenn Sie dies tun, besteht die Möglichkeit, dass Ihre Dateien auf der Festplatte mit falschen Berechtigungen gekennzeichnet sind. Zum Korrigieren müssen Sie die Berechtigungen dann neu benennen. Und Sie können den Modus eines Systems nicht ändern, das im deaktivierten Modus gestartet wurde. Die beste Vorgehensweise ist „Erzwingen“ oder „Doping“.

Sie können den SELinux-Modus über die Befehlszeile oder über die Datei /etc/selinux/config ändern. Um den Modus über die Befehlszeile festzulegen, können Sie das Tool „setenforce“ verwenden. Um den Erzwingungsmodus festzulegen, gehen Sie wie folgt vor:

  • Öffnen Sie ein Terminalfenster
  • Führen Sie su aus und geben Sie Ihr Administratorkennwort ein
  • Führen Sie setenforce 1 aus
  • Führen Sie getenforce aus, um zu bestätigen, dass der Modus korrekt eingestellt wurde (Abbildung 2).

Abbildung 2: Einstellen des SELinux-Modus auf „Erzwingen“.

Um den Modus auf „Permissiv“ einzustellen, gehen Sie wie folgt vor:

  • Öffnen Sie ein Terminalfenster
  • Führen Sie su aus und geben Sie Ihr Administratorkennwort ein
  • Führen Sie setenforce 0 aus
  • Führen Sie getenforce aus, um zu bestätigen, dass der Modus richtig eingestellt wurde (Abbildung 3).

Abbildung 3: SELinux-Modus auf „Permissive“ einstellen.

HINWEIS: Das Festlegen des Modus über die Befehlszeile überschreibt die Einstellung in der SELinux-Konfigurationsdatei.

Wenn Sie den Modus lieber in der SELinux-Befehlsdatei festlegen möchten, öffnen Sie die Datei mit Ihrem bevorzugten Editor und suchen Sie nach dieser Zeile:

SELINUX=permissiv

Sie können den Modus nach Ihren Wünschen einstellen und die Datei speichern.

Es gibt eine dritte Möglichkeit, den SELinux-Modus zu ändern (über den Bootloader), aber ich empfehle dies neuen Benutzern nicht.

Strategietyp

Es gibt zwei Arten von SELinux-Richtlinien:

  • Gezielt — Nur gezielte Netzwerkprozesse (dhcpd, httpd, named, nscd, ntpd, portmap, snmpd, squid und syslogd) sind geschützt
  • Strict – Vollständiger SELinux-Schutz für alle Prozesse

Sie können den Richtlinientyp in der Datei /etc/selinux/config ändern. Öffnen Sie diese Datei mit Ihrem bevorzugten Editor und suchen Sie diese Zeile:

SELINUXTYPE=zielgerichtet

Ändern Sie diese Option entsprechend Ihren Anforderungen in „Gezielt“ oder „Streng“.

Überprüfen Sie den vollständigen SELinux-Status

Es gibt ein praktisches SELinux-Tool, mit dem Sie einen detaillierten Statusbericht zu Ihrem SELinux-fähigen System erhalten können. Dieser Befehl wird im Terminal wie folgt ausgeführt:

sestatus -v

Sie sollten eine Ausgabe ähnlich wie in Abbildung 4 sehen.

Abbildung 4: Ausgabe des Befehls „sestatus -v“.

Nur die Haut

Wie Sie vielleicht erwarten, habe ich nur an der Oberfläche von SELinux gekratzt. SELinux ist in der Tat ein komplexes System. Um besser zu verstehen, wie es funktioniert und wie Sie es für Ihren Desktop oder Server optimieren können, müssen Sie tiefer in die Materie einsteigen. Ich habe die Fehlerbehebung und das Erstellen benutzerdefinierter SELinux-Richtlinien noch nicht behandelt.

SELinux ist ein leistungsstarkes Tool, das alle Linux-Administratoren kennen sollten. Nachdem Sie nun eine Einführung in SELinux erhalten haben, empfehle ich Ihnen dringend, zu Linux.com zurückzukehren (da dort weitere Artikel zu diesem Thema veröffentlicht werden) oder sich für eine ausführlichere Anleitung die NSA SELinux-Dokumentation anzusehen.

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:
  • Detaillierte Erklärung des SELINUX-Arbeitsprinzips
  • 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

<<:  Analyse des MySQL-Client-Installationsprozesses auf dem Mac

>>:  Navicat-Remoteverbindung zur MySQL-Implementierungsschritteanalyse

Artikel empfehlen

Vue imitiert den Formularbeispielcode von ElementUI

Implementierungsanforderungen Das ElementUI imiti...

Detaillierte Erklärung des Linux-Netstat-Befehls

Inhaltsverzeichnis Linux-Netstat-Befehl 1. Detail...

MySQL verwendet Variablen, um verschiedene Sortierungen zu implementieren

Kerncode -- Im Folgenden werde ich die Implementi...

Detaillierte Analyse des React Diff-Prinzips

Inhaltsverzeichnis Diffing-Algorithmus Schicht-fü...

Im Mybatis MySQL-Löschvorgang kann nur die erste Datenmethode gelöscht werden

Insekten Wie in der Abbildung gezeigt, begann ich...

So stoppen Sie die CSS-Animation mittendrin und behalten die Haltung bei

Vorwort Ich bin einmal auf ein schwieriges Proble...

Detaillierte Erläuterung der ersten Erfahrungen mit Vue3.0 + TypeScript + Vite

Inhaltsverzeichnis Projekterstellung Projektstruk...

Vue realisiert die Funktion zum Hochladen von Fotos auf den PC

In diesem Artikelbeispiel wird der spezifische Co...

Transkript der Implementierung berechneter Vue-Eigenschaften

In diesem Artikel wird das Implementierungszeugni...

Vue-Direktiven v-html und v-text

Inhaltsverzeichnis 1. Anweisungen zum Rendern von...

Netzwerkkonfiguration des Host Only+NAT-Modus unter VirtualBox

Die Netzwerkkonfiguration des Host Only+NAT-Modus...

Lösen Sie das Problem des Docker-Pull-Image-Fehlers

beschreiben: Installieren Sie die VM unter Window...

Wir treiben IE6 alleine in den Untergang

Tatsächlich fragen wir uns jeden Tag, wann IE6 wi...

So erstellen Sie https mit Nginx und dem kostenlosen Tencent Cloud-Zertifikat

Ich habe gelernt, wie man https bekommt. Kürzlich...