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

Natives JavaScript zum Erreichen von Skinning

Der spezifische Code zur Implementierung von Skin...

Codebeispiel für das Nutzungsszenario der Nginx-Domänenweiterleitung

Szenario 1: Aufgrund von Serverbeschränkungen ist...

Beispiele für neue Selektoren in CSS3

Struktureller (Position) Pseudoklassenselektor (C...

Der beste Weg, um den 1px-Rand auf Mobilgeräten zu lösen (empfohlen)

Bei der Entwicklung für Mobilgeräte tritt häufig ...

Warum ist es langsam, wenn Limit- und Offset-Paging-Szenarien verwendet werden?

Beginnen wir mit einer Frage Als ich vor fünf Jah...

So setzen Sie das MySQL-Root-Passwort zurück

Inhaltsverzeichnis 1. Ich habe das Root-Passwort ...

SSM VUE Axios Detaillierte Erklärung

Inhaltsverzeichnis Wie wird das SQL-Protokoll ang...

Zusammenfassung verschiedener Übermittlungsmethoden für HTML-Formulare

Die gebräuchlichste, am häufigsten verwendete und ...

JS + Canvas realisiert dynamischen Uhreffekt

Eine auf Canvas basierende Demo einer dynamischen...

Node verwendet das Modul async_hooks zur Anforderungsverfolgung

Das Modul async_hooks ist eine experimentelle API...

HTML Mehrere spezielle Trennlinieneffekte

1. Grundlinien 2. Spezialeffekte (die Effekte sin...

Ein kurzer Vortrag über Responsive Design

1. Was ist Responsive Design? Responsive Design b...