Was kann schief gehen, wenn wir Selinux deaktivieren? [Geschlossen]

9

Wir haben eine Reihe gebrauchter Server von einem anderen Team geerbt. Einige von ihnen haben SELinux aktiviert, andere nicht. Aufgrund von SELinux haben wir Probleme beim Einrichten von ssh ohne Passwort, unseres Webservers usw. Wir haben auf dieser Stackexchange-Site eine Lösung gefunden , die ausgeführt werden soll:

restorecon -R -v ~/.ssh

Da SELinux jedoch nicht für das ausgeführt werden muss, was wir tun, ist es möglicherweise einfacher, es auszuschalten, als sich daran zu erinnern, dass alle Benutzer das oben genannte cmd für jedes Verzeichnis ausführen, für das Berechtigungen erforderlich sind.

Können wir SELinux ausschalten, ohne dass sich dies später auswirkt, oder ist es besser, den Server einfach neu abzubilden? Eine Sache zu beachten; Unsere IT-Gruppe ist sehr beschäftigt, daher steht die Neubildung eines Servers nicht ganz oben auf ihrer Liste, es sei denn, dies ist unbedingt erforderlich (Sie benötigen einen sehr guten Business Case) ... oder jemand besticht seinen Chef mit einer Flasche Scotch oder Whisky.

UPDATE: Vielen Dank für alle Vorschläge und Ratschläge. Diese Server werden alle als interne Entwicklungsserver verwendet. Es wird keinen externen Zugriff auf diese Maschinen geben, daher ist uns die Sicherheit kein großes Anliegen. Auf unseren aktuellen Servern, die wir alle verwenden (nach meinem besten Wissen), ist SELinux nicht aktiviert. Einige von denen, die mein Manager gerade erworben hat, tun dies und diese sind diejenigen, die wir deaktivieren möchten, damit alles in unserem Cluster einheitlich ist.

Klassifiziert
quelle
1
Ich habe eine ähnliche Frage auf Android.se beantwortet: Wie gefährlich ist die Tatsache, dass sich SELinux im Modus "Zulässig" befindet? Worauf sollte ich achten? . Der Hauptunterschied zwischen dem "Permissive" -Modus und dem Deaktivieren von SELinux besteht darin, dass Sie keine AVC-Protokollnachrichten mehr erhalten und dass SELinux die Dateibeschriftung nicht mehr auf dem neuesten Stand hält. Daher müssen Sie Ihre Dateien neu kennzeichnen, bevor Sie sie erneut aktivieren.
WhiteWinterWolf
"Was könnte möglicherweise falsch laufen?"
Scai
3
@scai Das ist eigentlich eine gute Frage. Wie Sato Katsura betont, ist SELinux schwer effektiv zu nutzen. Ein falsches Sicherheitsgefühl ist schädlich für die Sicherheit.
Rhymoid

Antworten:

14

SELinux ist eine Sicherheitsfunktion des Betriebssystems. Es wurde entwickelt, um einige Teile des Servers vor anderen Teilen zu schützen.

Wenn Sie beispielsweise einen Webserver ausführen und über einen "anfälligen" Code verfügen, mit dem ein Angreifer beliebige Befehle ausführen kann, kann SELinux Abhilfe schaffen, indem verhindert wird, dass Ihr Webserver auf Dateien zugreift, die nicht angezeigt werden dürfen.

Jetzt Sie können SELinux deaktivieren und es sollte nichts kaputt machen. Der Server arbeitet wie gewohnt weiter.

Sie haben jedoch eine der Sicherheitsfunktionen deaktiviert.

Stephen Harris
quelle
10
SELinux funktioniert nur dann gut, wenn es richtig konfiguriert ist. SELinux ist jedoch so kompliziert, dass niemand die Zeit und / oder das Wissen hat, um es richtig zu konfigurieren, und es wird entweder deaktiviert oder als ständiger Schmerz für den Administrator. Ihr investiert jedoch weiterhin Vertrauen in dieses Sicherheitsmerkmal .
Satō Katsura
3
Ich bin damit einverstanden, dass Selinux eine zu verwaltende PITA ist, aber es ist immer noch fair und absolut korrekt, es als Sicherheitsmerkmal zu bezeichnen. Für diejenigen , die Zeit in das Lernen und Verwalten investieren möchten oder müssen (nicht für mich), ist es von unschätzbarem Wert - z. B. Systemadministratoren für eine große, hochkarätige Website, auch bekannt als attraktives Ziel für Skriptkinder auf der ganzen Welt.
Cas
2
@SatoKatsura Nur weil es schwer zu konfigurieren oder schwer zu verstehen ist, ist es nicht gerechtfertigt, einen Sicherheitsmechanismus zu deaktivieren. Vorausgesetzt, dieser Sicherheitsmechanismus wird tatsächlich benötigt, was nicht immer leicht zu entscheiden ist.
Scai
@scai Ich habe nicht gesagt, dass es deaktiviert werden soll (oder nicht). Was ich sage ist, dass das zugrunde liegende Modell von SELinux fehlerhaft ist. Einige Leute argumentieren, dass alle Sicherheitsmechanismen, die deaktiviert werden können, fehlerhaft sind.
Satō Katsura
@SatoKatsura Ja, deshalb ist es völlig sinnlos, Passwörter zu haben, da sie deaktiviert werden können (z. B. mit pam oder nss oder einfach durch ein leeres Passwort). Übrigens habe ich nie behauptet, dass Sie gesagt haben, Selinux sollte deaktiviert werden. Ich habe nur Ihre Behauptung bestritten, dass es sich nicht um ein echtes Sicherheitsmerkmal handelt.
Cas
8

