So installieren Sie SELinux unter Ubuntu 24.04/22.04/20.04

Security-Enhanced Linux (SELinux) ist für die Verwaltung von Zugriffskontroll-Sicherheitsrichtlinien auf Linux-Systemen unverzichtbar. SELinux wird hauptsächlich von Systemadministratoren, Entwicklern und Sicherheitsexperten verwendet und bietet robuste Sicherheit auf Kernel-Ebene. Seine Implementierung auf Ubuntu-Servern, insbesondere für die LTS-Versionen 24.04, 22.04 und 20.04, stärkt die Sicherheit dieser Systeme.

Zu den Hauptfunktionen von SELinux, die die Sicherheit von Ubuntu verbessern, gehören:

  • Obligatorische Zugriffskontrolle (MAC): Anders als herkömmliche Systeme zur bedarfsgesteuerten Zugriffskontrolle setzt SELinux strenge Richtlinienregeln durch, die Systemprozesse und Benutzer beschränken und so das Risiko eines unbefugten Zugriffs verringern.
  • Feinkörnige Kontrolle: Es bietet detaillierte Kontrolle über Systemprozesse und deren Interaktionen mit Dateien und anderen Ressourcen.
  • Erweiterte Sicherheitsrichtlinien: Maßgeschneiderte Sicherheitsrichtlinien helfen beim Schutz vor externen und internen Bedrohungen.
  • Audit und Protokollierung: Umfassende Protokollierungsfunktionen erleichtern die Überwachung und Verfolgung sicherheitsrelevanter Ereignisse und tragen so zur schnellen Identifizierung und Lösung von Problemen bei.

Die Integration von SELinux in eine Ubuntu-Serverumgebung verbessert die Systemsicherheit erheblich, insbesondere für diejenigen, die kritische Anwendungen oder vertrauliche Daten verwalten. Dieser Leitfaden konzentriert sich auf die Installation und grundlegende Verwendung von SELinux und soll einen unkomplizierten Ansatz zur Nutzung dieser Sicherheitsvorteile bieten.

AppArmor-Dienst deaktivieren

Um die Kompatibilität sicherzustellen, bestätigen Sie, ob AppArmor aktiv ist, da die gleichzeitige Ausführung von AppArmor und SELinux zu Konflikten führen kann. Bestimmen Sie den Status von AppArmor mit:

sudo systemctl status apparmor

Wenn AppArmor betriebsbereit ist, deaktivieren Sie es, um Störungen mit SELinux zu vermeiden. Führen Sie den folgenden Befehl aus, um AppArmor zu deaktivieren:

sudo systemctl disable apparmor --now

Installieren Sie SELinux über den APT-Befehl

In dieser Phase werden wichtige SELinux-Pakete installiert: policycoreutils, selinux-utils, Und selinux-basics. Diese sind für die Verwaltung von SELinux-Richtlinien und die Bereitstellung grundlegender SELinux-Unterstützung von entscheidender Bedeutung.

Starten Sie die Installation mit diesem Befehl:

sudo apt install policycoreutils selinux-utils selinux-basics

Durch die Ausführung werden die erforderlichen SELinux-Pakete auf Ihrem Ubuntu-System installiert.

SELinux aktivieren

Nachdem Sie die erforderlichen Pakete installiert haben, aktivieren Sie SELinux, um sicherzustellen, dass es beim Start geladen wird. Diese Aktivierung ist für die Aktivierung der Sicherheitsfunktionen von SELinux von entscheidender Bedeutung. Führen Sie den folgenden Befehl mit Root-Rechten aus:

sudo selinux-activate

Dieser Schritt konfiguriert Ihr System so, dass SELinux während des Startvorgangs initialisiert wird.

SELinux-Modus erzwingen

Es ist wichtig, SELinux in den Durchsetzungsmodus zu versetzen. In diesem Modus wendet SELinux seine Sicherheitsrichtlinien aktiv an und verweigert den Zugriff auf der Grundlage vordefinierter Regeln. Wechseln Sie in den Durchsetzungsmodus mit:

sudo selinux-config-enforcing

Diese Aktion ändert Ihre SELinux-Konfiguration, sodass sie im Durchsetzungsmodus ausgeführt wird.

Systemneustart zur SELinux-Aktivierung

Schließen Sie den Einrichtungsvorgang mit einem Neustart Ihres Systems ab. Dadurch wird sichergestellt, dass alle Änderungen übernommen werden und SELinux im eingestellten Modus ausgeführt wird:

sudo reboot

Nach dem Neustart läuft Ihr System mit installiertem, aktiviertem und konfiguriertem SELinux, um seine Sicherheitsrichtlinien durchzusetzen. Die folgenden Abschnitte führen Sie durch die weitere Anpassung von SELinux an Ihre Sicherheitsanforderungen.

