Gentoo Logo

[ << ] [ < ] [ Hauptseite ] [ > ] [ >> ]


11. Chrooten und virtuelle Server

Inhalt:

11.a. Chrooten

Einen Dienst zu chrooten stellt eine Möglichkeit dar einen Dienst (oder Benutzer) auf für ihn vorgesehene Ressourcen zu beschränken und zu verhindern, dass er Zugang zu Bereichen (oder Informationen) erlangt, die zu einem unberechtigten Besitz von root-Rechten führen könnte. Indem man einen Dienst als ein anderer Benutzer als root laufen lässt (nobody, apache, named) kann ein Angreifer nur auf Dateien, mit den Berechtigungen des Benutzers, zugreifen. Dies bedeutet, dass ein Angreifer nie root Zugang erlangen kann, selbst wenn der entsprechende Dienst eine Sicherheitslücke hätte.

Einige Dienste wie zum Beispiel pure-ftpd und bind haben eingebaute Fähigkeiten für chroot, andere Dienste bieten dies nicht. Wenn der Dienst es anbietet, dann benutzen Sie es, andernfalls müssen Sie in die Materie einsteigen und einen eigenen Benutzer erstellen. Lassen Sie es uns nun versuchen und eine eigene chroot-Umgebung aufbauen. Um einen Einstieg zu finden und zu sehen wie chroot arbeitet versuchen wir es zuerst mit bash (als einfachen Einstieg ins Lernen).

Erstellen Sie das /chroot Verzeichnis mittels mkdir /chroot. Nun müssen wir herausfinden, mit welche dynamischen Bibliotheken bash kompiliert wurde (wenn es mit -static kompiliert wurde, dann ist dieser Schritt nicht nötig).

Der folgende Befehl wird eine Liste der von bash benutzten Bibliotheken ausgeben.

Befehlsauflistung 1.1: Benutzte Bibliotheken auflisten

# ldd /bin/bash
  libncurses.so.5 => /lib/libncurses.so.5 (0x4001b000)
  libdl.so.2 => /lib/libdl.so.2 (0x40060000)
  libc.so.6 => /lib/libc.so.6 (0x40063000)
  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Nun erstellen wir die Umgebung für bash.

Befehlsauflistung 1.2: chroot-Umgebung für Bash erstellen

# mkdir /chroot/bash
# mkdir /chroot/bash/bin
# mkdir /chroot/bash/lib

Nun kopieren wir die von bash benutzten Dateien (/lib) in das chrootete lib und kopieren den bash Befehl n das Verzeichnis /bin im chroot. Dies wird dieselbe Umgebung erstellen - nur eben mit weniger Funktionalität. Versuchen Sie nach dem kopieren: chroot /chroot/bash /bin/bash. Wenn Sie ein Prompt bekommen, dass als aktuelles Verzeichnis / angibt, dann hat alles funktioniert. Wenn nicht, wird ordnungsgemäß eine Fehlermeldung erscheinen, welche die fehlende Datei angibt. Manche dynamischen Bibliotheken bauen aufeinander auf.

Sie werden feststellen, dass innerhalb der chroot-Umgebung nichts anderes als echo funktioniert. Dies ist deshalb so, weil wir keine anderen Befehle in unserer chroot-Umgebung haben und echo ein in bash eingebauter Befehl ist.

Dies ist in etwa der Weg den Sie gehen würden, um einen "ge-chrooteten" Dienst zu erstellen. Der einzige Unterschied ist, dass Dienste manchmal auf Geräten und Konfigurationsdateien in /etc basieren. Kopieren Sie diese einfach in die chroot-Umgebung (Geräte können mit cp -a kopiert werden) und editieren Sie das Init-Skript so dass es die chroot-Umgebung vor der Ausführung verwendet. Es kann schwierig sein herauszufinden, welche Konfigurationsdateien und Geräte ein Dienst benutzt. Dies ist der Punkt, an dem strace nützlich wird. Starten Sie den Dienst mit /usr/bin/strace bash und suchen Sie nach open, read, stat und vielleicht noch connect. Dies wird Ihnen Aufschluss darüber geben, welche Dateien Sie kopieren müssen. Aber in den meisten Fällen kopieren Sie einfach die passwd-datei (editieren sie die Kopie und entfernen Sie die Benutzer, die mit dem Dienst nichts zu tun haben), /dev/zero, /dev/log und /dev/random.

11.b. User Mode Linux

Ein weiterer Weg eine besser gesicherte Umgebung zu erstellen besteht darin, eine virtuelle Maschine zu verwenden. Eine virtuelle Maschine ist, wie der Name schon sagt, ein Prozess der auf dem wirklichen Betriebssystem läuft und eine Hardware- und Betriebssystemumgebung vorspiegelt, welche eine eigene Maschine zu sein scheint. Der Sicherheitsgewinn hierbei ist, dass bei einer Kompromittierung der virtuellen Maschine lediglich diese betroffen ist und nicht die übergeordnete Installation.

Für weitere Informationen zum Aufsetzen von User Mode Linux können Sie den User Mode Linux Guide (englisch) zu Rate ziehen.


[ << ] [ < ] [ Hauptseite ] [ > ] [ >> ]


Drucken

Alles ansehen

Seite aktualisiert 2. April 2010

Zusammenfassung: Isolieren Sie Ihre Server.

Kim Nielsen
Autor

John P. Davis
Bearbeiter

Eric R. Stockbridge
Bearbeiter

Carl Anderson
Bearbeiter

Jorge Paulo
Bearbeiter

Sven Vermeulen
Bearbeiter

Benny Chuang
Bearbeiter

Sune Jeppesen
Bearbeiter

Tiemo Kieft
Bearbeiter

Zack Gilburd
Bearbeiter

Dan Margolis
Bearbeiter

Joshua Saddler
Bearbeiter

Jan Hendrik Grahl
Übersetzer

Tobias Scherbaum
Übersetzer

Matthias Geerdsen
Übersetzer

Tobias Heinlein
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.