Die FRITZ!Box als Rootserver

Die hier beschriebene Vorgehensweise lässt sich mit aktueller Firmware nicht mehr durchführen. Ich rate daher zur Verwendung von Freetz zur Erstellung modifizierter Firmware-Images.

Ich gebe es zu: So ganz passt die FRITZ!Box nicht in das übliche Beuteschema dieses Blogs. Doch neuere Boxen mit USB-Anschluss lassen sich in einen per DynDNS ständig erreichbaren Server umbauen. Als Webserver kann sogar ein Apache mit PHP dienen und auf Wunsch lädt der Bittorrent-Client ctorrent auch nachts ohne aktivem PC im Netz selbständig Linux-ISOs aus dem Netz.

Wie es funktioniert? Eine uClibc-Chroot-Umgebung auf USB-Festplatte und ein Script, das die Umgebung mountet und einen Dropbear SSH-Server in ihr startet, genügt. Ich habe alle Komponenten vorbereitet und biete sie zum Download an.

Gehen Sie wie folgt vor, um die Chroot-Umgebung zu starten:

  • Partitionieren und formatieren Sie eine USB-Festplatte mit wenigstens zwei Partitionen, Linux Swap mit 128MB oder mehr und Linux Ext2, mindestens 800MB, besser Rest der Platte. Freien Speicher können Sie einer FAT32-Partition zuweisen.
  • Laden Sie den Tarball ucchroot-0927-fritz7170.tar.gz herunter. Mounten Sie die USB-Festplatte, wechseln Sie das Arbeitsverzeichnis und entpacken Sie den Tarball:

    mount /dev/sdx1 /media/sdx1
    cd /media/sdx1
    tar xvzPf /tmp/ucchroot-0927-fritz7170.tar.gz

  • Unmounten Sie die Festplatte und entfernen Sie diese vom PC und verbinden Sie sie mit der FRITZ!Box. Achtung: Notebook-Festplatten ohne externer Stromversorgung müssen via Hub angeschlossen werden!
  • Aktivieren Sie mit einem angeschlossenen Telefon und der Rufnummer #96*7* den Telnet Daemon der FRITZ!Box. Sie können sich jetzt mit dem Befehl

    telnet fritz.box

    auf der FRITZ!Box einloggen.

  • Für das Laden des Ext2-Kernelmoduls, das anschließende Mounten der USB-Festplatte und den Start des SSH-Servers habe ich ein kleines Shellscript erstellt. Laden Sie es auf die Fritzbox

    wget -O /var/tmp/chroot.sh \

    http://fbh.mattiasschlenker.de/7170/chroot.sh

    Wenn Sie mehrere USB-Festplatten an der Fritzbox verwenden, müssen Sie die enthaltenen Variablen für Chroot- und Swap-Partition anpassen. Führen Sie das Script aus:

    sh /var/tmp/chroot.sh

    Während der Ausführung blinkt die Update-LED. Insgesamt läuft das Script ca. 45 Sekunden.

  • Für erste Tests und zum späteren Setzen des Passwortes benötigen Sie eine Shell in der Chroot-Umgebung:

    /var/tmp/chroot/bin/busybox_static chroot \
    /var/tmp/chroot /bin/bash

    Der Prompt ändert sich von einem “#” zu “bash-3.00#”. Setzen Sie das Root-Passwort mit dem Befehl

    passwd

    ACHTUNG: Ohne Root-Passwort können Sie sich später nicht per SSH einloggen!

  • Der SSHD erlaubt es nun, sich mit dem SSH-Protokoll von einem anderen Rechner im lokalen Netz aus mit dem im letzten Schritt vergebenen Passwort in der Chroot-Umgebung anzumelden.
  • Damit Sie die Chroot-Umgebung nicht nach jedem Start der Fritzbox manuell aktivieren müssen, können Sie das Startscript für die Chroot-Umgebung beim Systemstart ausführen lassen. Es genügt, in der per Telnet gestarteten Shell das Script “chroot.sh” an Ihre “debug.cfg” anzuhängen:

    cat /var/tmp/chroot/start_chroot.sh \
    >> /var/flash/debug.cfg

    Starten Sie die Fritzbox über das Webinterface neu und überzeugen Sie sich per SSH-Login davon, dass die Chroot-Umgebung zur Verfügung steht.

In der Chroot-Umgebung steht der bekannte GNU-Compiler genauso zur Verfügung wie viele zur Kompilation benötigter Header-Dateien. Der Bittorrent-Client (in /usr/src) kann beispielsweise mit einem normalen “./configure” für die Kompilation vorbereitet werden.

Sollten Sie weitere Programme installieren, die als Daemon gestartet werden (Webserver, Mailserver), können Sie diese in der Datei “/etc/chroot.sh” eintragen um sie beim Start zu aktivieren.