Konfigurieren Sie SELinux

Grundlegendes zu den SELinux-Modi

SELinux funktioniert in drei verschiedenen Modi:

  • Durchsetzungsmodus: Die Standardeinstellung, bei der SELinux seine Sicherheitsrichtlinien rigoros durchsetzt und den Zugriff gemäß den festgelegten Regeln verweigert.
  • Permissiver Modus: Hier protokolliert SELinux Richtlinienverletzungen, setzt sie aber nicht aktiv durch. Dieser Modus ist zum Testen und Beheben von Richtlinien nützlich.
  • Deaktivierter Modus: In diesem Modus ist SELinux vollständig ausgeschaltet und es werden keine Richtlinien angewendet.

Bearbeiten der SELinux-Konfigurationsdatei

Um die SELinux-Einstellungen anzupassen, bearbeiten Sie die /etc/selinux/config Datei. Verwenden Sie für diese Aufgabe einen bevorzugten Texteditor wie nano:

sudo nano /etc/selinux/config

Ändern Sie in der Datei die SELINUX Zeile, um Ihren bevorzugten Modus einzustellen. So aktivieren Sie beispielsweise den Durchsetzungsmodus:

SELINUX=enforcing

Anwenden der Konfigurationsänderungen

Damit die Änderungen wirksam werden, starten Sie Ihr System neu:

sudo reboot

Anpassen zusätzlicher SELinux-Konfigurationsoptionen

SELinux bietet mehrere Anpassungsoptionen:

  • LOCALDEFS SETZEN: Bestimmt die Verwendung lokal definierter Dateikontexte. Um Standardkontexte zu verwenden, setzen Sie diesen Wert auf 0. Ändern Sie die /etc/selinux/config Datei entsprechend:
SETLOCALDEFS=0
  • SELINUXTYPE: Legt den Richtlinientyp fest. Der allgemeine Richtlinientyp „gezielt“ konzentriert sich auf den Schutz bestimmter Systemdienste. Um dies festzulegen, aktualisieren Sie die SELINUXTYPE Zeile in der Konfigurationsdatei:
SELINUXTYPE=targeted

Beispiel: Konfigurieren von SELinux für einen Webserver

Erwägen Sie die Konfiguration von SELinux, um HTTP- und HTTPS-Verkehr auf einem Ubuntu-Webserver zuzulassen. semanage Der Befehl wird zur Richtlinienverwaltung verwendet.

Installieren Sie zunächst die semanage Dienstprogramm:

sudo apt install policycoreutils-python-utils

Erlauben Sie dann HTTP-Verkehr auf Port 80:

sudo semanage port -a -t http_port_t -p tcp 80

Und HTTPS-Verkehr auf Port 443:

sudo semanage port -a -t http_port_t -p tcp 443

Diese Befehle aktualisieren die SELinux-Richtlinie und ermöglichen Ihrem Webserver, eingehende Verbindungen über die Ports 80 (HTTP) und 443 (HTTPS) zu empfangen. Dadurch wird ein sicherer Betrieb des Webdienstes gewährleistet.

Überprüfen des SELinux-Modus

Überprüfen des SELinux-Status nach dem Neustart

Nach dem Neustart Ihres Ubuntu-Systems ist es wichtig, den Betriebsstatus von SELinux zu bestätigen. Diese Überprüfung stellt sicher, dass das System die SELinux-Konfigurationseinstellungen korrekt anwendet.

Führen Sie den folgenden Befehl aus, um den aktuellen Status zu überprüfen:

sestatus

Dieser Befehl liefert umfassende Details zu SELinux, einschließlich des aktuellen Betriebsstatus, des Betriebsmodus (erzwingend, permissiv oder deaktiviert) und der verwendeten Richtlinie. Vergleichen Sie diese Ausgabe mit Ihren Einstellungen im /etc/selinux/config Datei, um zu bestätigen, dass SELinux wie vorgesehen funktioniert.

Fehlerbehebung bei allgemeinen SELinux-Problemen

Wiederherstellen von Standarddateikontexten

Falsche Dateikontexte führen häufig zu Zugriffsverweigerungen durch SELinux, was die Anwendungsfunktionalität beeinträchtigt. Um dies zu beheben, verwenden Sie den restorecon Befehl. Um beispielsweise Probleme in der /var/www/html Verzeichnis, führen Sie aus:

sudo restorecon -Rv /var/www/html

Dieser Befehl stellt rekursiv den Standardkontext für alle Dateien und Verzeichnisse innerhalb /var/www/html, mit ausführlicher Ausgabe, in der die Änderungen detailliert beschrieben werden.

Vorübergehender Wechsel in den Permissive-Modus zur Fehlerbehebung

