So sichern Sie Ihre Linux-Server mit SELinux

Se Linux Hero

SELinux kann Ihnen helfen, Ihren Server vor fehlerhaften Prozessen oder Anwendungen zu sichern. Es wurde von der NSA (National Security Agency) entwickelt, um Regierungsgeräte vor Angreifern zu schützen. Die sicherheitsverbesserte (SE) Linux-Architektur verwendet Sicherheitsprotokolle, um den Zugriff auf Systemressourcen zu beschränken. Finden Sie heraus, wie Sie es für Ihren Server nutzen können.

Inhaltsverzeichnis

  • SELinux-Architektur
  • Wie man SELinux installiert oder aktiviert
  • Wie man SELinux konfiguriert
  • SELinux-Richtlinien
  • Wie man SELinux-Fehler behandelt
  • Wie man SELinux deaktiviert
  • Häufig gestellte Fragen

Lesen Sie auch: Was ist die Rc-Shell und wie installiert man sie in Linux

SELinux-Architektur

SELinux ist ein Kernelmodul, das vom Systemadministrator aktiviert oder deaktiviert werden kann. Da der Zugriff auf Dateien und Netzwerkports gemäß einer Sicherheitsrichtlinie eingeschränkt ist, kann ein fehlerhaftes Programm oder ein falsch konfiguriertes Daemon keinen großen Einfluss auf die Systemsicherheit haben.

Wenn eine Anwendung oder ein Prozess im SELinux-System den Dateizugriff anfordert, überprüft er zunächst den Access Vector Cache (AVC). Wenn die Genehmigung zuvor im Cache gespeichert ist, wird die Datei für die angeforderte Anwendung zurückgegeben. Wenn die Genehmigung nicht im Cache gespeichert ist, wird die Anfrage an den Sicherheitsserver gesendet. Der Sicherheitsserver überprüft alle Sicherheitsrichtlinien in seiner Datenbank. Je nach Sicherheitsrichtlinie wird dann die Genehmigung erteilt oder abgelehnt.

Es gibt kein Konzept von Root oder Superuser in SELinux. Die Sicherheit einer unveränderten Linux-Distribution ohne SE Linux hängt von der Korrektheit des Kernels, aller privilegierten Anwendungen und deren Konfigurationen ab. Ein Fehler oder Bug in einem dieser Komponenten kann eine Angriffsfläche schaffen und das System kompromittieren.

Andererseits hängt ein modifiziertes Linux-System mit SELinux hauptsächlich von der Korrektheit des Kernels und der Sicherheitsrichtlinien ab.

Lesen Sie auch: Wie man den Rm-Befehl in Linux verwendet

Wie man SELinux installiert oder aktiviert

SELinux steht für Security Enhanced Linux. SELinux ist seit 2003 Teil des Linux-Kernels. Daher müssen Sie es nicht separat installieren. In den meisten Desktop-Linux-Distributionen ist es jedoch standardmäßig deaktiviert.

Se Linux 2

SELinux hat drei Hauptmodi: Durchgesetzt, Erlaubt und Deaktiviert. Lassen Sie uns diese kurz besprechen:

  1. Durchgesetzt: Dies aktiviert und schützt das Linux-System mithilfe von Sicherheitsrichtlinien.
  2. Erlaubt: Es setzt die Sicherheitsrichtlinien nicht durch, sondern protokolliert alles. Dieser Modus ist nützlich für Fehlerbehebungszwecke.
  3. Deaktiviert: Es deaktiviert SELinux. Diese Option wird nicht empfohlen, und wenn Sie SELinux in Ihrem System wieder aktivieren, kann dies zu Fehlern aufgrund von Änderungen an der Kennzeichnung führen.

Hinweis: Ubuntu wird mit AppArmor ausgeliefert, einer Alternative zu SELinux. Während SELinux auf Ubuntu verfügbar ist, ist es nicht mit AppArmor kompatibel und könnte Ihr System destabilisieren, wenn es aktiviert ist. Wenn Sie SELinux in Ubuntu wirklich verwenden müssen, stellen Sie sicher, dass Sie AppArmor deaktivieren und gründliche Tests durchführen (beginnen Sie zuerst mit dem permissiven Modus), bevor Sie es für den Produktionsgebrauch verwenden.

  1. Um SELinux in Ihrem System zu aktivieren, müssen Sie die Datei “/etc/selinux/config” bearbeiten. Öffnen Sie diese Datei in Ihrem Texteditor.
