SELinux

SELinux für Anfänger mit CentOS

SELinux für Anfänger mit CentOS
Security-Enhanced Linux oder SELinux wurde von der NSA entwickelt, um böswilligen Zugriff und Eindringlinge zu verhindern. SELinux ist definiert als das Mandatory Access Control (MAC) System, das als Ersatz für das Discretionary Access Control System (DAC) entwickelt wurde.

SELinux kann entmutigend und in den meisten modernen Systemen sehr schwer zu implementieren erscheinen. Die Konfiguration von SELinux bietet jedoch enorme Vorteile sowohl bei der Durchsetzung der Sicherheit als auch bei der Fehlerbehebung.

In diesem Tutorial werden verschiedene von SELinux implementierte Konzepte diskutiert und verschiedene praktische Methoden zur Implementierung von SELinux untersucht.

HINWEIS: Bevor wir beginnen, sollten Sie die Befehle in diesem Tutorial als Root-Benutzer oder als Benutzer innerhalb der sudoers-Gruppe verwenden.

SELinux-Pakete installieren

Lassen Sie uns verschiedene SELinux-Pakete installieren, die wiederum helfen, mit SELinux-Richtlinien zu arbeiten.

Bevor wir mit der Installation der SELinux-Pakete beginnen, sollten wir überprüfen, welche auf dem aktuellen System installiert sind.

Bei den meisten Installationen von REHL-Distributionen werden einige Pakete standardmäßig installiert. Diese Pakete beinhalten:

  1. setools - Dieses Paket wird zum Überwachen von Protokollen, Abfragen von Richtlinien und zur Verwaltung von Kontextdateien verwendet.
  2. policycoreutils-python - bietet Python-Kern-Dienstprogramme für die Verwaltung von SELinux
  3. policycoreutils - dieses Paket bietet auch Dienstprogramme für die Verwaltung von SELinux.
  4. mcstrans - mcstrans bietet einen SELinux-Übersetzungs-Daemon, der verschiedene Ebenen in einfache Formate übersetzt, die leicht verständlich sind.
  5. setools-Konsole - ähnlich wie setools.
  6. Selinux-Policy - bietet eine Referenz zum Konfigurieren der SELinux-Policy
  7. Selinux-policy-targeted - ähnlich wie SELinux-Policy
  8. Libselinux-utils - SELinux libselinux-Dienstprogramme, die bei der Verwaltung von SELinux helfen
  9. Setroubleshoot-server - Tools zur Fehlerbehebung bei SELinux

Um zu überprüfen, welche Pakete bereits auf Ihrem System installiert sind, können Sie den Befehl rpm -qa verwenden und das Ergebnis an grep für SELinux weiterleiten als:

U/min -qa | grep selinux
libselinux-utils-2.9-4.el8_3.x86_64
rpm-plugin-selinux-4.14.3-4.el8.x86_64
selinux-policy-targeted-3.14.3-54.el8_3.2.noarch
python3-libselinux-2.9-4.el8_3.x86_64
Selinux-Richtlinie-3.14.3-54.el8_3.2.noarch
libselinux-2.9-4.el8_3.x86_64

Dies sollte Ihnen eine Ausgabe aller Pakete geben, die für die SELinux-Unterstützung installiert sind

Wenn nicht alle SELinux-Pakete auf Ihrem System installiert sind, verwenden Sie yum, um sie wie im folgenden Befehl gezeigt zu installieren:

yum install policycoreutils policycoreutils-python-utils selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans

SELinux-Modi und -Zustände

Lassen Sie uns nun mit SELinux spielen, insbesondere mit den SELinux-Modi.

SELinux-Modi

Wenn aktiviert, kann SELinux drei mögliche Modi haben:

Durchsetzungsmodus

Wenn der SELinux-Modus erzwungen wird, wird sichergestellt, dass kein unbefugter Zugriff auf das System durch Benutzer oder Prozesse verweigert wird. Der Erzwingungsmodus protokolliert auch alle Versuche eines unbefugten Zugriffs.

Freizügiger Modus

