Freetz chroot: Unterschied zwischen den Versionen

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen
Zeile 6: Zeile 6:


In der Praxis wird "Chrooting" dadurch erschwert, dass Programme beim Start erwarten, Platz für temporäre Dateien, Konfigurationsdateien, Gerätedateien und Shared Libraries an bestimmten festen Orten vorzufinden. Um Programme also innerhalb des chroot-Verzeichnisses laufen lassen zu können, muss das Verzeichnis mit diesen notwendigen Dateien ausgestattet werden. Dabei ist vorsichtig vorzugehen, damit über sie nicht versehentlich Zugriff auf das restliche System ermöglicht wird.
In der Praxis wird "Chrooting" dadurch erschwert, dass Programme beim Start erwarten, Platz für temporäre Dateien, Konfigurationsdateien, Gerätedateien und Shared Libraries an bestimmten festen Orten vorzufinden. Um Programme also innerhalb des chroot-Verzeichnisses laufen lassen zu können, muss das Verzeichnis mit diesen notwendigen Dateien ausgestattet werden. Dabei ist vorsichtig vorzugehen, damit über sie nicht versehentlich Zugriff auf das restliche System ermöglicht wird.
== Einsatz ==
; Rechtetrennung : Ein chroot kann als Vorsorgemaßnahme gegen einen Sicherheitsbruch eingesetzt werden, indem es einen potentiellen Angreifer daran hindert, mit einem kompromittierten Programm Schaden anzurichten oder das System zu sondieren. Beispielsweise kann ein Dateiserver im Netzwerk das Verzeichnis, aus dem er einen Client bedient, direkt nach der Verbindungsaufnahme chrooten. Einen ähnlichen Ansatz verfolgt der Mail Transfer Agent der seine Aufgabe auf mehrere kleine, hintereinandergeschaltete Programme aufteilt, die jedes für sich in eigenen Chroots laufen. Ein guter Einsatz ist chroot auch für FTP Server, damit FTP User nicht aus ihrem "home" Directory in ein anderes Verzeichnis wechseln können.
; Honeypot : Ein chroot-Verzeichnis kann so bestückt werden, dass ein echtes System mit Netzwerkdiensten simuliert wird. Der chroot-Mechanismus kann dann dieses System kompromittierende Angreifer daran hindern, zu erkennen, dass sie sich in einer künstlichen Umgebung befinden, oder in das echte System auszubrechen.
; Testen : Die durch den chroot-Mechanismus erreichte Isolation ist auch zu Testzwecken nützlich. In ein solches Verzeichnis kann eine eigene Kopie des Betriebssystems installiert werden und als Testumgebung für Software dienen, deren Einsatz in einem Produktivsystem zu riskant wäre.
; Reparatur : Um ein Linux/Unix System mit Hilfe einer Boot-CD wie Knoppix zu reparieren, kann chroot genutzt werden um auf dem eingemounteten System zu arbeiten. So kann beispielsweise ein vergessenes Root-Passwort wiederhergestellt werden.


== USB-root ==
== USB-root ==

Version vom 27. April 2010, 10:30 Uhr

chroot

chroot steht für „change root“ und ist eine Funktion auf Unix-Systemen, um das Rootverzeichnis zu ändern. Sie wirkt sich nur auf den aktuellen Prozess und seine Kindprozesse aus. „chroot“ selbst kann sich auf den Systemaufruf chroot(2) als auch auf das Dienstprogramm chroot(8) beziehen.

Ein Programm, das auf ein Verzeichnis re-rooted wurde, kann nicht mehr auf Dateien außerhalb dieses Verzeichnisses zugreifen. Chrooting bietet somit eine einfache Möglichkeit, nicht vertrauenswürdige, Test- oder sonstwie gefährliche Programme in eine Sandbox zu versetzen. Es ist ein einfacher Jail-Mechanismus, aus dem aber durchaus leicht wieder ausgebrochen werden kann.

In der Praxis wird "Chrooting" dadurch erschwert, dass Programme beim Start erwarten, Platz für temporäre Dateien, Konfigurationsdateien, Gerätedateien und Shared Libraries an bestimmten festen Orten vorzufinden. Um Programme also innerhalb des chroot-Verzeichnisses laufen lassen zu können, muss das Verzeichnis mit diesen notwendigen Dateien ausgestattet werden. Dabei ist vorsichtig vorzugehen, damit über sie nicht versehentlich Zugriff auf das restliche System ermöglicht wird.

USB-root

Mit USB-root lässt sich das Root-Verzeichnis (/) auf ein an die FritzBox angeschlossenes USB-Gerät auslagern - was zusätzlichen Platz nicht nur für weitere Software schafft.

Vorteile

   * Immer noch ein lauffähiges System im Flash-Speicher der Fritzbox als Notfall-System vorhanden
   * Nahezu unbegrenzter Platz
   * Mehrere Systeme parallel zur Auswahl auf dem USB-Stick → einfaches Testen neuer Versionen und Konfigurationen. Dabei 
    sollte allerdings die jeweils genutzte Firmwarebasis von AVM ein zueinander kompatibles Konfigurationsformat aufweisen! 