sudonano/etc/selinux/config
  1. Setzen Sie in der Konfigurationsdatei SELINUX=permissive. Drücken Sie Strg + O und drücken Sie die Eingabetaste, um die Datei zu speichern, und drücken Sie Strg + X, um den Editor zu beenden. SELinux ist jetzt in Ihrem System aktiviert.

Hinweis: Wenn Sie versuchen, SELinux direkt durchzusetzen, bevor Sie es permissiv machen, kann es Dateien und Prozesse falsch kennzeichnen und verhindern, dass Sie booten können.

  1. Um das Dateisystem automatisch neu zu kennzeichnen, erstellen Sie eine Datei namens “.autorelabel” in Ihrem Root-Dateisystem. Wenn Sie Ihr System jetzt booten, wird SELinux Ihr Dateisystem automatisch neu kennzeichnen. Um Fehler zu reduzieren, lassen Sie die Option SELINUX=permissive so wie sie ist im Konfigurationsordner. Nachdem alles neu gekennzeichnet wurde, setzen Sie SELinux auf SELINUX=enforcing in “/etc/selinux/config” und starten Sie neu.

SELinux wird erfolgreich in Ihrem System durchgesetzt.

Lesen Sie auch: So personalisieren Sie Ihre Linux-Terminal-Eingabeaufforderung mit Starship

Wie man SELinux konfiguriert

SELinux ist eine Architektur, die Systemadministratoren die Kontrolle darüber ermöglicht, was auf die Systemressourcen zugreifen kann. SELinux beschränkt den Zugriff auf das System durch die Verwendung von Sicherheitsrichtlinien. Es gibt viele Möglichkeiten, SELinux zu konfigurieren, um Ihr System zu schützen, wobei die beiden beliebtesten die “targeted policy” und die “multi-level security” (MLS) sind.

Eine targeted policy ist die standardmäßige Sicherheitsrichtlinie. Sie umfasst eine Reihe von Sicherheitsrichtlinien, wie Dateiaccess, Aufgaben, Dienste usw. Multi-Level-Sicherheit (MLS) wird hauptsächlich von Regierungsbehörden und großen Organisationen verwendet, ist sehr kompliziert einzurichten und erfordert ein dediziertes Team zur Verwaltung.

Sie können Ihren aktuellen SELinux-Modus mit dem Befehl getenforce und sestatus überprüfen.

Wenn Sie nur den SELinux-Modus in der aktuellen Sitzung ändern müssen, können Sie die folgenden beiden Befehle ausführen.

  • sudo setenforce 0: Setzt SELinux in den permissiven Modus für die aktuelle Sitzung.
  • sudo setenforce 1: Setzt SELinux in den enforcing Modus für die aktuelle Sitzung.

SELinux-Richtlinien

SELinux funktioniert als Kennzeichnungssystem. Es bringt jede Datei, jeden Port und jeden Prozess mit einem Label in Verbindung. Labels sind eine logische Möglichkeit, Dinge zusammenzufassen. Der Kernel ist dafür verantwortlich, das Label während des Bootvorgangs zu verwalten.

Se Linux 1

SELinux-Richtlinien können durch Booleans verwaltet werden. Zum Beispiel setzen wir ein Boolean für ein Daemon namens httpd. httpd ist ein Apache HTTP-Server-Daemon, den wir verwenden, um Webserver in Linux auszuführen.

Um alle Module, die spezifisch für httpd sind, aufzulisten, führen Sie den folgenden Befehl in Ihrem Terminal aus:

getsebool -a|grep httpd

Hier listet die Option -a alle Booleans auf, und wir verwenden grep, um das Boolean nur für httpd herauszufiltern. Lesen Sie diesen Artikel, um mehr über grep in Linux zu erfahren.

Die Ausgabe des obigen Befehls sieht aus wie das folgende Bild.

httpd_builtin_scripting --> on   
httpd_can_check_spam --> off   
httpd can connect ftp --> off   
httpd_can_connect_ldap --> off   
httpd_can_connect_mythty --> off   
httpd_can_connect_zabbix --> off   
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off   
httpd_can_network_memcache --> off   
httpd_can_network_relay --> off   
httpd_can_sendmail --> off   
httpd_dbus_avahi --> off   
httpd dbus sssd--> off

Aus der obigen Liste nehmen wir das httpd_can_connect_ftp Boolean und ändern dessen Wert. Zuerst lesen wir den Wert von httpd_can_connect_ftp, ob er ein oder aus ist:

getsebool httpd_can_connect_ftp

Lassen Sie uns den Wert von httpd_can_connect_ftp auf erlauben setzen.

setsebool -P httpd_can_connect_ftp 1

