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:
- setools - Dieses Paket wird zum Überwachen von Protokollen, Abfragen von Richtlinien und zur Verwaltung von Kontextdateien verwendet.
- policycoreutils-python - bietet Python-Kern-Dienstprogramme für die Verwaltung von SELinux
- policycoreutils - dieses Paket bietet auch Dienstprogramme für die Verwaltung von SELinux.
- mcstrans - mcstrans bietet einen SELinux-Übersetzungs-Daemon, der verschiedene Ebenen in einfache Formate übersetzt, die leicht verständlich sind.
- setools-Konsole - ähnlich wie setools.
- Selinux-Policy - bietet eine Referenz zum Konfigurieren der SELinux-Policy
- Selinux-policy-targeted - ähnlich wie SELinux-Policy
- Libselinux-utils - SELinux libselinux-Dienstprogramme, die bei der Verwaltung von SELinux helfen
- 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 selinuxlibselinux-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 mcstransSELinux-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:
- Strikt
- Zulässig
- Deaktiviert
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:
getenforceDeaktiviert
Die obige Ausgabe zeigt an, dass SELinux derzeit deaktiviert ist.
Sie können auch den Befehl sestatus wie unten gezeigt verwenden:
sestatusSELinux-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/configBearbeiten Sie nun die SELINUX-Direktive wie folgt:
SELINUX=freizügigFühren Sie nach dem Speichern der Datei einen Systemneustart durch.
neustartenHINWEIS: 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: aktiviertSELinuxfs-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 permissivDieser Modus ist temporär und wird nach einem Neustart in der Konfigurationsdatei wiederhergestellt.
sestatus SELinux-Status: aktiviertSELinuxfs-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_dirls -Z ~/ | grep linuxhint
Dies zeigt die Ausgabe wie unten gezeigt an:
unconfined_u:object_r:user_home_t:s0 linuxhint_dirMöglicherweise finden Sie auch andere Verzeichnisse mit den Sicherheitskontexten wie:
system:_u:object_r:user_home_t:s0Sie 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.