Ich habe irgendwo gelesen oder gehört (vielleicht im SELinux-Kurs von LinuxCBT ; ich bin mir jedoch nicht sicher), dass es Online-Linux-Server gibt, für die auch das Passwort des Root-Benutzers angegeben wird. Der Linux-Server wird mithilfe von SELinux-Regeln gehärtet, sodass sich jeder mit dem Root-Benutzer anmelden kann, das Betriebssystem jedoch keinen Schaden nimmt.
Es scheint mir ein Mythos zu sein, aber ich wollte sicherstellen: Ist es möglich, eine Linux-Box (möglicherweise mit SELinux) so zu härten, dass selbst der Root-Benutzer keine spezifischen böswilligen Aktivitäten darauf ausführen kann? (Beispiele: Löschen von Systemdateien, Löschen von Protokolldateien, Beenden kritischer Dienste usw.)
Eine solche Linux-Box ist ein guter Ausgangspunkt für den Bau eines Honeypots .
Bearbeiten: Basierend auf einer Antwort (jetzt gelöscht) und ein wenig Googeln, habe ich mindestens zwei Links, die auf solche gehärteten Linux-Server hingewiesen. Leider sind beide Server ausgefallen. Ich kopiere und füge die Beschreibungen hier ein:
1) Von http://www.coker.com.au/selinux/play.html :
Freier Root-Zugang auf einem SE Linux-Rechner!
Um auf meine Debian- Spielmaschine ssh als root zuzugreifen , lautet das Passwort ...
Beachten Sie, dass solche Maschinen viel Geschick erfordern, wenn Sie sie erfolgreich ausführen möchten. Wenn Sie fragen müssen, ob Sie eine ausführen sollen, lautet die Antwort "nein".
Damit soll demonstriert werden, dass alle erforderlichen Sicherheitsmaßnahmen von SE Linux ohne Unix-Berechtigungen bereitgestellt werden können (es wird jedoch weiterhin empfohlen, Unix-Berechtigungen auch für echte Server zu verwenden). Außerdem haben Sie die Möglichkeit, sich bei einem SE-Computer anzumelden und zu sehen, wie es ist.
Wenn Sie sich bei einem SE Linux-Spielautomaten anmelden, stellen Sie sicher, dass Sie die Option -x verwenden , um die X11-Weiterleitung zu deaktivieren, oder setzen Sie ForwardX11 no in Ihrer Datei / etc / ssh / ssh_config, bevor Sie sich anmelden. Stellen Sie außerdem sicher, dass Sie die Option -a verwenden, um die Weiterleitung des SSH- Agenten zu deaktivieren, oder setzen Sie ForwardAgent no in Ihrer Datei / etc / ssh / ssh_config, bevor Sie sich anmelden. Wenn Sie diese Einstellungen nicht korrekt deaktivieren, besteht bei der Anmeldung am Spielautomaten die Gefahr, dass Sie über Ihren SSH-Client angegriffen werden.
Es gibt einen IRC-Kanal, um dies zu diskutieren. Es ist #selinux auf irc.freenode.net .
Hier ist eine kurze FAQ
2) Von http://www.osnews.com/comments/3731
Ziel von Hardened Gentoo ist es, Gentoo für hochsichere und stabile Produktionsserverumgebungen nutzbar zu machen. Dieses Projekt ist kein eigenständiges Projekt, das von Gentoo getrennt ist. Es soll ein Team von Gentoo-Entwicklern sein, das darauf ausgerichtet ist, Gentoo Lösungen zu liefern, die starke Sicherheit und Stabilität bieten. Diese Maschine ist die SELinux- Demomaschine von Hardened Gentoo . Der Hauptzweck ist das Testen und Überwachen der SELinux-Integration und -Richtlinie.
quelle
Antworten:
Realität: Ja, SELinux kann den Root-Benutzer einschränken.
Dies ist möglich, weil SELinux sich nicht wirklich um den aktuellen Unix-Benutzer kümmert: Es werden lediglich zusätzliche Metadaten angezeigt, die als Kontext bezeichnet werden (die unter anderem ein Domänenfeld enthalten ) und mit denen SELinux entscheidet, ob die angeforderte Aktion autorisiert werden kann oder nicht nicht.
Was man sich normalerweise als Root-Benutzer vorstellt, wird in SELinux als Root-Unix-Benutzer zugeordnet, auf dem entweder die
unconfined_t
oder diesysadm_t
SELinux-Domäne ausgeführt wird. Es ist der klassische allmächtige Root-Benutzer mit voller Leistung.Man kann sein System jedoch perfekt so einrichten, dass es eine Root-Shell (ich meine die Root-Unix-User-Shell) erzeugt, auf der die
user_t
SELinux-Domain des eingeschränkten Benutzers ausgeführt wird. Gemäß den SELinux-Richtlinien unterscheidet sich eine solche Shell nicht von anderen eingeschränkten Benutzer-Shells und hat keine besonderen Berechtigungen für das System, wodurch der Root-Benutzer effektiv eingeschränkt wird.Aus experimenteller Sicht ist es sinnlos, so etwas buchstäblich zu tun, aber in der realen Welt finden ähnliche Praktiken ihren Weg. Ein klassisches Beispiel wäre ein Datenbankadministrator, der in der Lage sein muss, die Datenbankdämonen zu stoppen / zu starten, Konfigurationsdateien zu bearbeiten usw. Ohne SELinux müsste der Benutzer bei all diesen Aktionen zu Root-Rechten eskalieren (auch wenn dies normalerweise nur für einen einzelnen Benutzer gilt) Kommandozeile über das
sudo
Tool, aber auch das kann zu Undichtigkeiten führen).Dank SELinux können wir diesem Benutzer eine echte Root-Shell geben, die jedoch anstelle von running
unconfined_t
odersysadm_t
domains diedbadm_t
Domain ausführt. Dies bedeutet, dass er mehr Berechtigungen als ein eingeschränkter Benutzer hat. Diese neuen Berechtigungen sind jedoch auf das beschränkt, was zur Verwaltung des Datenbankservers erforderlich ist: Dieser Benutzer kann keine anderen Dienste, Dateien oder Verwaltungsbefehle ausführen unbedingt erforderlich, um seine Arbeit zu tun.Auf die gleiche Weise könnten der Webserver und andere Dienstadministratoren auch andere Root-Shells parallel auf demselben System ausführen. Jeder Benutzer sieht, dass sein aktueller Unix-Benutzer Root ist , aber dank SELinux hat jeder effektiv unterschiedliche Berechtigungen, die auf welche beschränkt sind wird für ihre eigenen Zwecke benötigt .
quelle
Ja es ist möglich. Aber nicht sehr nützlich.
Theoretisch könnten Sie dem Root-Benutzer das Ausführen von Binärdateien untersagen, die für böswillige Zwecke verwendet werden könnten, und Richtlinien über SELinux erzwingen. Dies stellt jedoch ein Problem dar. Selbst wenn es dem Root-Benutzer anfangs nicht gestattet war, etwas zu tun, könnte er oder sie einfach andere Methoden verwenden, um die SELinux-Richtlinien zu ändern oder zu entfernen. Aufgrund dieses Problems müssten Sie dem Root-Benutzer effektiv das Ausführen von Aktionen verweigern, was dies nicht sehr nützlich macht.
quelle
Das mag billig klingen, ist aber ganz einfach: Ändern Sie die UID des Benutzers root auf einen Wert ungleich Null. Gehen Sie einfach in / etc / passwd und / etc / shadow, ändern Sie die vorhandenen uid = 0-Einträge von "root" zu etwas anderem und fügen Sie dann ein Konto mit dem Namen "root" hinzu, dessen uid nicht Null ist und nicht verwendet wird.
Es erreicht den Zweck ohne. Es ist auch eine Möglichkeit zu behaupten, dass jeder "root" -Zugriff haben kann, ohne tatsächlich eskalierte Berechtigungen bereitzustellen.
quelle
root
Benutzer einfach nicht der eigentliche Root-Benutzer. Die Frage ist, ob der eigentliche Superuser so eingeschränkt werden kann.root
so eingeschränkt werden kann.