GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So führen Sie DNS- und FTP-Dienste in einem Chroot-Gefängnis aus

Wie der Name schon sagt, ändert eine Chroot-Operation das scheinbare Root-Verzeichnis für einen laufenden Prozess und seine Kinder. Es erlaubt Ihnen, ein Programm (Prozess) mit einem anderen Root-Verzeichnis als / auszuführen. Das Programm kann Dateien außerhalb des angegebenen Verzeichnisbaums weder sehen noch darauf zugreifen.

Beispielsweise können Sie ein Programm ausführen und sein Stammverzeichnis als /home/oracle/jail angeben. In diesem Fall ist das Stammverzeichnis des Programms eigentlich /home/oracle/jail. Das Programm würde keine Dateien oberhalb dieses Verzeichnisses in der Hierarchie erkennen oder darauf zugreifen können. Dieses künstliche Root-Verzeichnis wird als Chroot-Gefängnis bezeichnet. Sein Zweck besteht darin, den Verzeichniszugriff eines potenziellen Angreifers einzuschränken. Das Chroot-Gefängnis sperrt einen bestimmten Prozess und jede Benutzer-ID, die er verwendet, so dass der Benutzer nur das Verzeichnis sieht, in dem der Prozess läuft. Für den Prozess scheint es, dass er im Stammverzeichnis läuft.

DNS- und FTP-Dienste in einem Chroot-Gefängnis ausführen

Zwei Dienste werden eingerichtet, um Chroot-Jails zu nutzen. Sie können DNS so einrichten, dass Named in einem Gefängnis läuft. Der vsftpd-FTP-Server kann automatisch Chroot-Jails für Clients starten.

DNS im Chroot-Gefängnis

Das bind-chroot-Paket ermöglicht es Ihnen, named so einzurichten, dass es in einem Chroot-Gefängnis läuft. Wenn Sie dieses Paket installieren, wird die Datei /var/named/chroot Verzeichnis erstellt und wird zum Chroot-Gefängnisverzeichnis für alle BIND-Dateien.

  • Das Verzeichnis /var/named wird zu /var/named/chroot/var/named.
  • /etc/named*-Dateien werden zu /var/named/chroot/etc/named*-Dateien.

Durch die Installation dieses Pakets wird auch die Shell-Variable ROOTDIR in der Datei /etc/sysconfig/named auf /var/named/chroot gesetzt. Der Vorteil, named in einem Chroot-Gefängnis auszuführen, besteht darin, dass, wenn ein Hacker über einen BIND-Exploit in Ihr System eindringt, der Zugriff des Hackers auf den Rest Ihres Systems auf die Dateien im Chroot-Gefängnisverzeichnis beschränkt ist.

FTP-Clients im Chroot-Gefängnis

Standardmäßig werden anonyme Benutzer in einem Chroot-Gefängnis platziert. Wenn sich ein anonymer Benutzer bei einem vsftpd-Server anmeldet, ist das Home-Verzeichnis des Benutzers /var/ftp. Der Benutzer sieht jedoch nur /.

Beispiel:Ein Verzeichnis mit dem Namen /var/ftp/upload wird einem anonymen Benutzer als /upload angezeigt. Dies verhindert, dass anonyme Benutzer auf Dateien oberhalb von /var/ftp in der Verzeichnishierarchie zugreifen können.

Lokale Benutzer, die auf einen vsftpd-Server zugreifen, werden in ihrem Home-Verzeichnis platziert. Sie können Optionen in der Datei /etc/vsftpd/vsftpd.conf aktivieren, um lokale Benutzer in ein Chroot-Gefängnis zu stecken, wo das künstliche Stammverzeichnis das Home-Verzeichnis des Benutzers ist. Die folgenden Optionen existieren in der vsftpd-Konfigurationsdatei, um ein Chroot-Gefängnis für lokale Benutzer zu implementieren:

  • chroot_list_enable
  • chroot_local_user
  • chroot_list_file

Wenn sich ein lokaler Benutzer beim vsftpd-Server anmeldet, wird die Direktive chroot_list_enable überprüft. Wenn diese Direktive auf YES gesetzt ist, prüft der Dienst die /etc/vsftpd/chroot_list Datei (standardmäßig) oder eine andere Datei, die von chroot_list_file angegeben wird Richtlinie.

Dann wird eine andere Direktive überprüft, chroot_local_user . Wenn diese Direktive auf YES gesetzt ist, dann wird die chroot_list wird zu einer Liste von Benutzern, die NICHT chrooten sollen. Wenn diese Direktive auf NO gesetzt ist, wird der Benutzer in ein Chroot-Gefängnis in seinem Home-Verzeichnis gesteckt.


Linux
  1. Chroot „Gefängnis“ – Was ist das und wie benutzt man es?

  2. Wie führt man Chrom in einem Chroot aus?

  3. So führen Sie den Befehl „find“ nur im aktuellen Verzeichnis und nicht in Unterverzeichnissen aus

  4. Wie kann ich dos2unix auf einem ganzen Verzeichnis ausführen?

  5. Linux:Wie man einen Befehl in einem bestimmten Verzeichnis ausführt

So führen Sie alle Skripte in einem Verzeichnis unter Linux aus

So laden Sie das Remote-Verzeichnis in sFTP herunter und hochladen

So beschränken Sie den Zugriff auf Verzeichnisse und Unterverzeichnisse auf Nginx

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus

Wie man ein C-Programm unter Linux schreibt und ausführt

So installieren und konfigurieren Sie den DNS-Server unter Linux