Der permissive Modus verhält sich wie ein teilweise aktivierter SELinux-Zustand. In diesem Modus wird kein Zugriff verweigert, da SELinux seine Richtlinien in diesem Modus nicht durchsetzt. Der permissive Modus protokolliert jedoch alle Versuche, gegen Richtlinien zu verstoßen. Dieser Modus ist sehr effizient zum Testen, bevor er vollständig aktiviert wird, da Benutzer und Komponenten weiterhin mit dem System interagieren können, aber weiterhin Protokolle sammeln. Auf diese Weise können Sie Ihr System nach Ihren Wünschen optimieren.

Deaktivierter Modus

Der deaktivierte Modus kann auch als deaktivierter Zustand angesehen werden, in dem SELinux deaktiviert ist und keine Sicherheit bietet.

SELinux-Staaten

Sobald SELinux auf einem System installiert ist. Es kann binäre Zustände haben: aktiviert und deaktiviert. Um den Status von SELinux anzuzeigen, verwenden Sie den Befehl:

getenforce
Deaktiviert

Die obige Ausgabe zeigt an, dass SELinux derzeit deaktiviert ist.

Sie können auch den Befehl sestatus wie unten gezeigt verwenden:

sestatus
SELinux-Status: deaktiviert

Aktivieren und Deaktivieren von SELinux

Zustände und Konfiguration von SELinux werden von der Konfigurationsdatei in /etc/selinux/config . behandelt. Sie können den Befehl cat verwenden, um den Inhalt anzuzeigen.

cat /etc/selinux/config
#Diese Datei steuert den Status von SELinux auf dem System.
#SELINUX= kann einen dieser drei Werte annehmen:
#enforcing - SELinux-Sicherheitsrichtlinie wird durchgesetzt.
#permissive - SELinux gibt Warnungen aus, anstatt sie durchzusetzen.
#disabled – Keine SELinux-Richtlinie geladen policy.
SELINUX=erzwingen
#SELINUXTYPE= kann einen dieser drei Werte annehmen:
# gezielt - Gezielte Prozesse werden geschützt,
# minimum – Änderung der zielgerichteten Richtlinie. Nur ausgewählte Prozesse sind geschützt.
# mls - Mehrstufiger Sicherheitsschutz.
SELINUXTYPE=gezielt

Aus der obigen Ausgabe haben wir zwei Hauptanweisungen aktiviert. Die SELINUX-Direktive spezifiziert den Modus, in dem SELinux konfiguriert ist. Die SELINUXTYPE-Direktive gibt den SELinux-Richtliniensatz an. Standardmäßig verwendet SELinux eine gezielte Richtlinie, mit der Sie die Berechtigungen für die Zugriffssteuerung anpassen können. Die andere Richtlinie ist Multilevel Security oder MLS.

In einigen Versionen finden Sie möglicherweise Mindestrichtlinien.