Hier steht 1 für allow oder on. Das -P-Tag wird verwendet, um die Änderung dauerhaft zu machen. Wenn Sie die Booleans im Zusammenhang mit httpd erneut auflisten, können wir die Änderung im Wert von httpd_can_connect_ftp auf on sehen.

httpd_builtin_scripting --> on   
httpd_can_check_spam --> off   
httpd can connect ftp --> on   
httpd_can_connect_ldap --> off   
httpd_can_connect_mythty --> off   
httpd_can_connect_zabbix --> off   
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off   
httpd_can_network_memcache --> off   
httpd_can_network_relay --> off   
httpd_can_sendmail --> off   
httpd_dbus_avahi --> off   
httpd dbus sssd--> off

Lesen Sie auch: So richten Sie WordPress mit Docker in Ubuntu ein

Wie man SELinux-Fehler behandelt

SELinux hat insgesamt 4 Arten von Fehlern:

  1. Das System ist kaputt: SELinux schützt Ihr System, indem es den Zugriff einschränkt. Manchmal ist dies jedoch nicht genug. Wenn Sie diese Fehler erhalten, könnte Ihr System kompromittiert sein. Ergreifen Sie so schnell wie möglich die notwendigen Maßnahmen.
  2. Fehler in der Richtlinie: Wenn ein Fehler in der Richtlinie vorliegt, der behoben werden muss, erscheint dieser Fehler.
  3. Die Labels sind falsch: Diese Fehlermeldung erscheint während der Anpassung von Labels durch den Benutzer oder wenn das automatische Labeling durch SELinux fehlschlägt. Es gibt viele Tools auf dem Markt, um diese Label-Fehler zu beheben.
  4. Eine Richtlinie muss behoben werden: Diese Fehler entstehen, wenn Sie Änderungen am System vornehmen und SELinux darüber nicht informieren. Sie können diesen Fehler mit Booleans oder Richtlinienmodulen beheben.

Wie man SELinux deaktiviert

Die Deaktivierung von SELinux ist für Unternehmens- und Regierungsserver sowie für öffentliche Geräte, die sehr anfällig für Angriffe sind, niemals eine gute Option. Wenn Sie SELinux in Ihrem System jedoch deaktivieren möchten, folgen Sie diesen Anweisungen.

  1. Gehen Sie zur SE Linux-Konfigurationsdatei in “/etc/selinux” und ändern Sie den SE Linux-Konfigurationsmodus von enforcing auf permissive, und starten Sie dann Ihr System neu.
  2. Ändern Sie den SELinux-Modus von permissive auf disabled.

Nach dem nächsten Neustart ist SELinux in Ihrem System deaktiviert und wird zu einer normalen Linux-Maschine.

Lesen Sie auch: So richten Sie eine Firewall in Linux ein

Häufig gestellte Fragen

Ist SELinux in Android vorhanden?

Ja, SELinux ist in Android seit Version 4.3 implementiert. Es verbessert die Sicherheit von Android, um Android-Benutzer vor Cyberangriffen zu schützen.

Ist SELinux eine Firewall?

SELinux ist keine Firewall. Die Firewall steuert den Verkehr zwischen dem Computer und dem Netzwerk. Während SELinux den Zugriff auf das Dateisystem und den Netzwerkzugriff verschiedener Programme innerhalb des Systems kontrolliert und regelt, können wir SELinux als eine interne Firewall betrachten, um das System vor seinen Programmen zu schützen.

Ist SELinux ein Betriebssystem?

SELinux ist kein Betriebssystem. Es ist ein Sicherheitsmodul des Kernels, das im Linux-Kernel existiert. Es bietet Unterstützung für Zugriffskontrollsicherheitsrichtlinien und zwingende Zugriffskontrollen (MAC). Um es ein Betriebssystem zu nennen, benötigt es mehr als nur den Kernel selbst. In den meisten der auf Linux basierenden Betriebssysteme können Sie SELinux verwenden.

Sollten Sie SELinux verwenden?

Wenn Sie ein Systemadministrator sind und das Unix-System kennen, sollten Sie SELinux verwenden, da es die Sicherheit Ihres Servers erhöht und die Angriffsfläche minimiert. Wenn Sie mit Unix-Systemen nicht sehr vertraut sind, können Sie auch AppArmor verwenden. Dies ist relativ einfacher als SELinux. Wenn Sie ein Heimbenutzer sind und Linux nur auf Ihrem Desktop-Computer verwenden, ist es nicht notwendig, SELinux zu verwenden. Es wird Ihnen nur Kopfschmerzen bereiten, es zu konfigurieren und Ihre Produktivität zu verringern.