Viel Spaß!

PS: Bitte keine Fragen in Kommentaren sondern per Mail, ich erweitere ggf. diesen Artikel um eine Art FAQ!

111 thoughts on “Die FRITZ!Box als Rootserver

  1. mail@charlyhamm.de

    das ist echt ne gute sache, klappt echt super.
    total geil.
    werde daran weiter experementieren mit samba, ftp, vielleicht xampp.
    weis noch net. mal sehen.
    aber vom prinzip her doch net schlecht um private webseiten online zu stellen und ftp bereit zu stellen ohne einen rechner laufen zu haben.
    spart doch n haufen strom für privatanwender.
    mal sehen was die box noch kann auf die art. :-)

  2. alf

    hi, das hört sich gut an aber gibt es so eine lösung auch unter windows ich bin in dieser beziehung ein absolute ahnungsloser.
    alf

  3. ralf

    geile sache ist das! :-)
    leider funzt es bei mir aif der 7270 irgendwie nicht :-(

    das Script bricht immer ab und hat probleme mit EXT2?!
    Meldung: ”

    ===> EXT2 fehlt, lade vom Server
    Connecting to fbh.mattiasschlenker.de[88.198.250.132]:80
    ext2.o 100% |**************************************| 61278 00:00 ETA
    insmod: cannot insert `/var/tmp/ext2.o': Success (8): Success
    ===> EXT2 konnte nicht geladen werden!
    Bitte pruefen Sie, ob fbh.mattiasschlenker.de erreichbar ist
    Laden Sie ext2.o ggf. herunter und speichern Sie es auf einem
    USB-Stick oder auf USB-Festplatte. Rufen Sie dann diese Script
    erneut auf.


    schade! Wenn da jemand weiter weiss bitte melden ;-)
    Danke
    ralf

  4. Administrator Post author

    Logge Dich doch mal auf der 7270 ein und schick mir die Ausgabe der Befehle “uname -a”, “df” und “cat /proc/cpuinfo”.

    Noch hab ich bei AVM keine 7270 angefragt (bislang hat auch noch niemand Artikel dazu in Auftrag gegeben), aber das werde ich wohl in den nächsten Tagen tun…

  5. ralf

    Hallo Administrator,

    Ausgaben:
    für “uname -a” ->
    Linux (none) 2.6.19.2 #1 Thu Jan 31 19:30:30 CET 2008 mips unknown

    für “cat /proc/cpuinfo” ->
    system type : MIPS UR8
    processor : 0
    cpu model : MIPS 4KEc V6.8
    BogoMIPS : 359.62
    wait instruction : yes
    microsecond timers : yes
    tlb_entries : 16
    extra interrupt vector : yes
    hardware watchpoint : no
    ASEs implemented :
    VCED exceptions : not available
    VCEI exceptions : not available

    Die Lösung http://kairiek.homeftp.net/projekte/fbwebserver/fbwebserver.htm
    hab ich jetzt zum laufen bekommen, aber leider erhalte ich keinen Zugang wenn ich von extern via Portfreigabe drauf möchte.

    ralf

  6. ralf

    Ha, ich habs hinbekommen! :-))

    ich hab einfach statt eth0:0 das Interface lan:1 genommen dann funzt es auch auf der 7270 mit Portweiterleitung auf 192.x.x.x:Port.

    also: ifconfig lan:1 192.x.x.x netmask 255.255.255.0 up

    Danke
    ralf

  7. Hawker

    hallo ich versuche das jetzt schon seit monaten zum laufen zu bekommen, bekomme aber auch immer wieder diese meldung
    habe eine fbox 7170 und die neuste firmware bekomme es aber einfach nicht hin
    plz helft mir danke

    ===> EXT2 fehlt, lade vom Server
    Connecting to fbh.mattiasschlenker.de[88.198.250.132]:80
    ext2.o 100% |*****************************| 61278 00:00 ETA
    insmod: cannot insert `/var/tmp/ext2.o': Success (8): Success
    ===> EXT2 konnte nicht geladen werden!
    Bitte pruefen Sie, ob fbh.mattiasschlenker.de erreichbar ist
    Laden Sie ext2.o ggf. herunter und speichern Sie es auf einem
    USB-Stick oder auf USB-Festplatte. Rufen Sie dann diese Script
    erneut auf.

  8. Hawker

    ok jetzt geht es es lag an der firmware habe jetzt die erste genommen habe aber noch eine frage warum sagt er No such file or directory

    wenn ich das machen will
    cat /var/tmp/chroot/start_chroot.sh \
    >> /var/flash/debug.cfg

  9. big_blue

    Hi. Habe auch das Problem:
    “/sbin/insmod /var/tmp/ext2.o insmod: cannot insert `/var/tmp/ext2.o': Success (8): Success”

    Ich habe zwar schon ein wenig Linux-Erfahrung und habe schon ein paar Kernel compiliert, doch wäre das hier eine sehr schnelle und elegante Lösung.

    Da die Anleitung unter “http://kairiek.homeftp.net/projekte/fbwebserver/fbwebserver.htm” wohl nicht mehr zur Verfügung steht, würde ich mich freuen, wenn ihr mir bei der Einrichtung für die FritzBox 7270 helfen könntet.

    Danke
    big_blue

  10. claudio

    Hallo,
    ich steh mit meiner 7140 vor dem gleichen Problem und würde mich über Hilfe freuen. Hawker, könntest du evtl. eine Seite mit deiner Lösung veröffentlichen (googlepages.com z.B.)?

    Danke
    Claudio

  11. Hawker

    versuch mal folgendes

    Für das Laden des Ext2-Kernelmoduls, das anschließende Mounten der USB-Festplatte und den Start des SSH-Servers habe ich ein kleines Shellscript erstellt. Laden Sie es auf die Fritzbox

    wget -O /var/tmp/chroot.sh \
    http://www.battle-station.de/test/chroot.sh

    habe einwenig in der chroot.sh geändert bei mir bei der 7170 klappt es auch mit der neusten firmware
    bitte schreib wenn es klappen sollte oder auch nicht danke

  12. claudio

    Hawker,
    danke, hat nicht zu 100% geklappt, bei der Installation ist die Fritzbox gegen Ende nicht weitergekommen, leider hatte ich dann nicht mehr genug Zeit das zu wiederholen, nach Reboot war dann wieder alles weg.
    Ich werd’s noch einmal probieren, danke!
    c.

  13. nico

    zum ext2 problem … zumindest bei der 7270 kann ich sagen, dass ihr einfach »modprobe ext2« eingeben könnt. (also erst reintelnetten und dann »mdopr… ext2« und dann weiter.

  14. Mattias

    Dieser Beitrag ist mittlerweile zwei Jahre alt und daher längst überholt. Aktuelle Firmware bringt ext2 mit, Telnet lässt sich wieder per Kurzwahl aktivieren und beste Ausgangsbasis für eigene Modifikationen ist eine mit http://www.freetz.org/ moderat erweiterte Firmware.

  15. Pingback: Das Rootserver-Experiment » Blog Archive » Das erste (?) Linux-Botnet

  16. ceejay

    Hi!

    Super Script!
    Allerdings bekomme ich eine Fehlermeldung:

    # sh /var/tmp/chroot.sh
    —> 30s Pause. Bitte Geduld…
    BusyBox v1.8.2 (2009-04-22 13:54:57 CEST) multi-call binary

    Usage: insmod MODULE [symbol=value]…

    Load the specified kernel modules into the kernel

    ===> EXT2 fehlt, lade vom Server
    Connecting to 192.168.126.1:800 (192.168.126.1:800)
    ext2.o 100% |*******************************| 61278 –:–:– ETA
    ext2 59392 0
    mbcache 8080 1 ext2
    —> EXT2 bereits geladen
    ===> Erstelle Mountpoint fuer chroot…
    —> Mounte Chroot…
    —> …erfolgreich
    —> Aktiviere Swap…
    Segmentation fault
    —> /dev gemountet…
    —> /proc gemountet…
    ===> Starte dropbear (SSHD im Chroot) und ggf. weitere Scripte in
    /etc/chroot/..
    Segmentation fault
    ……….
    —> Sollten Sie noch kein Passwort fuer root im chroot gesetzt haben,
    erledigen Sie dies bitte jetzt mit dem Befehl

    /var/tmp/passwd.sh

    —> Anschliessen koennen Sie die debug.cfg mit diesem Script ueberschreiben:

    cat /var/tmp/chroot.sh > /var/flash/debug.cfg

    ===> Viel Spass wuenscht das Team von
    Open Source Magazin und Mattias Schlenker!
    #

    Was bedeutet dieses “Segmentation fault”? Ich benutze die Fritzbox 7170
    Mein Stick ist 4GB groß:
    500MB SWAP und der Rest ext2

    Kann mir jemand helfen?

  17. dro53r

    Wie kann ich apt-get auf diesem Linux Installieren,.. bzw. wie heißt das Linux?
    Ist das Debian? Suse? oder sowas??

    mfg dro53r

  18. Andy

    Danke für den netten Bericht, hat mir etwas geholfen. Die Seite gefällt mir außerdem, bitte mach weiter so mit der Seite bzw. dem Blog.

Comments are closed.