Sie sind sich nicht sicher, ob SELinux ein bestimmtes Problem verursacht? Wechseln Sie zur Diagnose vorübergehend in den permissiven Modus. Dieser Modus protokolliert Verstöße, ohne sie durchzusetzen. Aktivieren Sie den permissiven Modus mit:

sudo setenforce 0

Testen Sie Ihre Anwendung jetzt. Wenn keine Probleme mehr auftreten, sind sie wahrscheinlich auf SELinux-Richtlinien zurückzuführen. Denken Sie daran, nach dem Testen wieder in den Durchsetzungsmodus zu wechseln:

sudo setenforce 1

Überprüfen von SELinux-Protokollen zur Problemdiagnose

SELinux-Protokolle sind für die Identifizierung von Richtlinienverstößen unerlässlich. Unter Ubuntu ist das primäre SELinux-Protokoll /var/log/audit/audit.log. Um die letzten Einträge anzuzeigen, verwenden Sie:

sudo tail /var/log/audit/audit.log

Suchen Sie in den Protokollen nach „abgelehnt“ oder „AVC“, um mögliche Verstöße zu lokalisieren.

Generieren benutzerdefinierter Richtlinienmodule mit audit2allow

Sie haben Probleme mit Richtlinien? Nutzen Sie audit2allow um Audit-Protokolle zu analysieren und ein benutzerdefiniertes Richtlinienmodul zu erstellen. Beispiel:

sudo grep 'denied' /var/log/audit/audit.log | audit2allow -M mycustommodule
sudo semodule -i mycustommodule.pp

Der erste Befehl generiert eine Richtlinie namens „mycustommodule“ aus „abgelehnten“ Einträgen im Prüfprotokoll. Der zweite installiert diese Richtlinie und behebt möglicherweise das Problem.

Verwalten von SELinux-Booleschen Werten

SELinux-Boolesche Werte steuern bestimmte Funktionen. Um alle Booleschen Werte und ihre Zustände aufzulisten, verwenden Sie:

sudo getsebool -a

Um einen Booleschen Wert zu ändern, z. B. das Aktivieren httpd_can_network_connect, ausführen:

sudo setsebool -P httpd_can_network_connect 1

Der -P Flag stellt die Persistenz auch nach Neustarts sicher.

Konfigurieren von SELinux für Webanwendungen: Zulassen von HTTP- und HTTPS-Datenverkehr

Für Webanwendungen wie WordPress ist das Öffnen der erforderlichen Netzwerkports in SELinux von entscheidender Bedeutung. Aktivieren Sie die Ports 80 (HTTP) und 443 (HTTPS) mit:

sudo semanage port -a -t http_port_t -p tcp 80
sudo semanage port -a -t http_port_t -p tcp 443

SELinux-Konfiguration für WordPress

Passen Sie die SELinux-Richtlinien für einen reibungslosen WordPress-Betrieb an:

  • Netzwerkverbindungen für HTTPD-Skripte und -Module: Aktivieren Sie dies für Plugin- und Theme-Updates:
sudo setsebool -P httpd_can_network_connect 1
  • Lese- und Schreibzugriff im WordPress-Verzeichnis: Stellen Sie sicher, dass HTTPD mit WordPress-Dateien interagieren kann:
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-content
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-config.php

Zusätzliche Fehlerbehebung bei SELinux-Konfigurationsoptionen

Passen Sie SELinux an verschiedene Softwareanforderungen an:

  • Zugriff auf benutzerdefinierte Verzeichnisse: Dateikontexte für benutzerdefinierte Webverzeichnisse ändern, z. B. /opt/myapp:
sudo chcon -R -t httpd_sys_content_t /opt/myapp
  • FTP-Zugriff für Webserver: Aktivieren Sie bei Bedarf den FTP-Zugriff:
sudo setsebool -P allow_ftpd_full_access 1
  • Webserver-E-Mail-Funktionalität: Wenn Ihre Anwendung die Möglichkeit zum Senden von E-Mails benötigt:
sudo setsebool -P httpd_can_sendmail 1

Diese Konfigurationen veranschaulichen die Flexibilität von SELinux bei der Erfüllung spezifischer Sicherheits- und Betriebsanforderungen.

Abschluss

Damit ist unsere Anleitung zur Installation von SELinux unter Ubuntu 24.04, 22.04 oder 20.04 abgeschlossen. Wir haben den Installationsprozess durchgegangen, einige grundlegende Befehle behandelt und einige wichtige Konfigurationstipps erörtert. Denken Sie daran, dass regelmäßige Updates und kontinuierliche Überwachung für die Sicherheit Ihres Systems von entscheidender Bedeutung sind. Sie können gerne mit SELinux-Richtlinien experimentieren, um sie besser an die Anforderungen Ihres Servers anzupassen, aber sichern Sie Ihre Konfigurationen immer, bevor Sie Änderungen vornehmen.

Joshua James