cd /etc/selinux/
[ls -l
insgesamt 4
-rw-r--r-- 1 root root 548 Feb 16 22:40 config
drwxr-xr-x 1 Wurzel Wurzel 4096 Feb 16 22:43 mls
-rw-r--r-- 1 Wurzel Wurzel 2425 21. Juli 2020 semanage.conf
drwxr-xr-x 1 root root 4096 16. Feb 22:40 gezielt

Lassen Sie uns nun sehen, wie Sie SELinux auf dem System aktivieren. Wir empfehlen, zuerst den SELINUX-Modus auf permissiv und nicht erzwungen zu setzen.

nano /etc/selinux/config

Bearbeiten Sie nun die SELINUX-Direktive wie folgt:

SELINUX=freizügig

Führen Sie nach dem Speichern der Datei einen Systemneustart durch.

neustarten

HINWEIS: Wir empfehlen dringend, die SELINUX-Direktive auf permissive zu setzen, bevor Sie SELinux erzwingen.

Nachdem Sie das System neu gestartet haben, suchen Sie nach Protokollen, die von SELinux in /var/log/messages gemeldet wurden.

Stellen Sie als Nächstes sicher, dass Sie keine Fehler haben, und erzwingen Sie SELinux, indem Sie die Direktive zum Erzwingen in /etc/selinux/config festlegen

Schließlich können Sie den SELinux-Status mit dem Befehl sestatus anzeigen:

SELinux-Status: aktiviert
SELinuxfs-Mount: /sys/fs/selinux
SELinux-Stammverzeichnis: /etc/selinux
Name der geladenen Richtlinie: zielgerichtet
Aktueller Modus: Erzwingen
Modus aus Konfigurationsdatei: Fehler (Erfolg)
Richtlinien-MLS-Status: aktiviert
Richtlinie deny_unknown status: erlaubt
Speicherschutzprüfung: aktuell (sicher)
Max. Kernel-Richtlinienversion: 31

Sie können auch den Befehl setenforce verwenden, um zwischen verschiedenen SELinux-Modi zu wechseln. Um den Modus beispielsweise auf permissiv zu setzen, verwenden Sie den Befehl:

setenforce permissiv

Dieser Modus ist temporär und wird nach einem Neustart in der Konfigurationsdatei wiederhergestellt.

sestatus SELinux-Status: aktiviert
SELinuxfs-Mount: /sys/fs/selinux
SELinux-Stammverzeichnis: /etc/selinux
Name der geladenen Richtlinie: zielgerichtet
Aktueller Modus: permissiv
Modus aus Konfigurationsdatei: Erzwingen
Richtlinien-MLS-Status: aktiviert
Richtlinie deny_unknown status: erlaubt
Überprüfung des Speicherschutzes: aktuell (sicher)
Max. Kernel-Richtlinienversion: 31

SELinux-Richtlinie und Kontext

Um Verwirrung für SELinux-Anfänger zu vermeiden, werden wir nicht tief in die Implementierung von SELinux-Richtlinien eintauchen, sondern einfach darauf eingehen, um Ihnen eine Idee zu geben.

SELinux funktioniert durch die Implementierung von Sicherheitsrichtlinien. Eine SELinux-Richtlinie bezieht sich auf eine Regel, die verwendet wird, um Zugriffsrechte für jedes Objekt im System zu definieren. Objekte beziehen sich auf Benutzer, Prozesse, Dateien und Rollen.

Jeder Kontext wird in der Form des Benutzers:Rolle:Typ:Ebene . definiert.

Erstellen Sie beispielsweise ein Verzeichnis in Ihrem Home-Verzeichnis und zeigen Sie seinen SELinux-Sicherheitskontext an, wie in den folgenden Befehlen gezeigt:

mkdir ~/linuxhint_dir
ls -Z ~/ | grep linuxhint

Dies zeigt die Ausgabe wie unten gezeigt an:

unconfined_u:object_r:user_home_t:s0 linuxhint_dir

Möglicherweise finden Sie auch andere Verzeichnisse mit den Sicherheitskontexten wie:

system:_u:object_r:user_home_t:s0

Sie werden vielleicht feststellen, dass die obige Ausgabe der Syntax von user:role:type:level . folgt.

Fazit

Das war ein Anfänger-Tutorial für SELinux mit CentOS 8. Obwohl das Tutorial für Anfänger gedacht ist, ist es mehr als genug, um Ihre Füße in SELinux zum Laufen zu bringen und die einschüchternde Natur von SELinux zu beseitigen.

Danke fürs Lesen.

OpenTTD vs. Simutrans
Das Erstellen einer eigenen Transportsimulation kann Spaß machen, entspannend und äußerst verlockend sein. Deshalb sollten Sie so viele Spiele wie mög...
OpenTTD-Tutorial
OpenTTD ist eines der beliebtesten Wirtschaftssimulationsspiele auf dem Markt. In diesem Spiel musst du ein wunderbares Transportunternehmen aufbauen....
SuperTuxKart für Linux
SuperTuxKart ist ein großartiger Titel, der entwickelt wurde, um Ihnen das Mario Kart-Erlebnis kostenlos auf Ihrem Linux-System zu bieten. Es ist ziem...