Ein Beispiel aus der Praxis:

Annex A Box in Frankreich mit DAU als Besitzer ;-) Bei einem nicht funktionierenden System im Flash würde da gar nichts mehr gehen. Strom aus, USB-Stick ab und Strom wieder an, bekommt er aber hin um damit das Notfallsystem im Flash nutzen zu können.


Konfiguration und Kompilierung

USB-root muss einfach bei Erstellung des Images mit make menuconfig (siehe Freetz Installation?) mit ausgewählt werden. Um später eine Shell auf der Fritzbox zu haben und scp nutzen zu können, sollte auch dropbear mit ins Image. Zuerst wird dann ein Image mit USB-Root erzeugt, das in den Flashspeicher der Fritzbox passt und dann auch wie jedes Image auf die Fritzbox geflasht wird.

Dann kann man sich sein System für den USB-Root zusammen stellen und braucht nicht mehr auf den Platz zu achten. Das USB-Root Paket muss jedoch ausgewählt bleiben! Die Fehlermeldung am Ende, dass das Image zu groß ist, stört hier nicht weiter. Wir benötigen ja nur das erstellte Systeme, das wir in [Freetz-Ordner]/build/modified/filesystem finden.

Es kann eine beliebige Freetz-Version für den USB-Stick verwendet werden. Es muss nicht die gleiche Version verwendet werden, wie sie im Flashspeicher der Fritzbox abgelegt ist. Es muss ausschließlich der Kernel im Flashspeicher zum Kernel des USB-Sticks passen.


Packen, kopieren auf die FritzBox und entpacken

# In den Ordner mit dem neu gebauten Filesystem wechseln:
cd [Freetz-Ordner]/build/modified/filesystem
# Das Filesystem inkl. Symlinks und Unterordnern packen:
tar czf [Freetz-Ordner]/build/modified/rootfs.tar.gz ./*
# Fritzbox von Flash booten lassen, dazu USB-Root im
# Freetz-Webinterface deaktivieren und rebooten.
# Das Archiv auf die Fritz!Box kopieren in den richtigen Ordner kopieren, z.B.:
scp user@my_pc:/home/slightly/freetz-trunk-new/build/modified/rootfs.tar.gz /var/media/ftp/uStor01/rootfs
# "/var/media/ftp/uStor01/rootfs" ist hierbei selbst festgelegt, der USB-Datenträger für USB-Root muss nicht zwingend auf uStor01  
sein 
# und auch "roots" als Ordner ist freigewählt 
# In den Ordner wechseln
cd /var/media/ftp/uStor01/rootfs
# Archiv entpacken
tar xzpf ./rootfs.tar.gz
# Besitz anpassen
chown -R 0.0 /var/media/ftp/uStor01/rootfs

Nun ist im Freetz-Webinterface USB-Root wieder zu aktivieren.


Einbinden von Partitionen

Das Einbinden von weiteren Partitionen funktionierte in frühen Freetz-Versionen nicht, somit mussten diese Partitionen manuell eingebunden werden. In aktuellen Freetz-Versionen funktioniert dies nun, so dass die AVM-Features, welche auf USB-Partitionen speichern, verwendet werden können.

Allerdings gibt es beim Mounten der Partitionen eine Fehlermeldung für die verwendete Root-Partition: da diese bereits gemountet ist, schlägt ein weiterer Mount-Versuch (der "normale" von AVM) natürlich fehl. Dies kann mit ruhigem Gewissen ignoriert werden.

Verbesserungsmöglichkeiten

  1. Direkt per SCP oder rsync aus der Stinky-VM auf die Fritzbox kopieren.
     Wenn man aus Buildsystem (z.B. VM mit STinky) direkt über Netzwerk die Fritzbox per ssh/scp erreichen kann ist der Umweg über einen weiteren PC unnötig. Hier wäre es dann eine direkte Verbindung zwischen Fritzbox und Buildsystem eleganter. Die Variante oben ist aber für entfernte Systeme, ohne von außen erreichbaren SSH-Zugang weiterhin brauchbar.
  2. Die sich wiederholenden Befehle in ein bash-script packen

Debian FreetzBox

Debian.png
Debian.png


  • auf PC mit winrar entpacken
hier entpacken
  • USB Stick in ext2 formatieren und anschließend an Fritzbox anschließen
  • Debian_FritzBox.tar.gz per FTP auf den USB Stick kopieren
  • unter telnet Debian_FritzBox.tar.gz auf USB Stick entpacken mit
tar zxvf Debian_FritzBox.tar.gz

oder

tar xzpf ./Debian_FritzBox.tar.gz
  • Rechte vergeben
chmod 777 /var/media/ftp/uStor01/
  • mounten
mount -t proc proc /var/media/ftp/uStor01/Debian_FritzBox/proc/
  • in chroot Umgebung wechseln
chroot /var/media/ftp/uStor01/Debian_FritzBox/ bash

DebianLenny FreetzBox

tar zxvf fritzDebianLenny.tar.gz


[Zurück zu Hauptseite]