Es gibt verschiedene Ansichten von SELinux. In vielen Fällen spielen einige Anwendungen mit SELinux nicht gut, so dass diese Entscheidung umstritten ist (Oracle ist ein Beispiel).
Im Allgemeinen ist SELinux ein Schutzmechanismus, um einem Bösewicht, der Ihr System untergraben möchte, ein weiteres Hindernis in den Weg zu stellen.

In meinen früheren Rollen als Systemadministrator bei großen Unternehmen ... habe ich SELinux im Allgemeinen deaktiviert. Ich hatte nicht die Zeit, alle SELinux-Fehler auf allen Systemen aufzuspüren, die von Benutzern, Entwicklern und Managern verwendet werden.

Bevor Sie Dinge deaktivieren, sollten Sie zunächst die Dateien auf dem System wieder so beschriften, wie sie sein sollten. Die einfachste Methode, die ich gefunden habe, ist die Eingabe des Befehls:

 # /sbin/fixfiles onboot

ODER

 # touch /.autorelabel

Starten Sie dann neu und warten Sie, da das System ungefähr genauso lange benötigt, um fehlerhafte SELinux-Labels im System zu überprüfen und zurückzusetzen. Danach sind Sie möglicherweise in Ordnung, da nicht konforme SELinux-Labels behoben und korrigiert werden, die möglicherweise vor dem Versuch, den Server zu verwalten, geändert wurden.

Wenn dies nicht der Fall ist, wird das System nicht beschädigt, wenn SELinux NICHT im Durchsetzungsmodus ist. Es ist nur eine zusätzliche Schutzschicht.

mdpc
quelle
3
strittig, nicht stumm. Aber vollkommen richtig; Nicht alle Systeme benötigen Selinux.
Phyrfox
+1 für den Hinweis, dass versucht werden soll, die Dateien global neu zu kennzeichnen, bevor SELinux als Fallback deaktiviert wird. SELinux soll unerwartetes Software- und Benutzerverhalten verhindern. Auf Systemen, auf denen kein genau definiertes erwartetes Verhalten vorliegt, kann SELinux in der Tat mehr Schaden als Nutzen verursachen (vom Betriebssystem bereitgestellte Richtlinien versuchen, so allgemein wie möglich zu sein, aber manchmal reicht dies nicht aus).
WhiteWinterWolf
Danke! /sbin/fixfiles onbootarbeitete für mich auf CentOS, nicht so mit touch /.autorelabel. Beim Laufen sealert -a /var/log/audit/audit.logwerden jetzt 0 Warnungen angezeigt. @mdpc Was ist der Unterschied zwischen diesen beiden Befehlen?
Joseph K.
5

Einfach ausgedrückt ist das Deaktivieren von MAC-Mechanismen (obligatorischer Zugriffskontrolle) wie SELinux keine gute Idee und kann Sie in einen Sicherheitsnachteil bringen, wenn ein Bösewicht namenbasierte Zugriffskontrollen, die von Discretionary Access Control (DAC) implementiert werden, erfolgreich umgeht.

Wäre ich es, würde ich so etwas tun

semanage fcontext -a -t ssh_home_t ~/.ssh # Adding the policy
restorecon -R -v ~/.ssh # Applying the policy

um besonders sicher zu sein, welche Typbezeichnung rekursiv von zugewiesen wurde~/.ssh

sjsam
quelle
1
Es ist stilisiert "SELinux". Linux ist kein Akronym, und der "SE" -Teil ist ein Initialismus.
Rhymoid
@ Rhymoid: Das ist in der Tat eine gute Notiz. Tatsächlich war das, was ich geschrieben habe, zufällig.
Sjsam
2

Im Allgemeinen sollten Sie SELinux nicht deaktivieren. Es gibt Tools, die Ihnen helfen können, zu verstehen, was schief gelaufen ist. Mein Favorit ist die Verwendung von Sealert-Beispielen:

sealert -a /var/log/audit/audit.log

OFC Sie können SELinux für das Debuggen immer in den zulässigen Modus versetzen, aber das Deaktivieren oder Zulassen von SELinux wird von Red Hat als schwerwiegende Sicherheitslücke eingestuft.

Alex Baranowski
quelle