Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel A Sicherheit unter Linux
  gp A.1 Viren und Trojaner
  gp A.2 Der Superuser (su)
  gp A.3 Überlaufen von Logfiles
  gp A.4 Zugriffsrechte auf Dateien
  gp A.5 Das SUID-Bit
  gp A.6 Programme ohne Ausführrechte
  gp A.7 Buffer Overflow (Pufferüberlauf)
  gp A.8 Race Condition
  gp A.9 Temporäre Dateien
  gp A.10 chroot
  gp A.11 Umgebungsvariablen
  gp A.12 Zugriffsrechte – häufig gemachte Fehler
  gp A.13 system() und popen()
  gp A.14 Offene Filedeskriptoren
  gp A.15 Core Dump
  gp A.16 SQL Injection
  gp A.17 Filedeskriptor-Überlauf mit select()


Rheinwerk Computing

A.10 chroot  toptop

Mit der Funktion chroot() können Sie das Wurzelverzeichnis (/) für ein Programm verändern. Das bedeutet aber auch, dass nach der Veränderung nicht mehr ohne Weiteres außerhalb des Baumes zugegriffen werden kann. Dieser Vorgang wird als chroot jail bezeichnet. Bspw. können Sie damit einen Befehl mit einem neuen Wurzelverzeichnis starten, wie dies etwa bei einer Rettungsdiskette gemacht werden kann, die mit einem gemounteten System arbeiten soll. Natürlich bleibt ein solcher Aufruf nur dem Benutzer root überlassen.

Mit chroot() können Sie praktisch ein kritisches Programm bei der Ausführung vom übrigen Filesystem isolieren (was übrigens auch gerne mit Dämonprozessen gemacht wird). Damit ließe sich praktisch ein Einbrecher ins System in einem Verzeichnis dingfest machen – wichtig dabei ist, dass sich in diesem Verzeichnis nur Programme befinden, die man benötigt.

Der Vorteil dieser chroot jail-Umgebung ist, dass im Falle eines Fehlers Ihrer Anwendung nur Schaden im chroot jail angerichtet werden kann und somit dem Angreifer alles andere außerhalb dieser Verzeichnisstruktur verwehrt bleibt.

Allerdings benötigen viele (Dämon-)Prozesse Konfigurationsdateien. Und da diesen ja bspw. das Verzeichnis /etc oder ähnliche Verzeichnisse nicht mehr zur Verfügung stehen, müssen diese Dateien ins chroot-Verzeichnis eingefügt werden. Hierbei gilt es darauf zu achten, keine Fehler zu machen. Hier einige der vielen möglichen Fehler mit chroot, die gerne gemacht werden:

gp  Vermeiden Sie, sofern es möglich ist, Dateien in der chroot-Umgebung wie Passwortdateien oder ähnliche. Sie sollten nicht einfach die Datei /etc/passwd ins chroot-Verzeichnis kopieren, wenn Sie noch andere Möglichkeiten haben.
gp  Verwenden Sie nicht die Standardrechte einer Anwendung. Würden Sie bspw. den Apache-Webserver in einer chroot-Umgebung mit den ursprünglichen Rechten laufen lassen, würde das Programm mit vollen root-Rechten laufen. Somit steht dem Ausbruch aus der chroot-Umgebung nichts mehr im Wege. Passen Sie sinnvollerweise die Privilegien an. Es genügt nicht, im Falle eines Servers der UID und der GID das nobody zuzuweisen. Wenn andere Anwendungen diese IDs ebenso verwenden, kann der Angreifer andere Programme mit den Signalen steuern oder die Systemaufrufe mit ptrace mitprotokolieren, was auch das Mitlesen von Passwörtern beinhalten könnte. Details zum Chroot Jail: Man kann nur entkommen, wenn das aktuelle Arbeitsverzeichnis (welches durch chroot() selbst nicht geändert wird) höher liegt als das chroot-Verzeichnis.

Neben diesen Löchern, die Sie mit chroot() aufmachen, gibt es noch eine Menge mehr zu beachten. Wenn Sie eine Anwendung erstellen, die eine eigene chroot()-Umgebung erstellt, müssen Sie eine Festung wie Fort Knox bauen und sich unbedingt intensiver mit diesem Thema befassen. Gerade in Zeiten, wo so genannte virtuelle Server (kurz VServer) Hochkonjunktur haben, sollten Sie diesbezüglich recht schnell fündig werden.

 << zurück
  
  Zum Rheinwerk-Shop
Neuauflage: Linux-UNIX-Programmierung
Neuauflage:
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-
 Programmierung


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern