Leider finden die Sicherheitslücken für Sicherheitsmaßnahmen auch nach entscheidenden 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 zu begrenzen, sobald ein Angriff auftritt.
In diesem Tutorial werden wir den Prozess der Verwendung von Chroot -Gefängnis zur Verwaltung von Systemschäden im Falle eines Angriffs diskutieren. Wir werden uns untersuchen, wie Prozesse und Unterprozesse in eine bestimmte Umgebung mit falschen Wurzelrechten isoliert werden können. Dies beschränkt den Prozess auf ein bestimmtes Verzeichnis und verweigert den Zugriff auf andere Systembereiche.
Eine kurze Einführung in das Chroot -Gefängnis
Ein Chroot -Gefängnis ist eine Methode zum Isolieren von Prozessen und deren Teilprozess aus dem Hauptsystem mit falschen Wurzelrechten.
Wie bereits erwähnt, begrenzt das Isolieren eines bestimmten Prozesses mit gefälschten Wurzelrechten die Schäden bei einem böswilligen Angriff. Chroted-Dienste beschränken sich auf die Verzeichnisse und Dateien in ihren Verzeichnissen und sind beim Neustart des Dienstes nicht streng.
Warum 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, indem Geräte aus Live.
Es gibt verschiedene Vor- und Nachteile des Einstellens von Chroot -Gefängnis. Diese beinhalten:
Vorteile
Nachteile
So erstellen Sie ein grundlegendes Chroot -Gefängnis
In diesem Prozess erstellen wir ein grundlegendes Chroot -Gefängnis mit 3 auf diesen Ordner beschränkten Befehle. Dies wird dazu beitragen, wie man ein Gefängnis erstellt und verschiedene Befehle zugewiesen wird.
Erstellen Sie zunächst einen Hauptordner. 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 /chrootjail
Wir werden dieses Verzeichnis als gefälschte Stamme verwenden, das die Befehle enthält, die wir ihm zuweisen werden. Mit den Befehlen, die wir verwenden, benötigen wir das Bin -Verzeichnis (enthält die ausführbaren Befehlsausführungen) und das usw., Verzeichnis (enthält Konfigurationsdateien für die Befehle).
Erstellen Sie im Ordner /chrootjail -Ordner diese beiden Ordner:
sudo mkdir /chrootjail /usw., bin
Der nächste Schritt besteht darin, Verzeichnisse für dynamisch verknüpfte Bibliotheken für die Befehle zu erstellen, die wir in das Gefängnis aufnehmen möchten. In diesem Beispiel werden wir Bash-, LS- und GREP -Befehle verwenden.
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 Ordner "Bin befinden. Zum Beispiel LDD /bin /bash oder ldd /bin /grep
Aus der obigen LDD-Ausgabe benötigen wir die Verzeichnisse lib64 und /lib /x86_64-linux-gnu. Erstellen Sie diese Ordner im Gefängnisverzeichnis.
sudo mkdir -p /chrootjail lib /x86_64-linux-gnu, lib64
Sobald wir die dynamischen Bibliotheksverzeichnisse erstellt haben, können wir sie mit einem Baum auflisten, wie unten gezeigt:
Im Laufe des Fortschritts werden Sie ein klares Bild darüber erhalten, was ein Chroot -Gefängnis bedeutet.
Wir erstellen eine Umgebung, die einem normalen Root -Verzeichnis eines Linux -Systems ähnelt. Der Unterschied besteht darin, dass in dieser Umgebung nur bestimmte Befehle zulässig sind und der Zugriff begrenzt ist.
Jetzt, wo wir den Mülleimer erstellt haben. 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 von uns benötigten Befehle kopiert haben, benötigen wir die Bibliotheken für jeden Befehl. Sie können den Befehl LDD verwenden, um die Dateien zum Kopieren 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 Schleife verwenden, um jede Bibliothek in allen Bibliotheken nach/chrootjail/lib/x86_64-linux-gnu zu kopieren
Wiederholen wir diesen Vorgang sowohl für den Befehl LS als auch für GREP:
Für LS -Befehl:
Für Grep -Befehl:
Als nächstes haben wir im Verzeichnis lib64 eine gemeinsame Bibliothek in allen Binärdateien. Wir können es einfach mit einem einfachen CP -Befehl kopieren:
Bearbeiten wir als Nächst.Bashrc in Debian), damit wir die Bash -Eingabeaufforderung nach unserem Geschmack optimieren können. Verwenden Sie ein einfaches Echo- und T -Shirt -Befehl wie gezeigt:
sudo echo 'ps1 = "chrootjail #"' | sudo tee/chrootjail/etc/bash.bashrc
Sobald wir alle oben genannten Schritte ausgeführt haben, können wir uns in der Gefängnisumgebung mit dem Befehl chroot wie gezeigt anmelden.
sudo chroot /chrootjail /bin /bash
Sie erhalten Root -Privilegien mit der Eingabeaufforderung, die denen ähnelt, die im obigen Echo- und Tee -Befehl erstellt wurden.
Sobald Sie sich angemeldet haben, werden Sie feststellen, dass Sie nur Zugriff auf die Befehle haben, die Sie beim Erstellen des Gefängnisses angegeben haben. Wenn Sie mehr Befehle benötigen, müssen Sie sie manuell hinzufügen.
NOTIZ: Da Sie die Bash-Shell aufgenommen haben, haben Sie Zugriff auf alle integrierten Bash-Befehle. Dadurch können Sie das Gefängnis mit dem Befehl exit beenden.
Abschluss
Dieses Tutorial behandelte das, was das Chroot -Gefängnis ist und wie wir es verwenden können, um eine isolierte Umgebung aus dem Hauptsystem zu schaffen. Sie können die im Handbuch diskutierten Techniken verwenden, um isolierte Umgebungen für kritische Dienste zu erstellen.
Um zu üben, was Sie gelernt haben, versuchen Sie, ein Apache2 -Gefängnis zu erstellen.
HINWEIS: Starten Sie mit dem Erstellen eines Root -Verzeichnisses, fügen Sie die Konfigurationsdateien (etc/apache2) hinzu, fügen Sie das Dokumentroot (/var/www/html) hinzu, fügen Sie das Binärdatum (/usr/sbin/apache2) hinzu und fügen Sie schließlich die erforderlichen Bibliotheken hinzu (LDD/ usr/sbin/apache2)