Leider finden Sicherheitslücken auch nach Ergreifen entscheidender Sicherheitsmaßnahmen immer noch ihren Weg in sichere Systeme. Eine Möglichkeit, Ihr System zu verwalten und zu schützen, besteht darin, den möglichen Schaden nach einem Angriff zu begrenzen.
In diesem Tutorial besprechen wir den Prozess der Verwendung von chroot-Jail zur Verwaltung von Systemschäden im Falle eines Angriffs. Wir werden uns ansehen, wie man Prozesse und Unterprozesse mit falschen Root-Rechten auf eine bestimmte Umgebung isolieren kann. Dadurch wird der Vorgang auf ein bestimmtes Verzeichnis beschränkt und der Zugriff auf andere Systembereiche verweigert.
Eine kurze Einführung in das Chroot-Gefängnis
Ein Chroot-Jail ist eine Methode, um Prozesse und ihre Unterprozesse mit falschen Root-Rechten vom Hauptsystem zu isolieren.
Wie bereits erwähnt, begrenzt die Isolierung eines bestimmten Prozesses mit gefälschten Root-Rechten den Schaden im Falle eines böswilligen Angriffs. Chroot-Dienste sind auf die Verzeichnisse und Dateien in ihren Verzeichnissen beschränkt und nach Dienstneustart nicht persistent.
Warum das Chroot-Gefängnis verwenden?
Der Hauptzweck des chroot-Gefängnisses ist eine Sicherheitsmaßnahme. Chroot ist auch nützlich, wenn Sie verlorene Passwörter wiederherstellen möchten, indem Sie Geräte von Live-Medien mounten.
Es gibt verschiedene Vor- und Nachteile der Einstellung des Chroot-Gefängnisses. Diese schließen ein:
Vorteile
- Beschränkt den Zugriff: Im Falle einer Sicherheitsverletzung sind die einzigen beschädigten Verzeichnisse die im Chroot-Gefängnis.
- Befehlslimits: Benutzer oder Prozesse werden auf Befehle beschränkt, die im Gefängnis erlaubt sind.
Nachteile
- Die Einrichtung kann schwierig sein.
- Es erfordert viel Arbeit - Wenn Sie einen zusätzlichen Befehl benötigen, als die standardmäßig zulässigen, müssen Sie ihn manuell einfügen.
So erstellen Sie ein einfaches Chroot-Gefängnis
In diesem Prozess erstellen wir ein einfaches Chroot-Gefängnis mit 3 Befehlen, die auf diesen Ordner beschränkt sind. Dies wird Ihnen helfen zu veranschaulichen, wie Sie ein Gefängnis erstellen und verschiedene Befehle zuweisen.
Beginnen Sie mit dem Erstellen eines Hauptordners. Sie können sich diesen Ordner als den / Ordner im Hauptsystem vorstellen. Der Name des Ordners kann alles sein. In unserem Fall nennen wir es /chrootjail
sudo mkdir /chrootjailWir werden dieses Verzeichnis als gefälschtes Root verwenden, das die Befehle enthält, die wir ihm zuweisen werden. Mit den Befehlen, die wir verwenden werden, benötigen wir das bin-Verzeichnis (enthält die ausführbaren Befehlsdateien) und die usw., Verzeichnis (enthält Konfigurationsdateien für die Befehle).
Erstellen Sie im Ordner /chrootjail diese beiden Ordner:
sudo mkdir /chrootjail/etc,bin
Der nächste Schritt besteht darin, Verzeichnisse für dynamisch verknüpfte Bibliotheken für die Befehle zu erstellen, die wir in die Jail aufnehmen möchten. In diesem Beispiel verwenden wir die Befehle bash, ls und grep.
Verwenden Sie den Befehl ldd, um die Abhängigkeiten dieser Befehle aufzulisten, wie unten gezeigt:
sudo ldd /bin/bash /bin/ls /bin/grep
Wenn Sie sich nicht im bin-Ordner befinden, müssen Sie den vollständigen Pfad für die Befehle übergeben, die Sie verwenden möchten. Zum Beispiel ldd /bin/bash oder ldd /bin/grep
Von der obigen ldd-Ausgabe benötigen wir die Verzeichnisse lib64 und /lib/x86_64-linux-gnu. Erstellen Sie im Jail-Verzeichnis diese Ordner.
sudo mkdir -p /chrootjaillib/x86_64-linux-gnu, lib64Sobald wir die dynamischen Bibliotheksverzeichnisse erstellt haben, können wir sie wie unten gezeigt in einem Baum auflisten:
Im weiteren Verlauf werden Sie sich ein klares Bild davon machen, was ein Chroot-Gefängnis bedeutet.
Wir erstellen eine Umgebung ähnlich einem normalen Stammverzeichnis eines Linux-Systems. Der Unterschied besteht darin, dass in dieser Umgebung nur bestimmte Befehle erlaubt sind und der Zugriff eingeschränkt ist.
Jetzt haben wir die Tonne erstellt. usw., lib und lib64 können wir die erforderlichen Dateien in ihren jeweiligen Verzeichnissen hinzufügen.
Beginnen wir mit den Binärdateien.
sudo cp /bin/bash /chrootjail/bin && sudo cp /bin/ls /chrootjail/bin && sudo cp /bin/grep /chrootjail/bin
Nachdem wir die Binärdateien für die benötigten Befehle kopiert haben, benötigen wir die Bibliotheken für jeden Befehl. Sie können den Befehl ldd verwenden, um die zu kopierenden Dateien anzuzeigen.
Beginnen wir mit bash. Für bash benötigen wir die folgenden Bibliotheken:
/lib/x86_64-linux-gnu/libtinfo.so.6/lib/x86_64-linux-gnu/libdl.so.2
/lib/x86_64-linux-gnu/libc.so.6
/lib64/ld-linux-x86-64.so.2
Anstatt alle diese Dateien einzeln zu kopieren, können wir eine einfache for-Schleife verwenden, um jede Bibliothek in allen Bibliotheken nach /chrootjail/lib/x86_64-linux-gnu . zu kopieren
Lassen Sie uns diesen Vorgang sowohl für den ls- als auch für den grep-Befehl wiederholen:
Für ls-Befehl:
Für grep-Befehl:
Als nächstes haben wir im lib64-Verzeichnis eine gemeinsame Bibliothek für alle Binärdateien. Wir können es einfach mit einem einfachen cp-Befehl kopieren:
Als nächstes bearbeiten wir die Haupt-Bash-Anmeldedatei (befindet sich in /etc/bash.bashrc in Debian), damit wir die Bash-Eingabeaufforderung nach unseren Wünschen anpassen können. Verwenden eines einfachen Echo- und Abschlagbefehls wie gezeigt:
sudo echo 'PS1="CHROOTJAIL #"' | sudo tee /chrootjail/etc/bash.bashrcSobald wir alle oben genannten Schritte abgeschlossen haben, können wir uns wie gezeigt mit dem chroot-Befehl bei der Jail-Umgebung anmelden.
sudo chroot /chrootjail /bin/bashSie erhalten Root-Rechte mit der Eingabeaufforderung, die derjenigen ähnelt, die im obigen Befehl echo und tee erstellt wurde created.
Sobald Sie sich angemeldet haben, sehen Sie, dass Sie nur auf die Befehle zugreifen können, die Sie beim Erstellen des Gefängnisses eingegeben haben. Wenn Sie weitere Befehle benötigen, müssen Sie diese manuell hinzufügen.
HINWEIS: Da Sie die Bash-Shell eingebunden haben, haben Sie Zugriff auf alle integrierten Bash-Befehle. Damit können Sie das Gefängnis mit dem Exit-Befehl verlassen.
Fazit
In diesem Tutorial wurde beschrieben, was Chroot-Jail ist und wie wir es verwenden können, um eine vom Hauptsystem isolierte Umgebung zu erstellen. Sie können die im Handbuch beschriebenen Techniken verwenden, um isolierte Umgebungen für kritische Dienste zu erstellen.
Um das Gelernte zu üben, versuchen Sie, ein Apache2-Gefängnis zu erstellen.
HINWEIS: Erstellen Sie zunächst ein Root-Verzeichnis, fügen Sie die Konfigurationsdateien (etc/apache2) hinzu, fügen Sie das Dokumenten-Root (/var/www/html) hinzu, fügen Sie die Binärdatei (/usr/sbin/apache2) hinzu und fügen Sie schließlich die erforderlichen Bibliotheken (ldd / usr/sbin/apache2)