Präambel
Ich höre immer wieder Leute, die falsche Vorstellungen aus dem ganzen Internet wiederholen. Daher werde ich versuchen, Klarheit zu schaffen
erst einmal; Wie viele zufällige Entdeckungen gab es, die einfach aufgrund von Ursache und Wirkung für etwas anderes als den beabsichtigten Zweck verwendet wurden?
Was war und was ist ein Chroot-Gefängnis?
Chroot wurde ursprünglich entwickelt, um das Stammverzeichnis für den Prozess oder den Benutzer zu ändern (ideal zum Kompilieren von Software aus unbekannten Quellen). Dies bot Sicherheit für das Basissystem sowie ein schnelles Prüfstandsgerät mit einfacher Reinigung. Jahre sind vergangen, und das Konzept und die implizierten Verwendungen haben sich sicherlich ebenfalls geändert.
chroot wurde effektiv genutzt und befindet sich direkt in der Codebasis für verschiedene Programme und Bibliotheken (z. B. openSSHd, apache2 + mod_security2 / mod_chroot, dovecot, sendmail, openVPN, pam_chroot und vieles mehr ). Die Annahme, dass all diese Mainstream-Anwendungen fehlerhafte Sicherheitslösungen implementiert haben, ist einfach nicht wahr
chroot ist eine Lösung für die Dateisystemvirtualisierung: Nicht weniger, nicht mehr. Die Annahme, dass Sie leicht aus einer Chroot ausbrechen können, trifft auch nicht zu ... solange Sie die Richtlinien für die Ausführung von Prozessen innerhalb des Chroot-Gefängnisses einhalten.
Einige Schritte, um Ihr Chroot-Gefängnis zu sichern
dh Prozesse NICHT als ROOT ausführen. Dies könnte einen Wurzeleskalationsvektor eröffnen (der auch innerhalb oder außerhalb der Chroot gilt). Führen Sie keinen Prozess innerhalb der Chroot aus und verwenden Sie denselben Benutzer wie einen anderen Prozess außerhalb der Chroot. Trennen Sie jeden Prozess und Benutzer in einen eigenen Chroot, um die Angriffsfläche zu begrenzen und die Privatsphäre zu schützen. Hängen Sie nur die erforderlichen Dateien, Bibliotheken und Geräte ein. Schließlich ist Chroot KEIN Ersatz für die Sicherheit des Basissystems. Sichern Sie das System in seiner Gesamtheit.
Ein weiterer wichtiger Hinweis: Viele Leute denken, dass OpenVZ Broken ist oder dass es im Vergleich zur vollständigen Systemvirtualisierung nicht gleich ist. Diese Annahme wird getroffen, da es sich im Wesentlichen um eine Chroot handelt, deren Prozesstisch sterilisiert werden muss. mit Sicherheitsmaßnahmen auf Hardware und Geräten. Die meisten davon können Sie in einer Chroot implementieren.
Nicht jeder Administrator verfügt über die erforderlichen Kenntnisse, um alle erforderlichen Kernelparameter auf einem dedizierten Server oder bei vollständiger Systemvirtualisierung zu sichern. Dies bedeutet, dass Ihre Kunden durch die Bereitstellung von OpenVZ weniger Angriffsfläche haben, um sich vor der Bereitstellung ihrer Anwendungen abzusichern. Ein guter Host leistet gute Arbeit bei der Sicherung dieser Parameter, und dies ist wiederum besser für nicht nur alle auf dem Node oder im Rechenzentrum, sondern für das Internet als Ganzes.
Wie bereits erwähnt, ermöglicht die Chroot die Virtualisierung von Dateisystemen. Sie müssen sicherstellen, dass keine setuid-ausführbaren Dateien, unsicheren Anwendungen, Bibliotheken, herabhängenden inhaberlosen Symlinks usw. vorhanden sind. Wenn der Angreifer die Bindung gefährden KÖNNTE, müsste er das virtuelle Dateisystem nach etwas durchsuchen, um einen Pufferüberlauf zu verhindern, mit Dateideskriptoren zu spielen oder auf andere Weise kann etwas, das sich in der Chroot befindet und aus dem Gefängnis entweicht, gefährdet werden, in der Regel durch die Eskalation von Privilegien oder durch die Injektion seiner Nutzlast in das Basissystem.
In diesem Fall ist dies normalerweise das Ergebnis eines fehlerhaften Updates, eines Zero-Day-Exploits oder eines idiomatischen menschlichen Fehlers .
warum chroot immer noch verwendet wird, im Gegensatz zur vollständigen Systemvirtualisierung
Stellen Sie sich das folgende Szenario vor: Sie führen einen Virtual Private Server aus, auf dem der Hostknoten OpenVZ ausführt. Sie können einfach nichts ausführen, was auf der Kernel-Ebene funktioniert. Dies bedeutet auch, dass Sie die Betriebssystemvirtualisierung nicht verwenden können, um Prozesse zu trennen und zusätzliche Sicherheit bereitzustellen. Daher MÜSSEN Sie chroot für diesen Zweck verwenden.
Darüber hinaus ist chroot auf jedem System unabhängig von den verfügbaren Ressourcen nachhaltig. Einfach ausgedrückt, hat es den geringsten Overhead aller Virtualisierungstypen. Dies bedeutet, dass es bei vielen Low-End-Boxen immer noch wichtig ist.
Stellen Sie sich ein anderes Szenario vor: Apache wird in einer virtualisierten Umgebung ausgeführt. Sie möchten jeden Benutzer trennen. Die Bereitstellung eines virtualisierten Dateisystems über ein chroot-Add-On für Apache (mod_chroot, mod_security usw.) ist die beste Option, um die größtmögliche Privatsphäre zwischen den Endbenutzern zu gewährleisten. Dies hilft auch, das Sammeln von Informationen zu verhindern, und bietet eine weitere Sicherheitsebene.
Einfach ausgedrückt ist es wichtig, Sicherheit in Schichten zu implementieren . Chroot ist möglicherweise einer von ihnen. Nicht jeder und jedes System hat den Luxus, Zugriff auf den Kernel zu haben, daher erfüllt chroot STILL einen Zweck. Es gibt eine Vielzahl von Anwendungen, bei denen die vollständige Systemvirtualisierung im Wesentlichen übertrieben ist.
Als Antwort auf Ihre Frage
Ich benutze nicht besonders CentOS, aber ich weiß, dass Bind jetzt seine Privilegien vor Operationen fallen lässt. Ich würde jedoch davon ausgehen, dass Bind aufgrund seiner Geschichte von Angriffsvektoren und potenziellen Schwachstellen chrooted ist.
Außerdem ist es sinnvoller, diese Anwendung automatisch zu chrooten, als nicht, da nicht JEDER Zugriff auf die vollständige Virtualisierung auf System- / Betriebssystemebene hat. Dies wiederum und theoretisch hilft dabei, der CentOS-Benutzerbasis Sicherheit zu bieten:
Betriebssystemanbieter gehen einfach nicht davon aus, dass jeder das gleiche System ausführt. Auf diese Weise können sie dazu beitragen, eine zusätzliche Sicherheitsebene auf ...
Es gibt einen Grund, warum so viele Anwendungen dies verwenden , und warum offensichtlich Ihr Betriebssystem dies standardmäßig tut: weil es als Sicherheitsmerkmal verwendet wird und funktioniert. Wie bereits erwähnt, ist es eine weitere Hürde, die der potenzielle Angreifer bei sorgfältiger Vorbereitung meistens überwinden muss, um den Schaden auf das Gefängnis der Chroot zu beschränken.