.titleBar { margin-bottom: 5px!important; }

Telnet, SSH, FTP, Wake-on-LAN auf Fritz!Box WLAN 3050 - Erfahrungsbericht

Dieses Thema im Forum "AVM" wurde erstellt von kriegaex, 8 Nov. 2006.

?

Ist die Beschreibung in dieser Form nützlich?

  1. Ja, alles gut nachvollziehbar

    33.3%
  2. Einigermaßen, aber ich mußte noch tüfteln.

    41.7%
  3. Mehr Fragen offen als beantwortet

    8.3%
  4. Völlig nutzlos

    16.7%
  1. kriegaex

    kriegaex Aktives Mitglied

    Registriert seit:
    7 Nov. 2006
    Beiträge:
    2,927
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Projektmanagement-Coach (Certified Scrum Professio
    Ort:
    Großraum Nürnberg
    #1 kriegaex, 8 Nov. 2006
    Zuletzt bearbeitet: 21 Nov. 2006
    Hallo zusammen!

    Nachdem ich zwei Tage daran herum gefummelt habe und nun alles zur Zufriedenheit läuft, möchte ich mal eben kurz berichten, was mir Probleme bereitet hat und wie es dann schließlich doch klappte. Ich nehme an, anderen Nicht-Linuxern geht es ähnlich, darum zähle ich mal auf, was ich aus dem Gedächtnis noch weiß bzw. auf meiner Festplatte angesammelt habe.

    Man sollte ja immer ein Ziel vor Augen haben, und meines war Folgendes:
    • Telnet-Zugang (LAN)
    • FTP-Server (LAN)
    • SSH-Server (LAN und WAN)
    • Wake-on-LAN-Skript zum Aufwecken meines ausgeschalteten Rechners von außen (WAN)
    Das alles, wohlgemerkt, ohne Neukompilieren der Firmware!

    Anleitungen zum erstmaligen Starten des Telnet-Daemons (Windows-User nennen das wohl einen Dienst) gibt es ja sowohl hier im Forum als auch auf tecchannel.de (Artikel-Serie mit Fritz!Box-Hacks). Das Shell-Skript, welches den Daemon erstmalig hochfährt, sieht so aus:

    Code:
    #! /bin/sh
    /usr/sbin/telnetd -l /sbin/ar7login
    exit 0
    Es muß mit UNIX-Zeilenenden(!) abgespeichert werden (TextPad und hundert andere Windows-Editoren können das), danach in ein tar-Archiv verpackt werden. Allerdings nicht in irgendeines, wie ich feststellen mußte, sondern in eines im alten Format. Das habe ich mit GNU-tar 1.15 nicht hinbekommen, nur mit Version 1.13. Das liegt daran, daß die tar-Version in der aktuellen Firmware (16.04.07) noch ein altes tar beinhaltet. Versucht habe ich es auf einer in VMware gestarteten Knoppix- bzw. Kanotix-Umgebung. Später fand ich, ebenfalls über dieses Forum, heraus, daß das Ganze auch einfacher zu bewerkstelligen ist, nämlich unter Windows mit cygwin. Keine Angst, eine komplette cygwin-Umgebung braucht man nicht. Stattdessen lädt man sich einfach die Mini-Version samt altem tar als Anhang zu diesem Artikel herunter. Eine Beispiel-Kommandozeile wird dort auch genannt, nämlich diese:

    Code:
    tar.exe --owner 0 --group 0 -cf beispiel.image var/install
    Dabei muß das Skript vom Anfang dieses Artikels in der Datei var/install gespeichert sein. Sicherheitshalber kann man sogar mit --mode +rwx noch die Rechte setzen.

    Diese Datei übertrug ich dann nach Anleitung vom TecChannel als Pseudo-Firmware-Update auf die Fritz!Box und versuchte gleich anschließend einen Telnet-Connect von der Windows-Kommandozeile (cmd.exe):

    Code:
    telnet fritz.box
    Leider klappte das nicht, ich mußte den Stecker ziehen und den Router neu hochfahren. Danach waren die Änderungen natürlich weg. Also modifizierte ich das Skript so, daß es nicht nur den Telnet-Daemon direkt startete, sondern den Start auch direkt in der Boot-Sequenz verankerte. Das geht über die Modifikation der Datei /var/flash/debug.cfg, und zwar so (ist auch nicht auf meinem Mist gewachsen):

    Code:
    #! /bin/sh
    echo "/usr/sbin/telnetd -l /sbin/ar7login" > /var/flash/debug.cfg
    /usr/sbin/telnetd -l /sbin/ar7login
    exit 0
    Nochmal geflasht, wieder nix direkt im Anschluß. ABER - nach dem erneuten Reboot war der Telnet-Zugang frei (Paßwort der Web-Oberfläche eingeben).

    Wenn man so weit erst mal ist, ist der Rest dann wesentlich einfacher.

    Anmerkung: Benutzer einer Fritz!Box SL haben es, nach allem, was ich gelesen habe, schwerer, denn auf ihren Systemen ist aus Platzgründen kein telnetd installiert. Es gibt einen Mod, um Telnet auf der SL zu installieren, aber man gewinnt nicht viel dadurch, da aus Platzgründen kein SSH oder FTP zusätzlich drauf paßt. Wenn man riskieren möchte, unverschlüsselt von außen über Telnet an die Box heran zu gehen, kann man es natürlich trotzdem machen. (Uaaah, Alptraum!)

    Jetzt hat man also Online-Zugriff auf die Linux-Umgebung in der Fritz!Box und kann von der Kommandozeile aus ziemlich viel machen. Die Shell bietet sogar Tab Completion und Cursor-Steuerung (Pos1, Ende usw.). Es ist interessant, mal die ganze Umgebung zu erkunden und diverse Skripten anzuschauen, um zu sehen, wie das Embedded Linux tickt. Man entdeckt z.B., daß diverse Kommandos (u.a. auch telnetd) in Wirklichkeit auf die BusyBox, eine Art komprimierte Allzweckwaffe, verweisen. Hier würde man auch ansetzen, wenn man sich einen eigenen Kernel bzw. ein eigenes Filesystem-Image bauen würde. Aber wir werden ohne das auskommen.

    Weiter geht's mit der Installation und Inbetriebnahme eines FTP-Servers, eines SSH-Servers und eines kleinen Werkzeugs, mit dessen Hilfe wir einen PC hinter dem Router (also im LAN) aus dem ausgeschalteten Zustand hochfahren können. An dieser Stelle verweise ich wieder auf einen TecChannel-Artikel aus der o.g. Serie. Er zeigt sehr schön schrittweise, wie man die Komponenten nach und nach installiert und testet. Am Ende wird dann in einem etwas größeren, aber immer noch simplen Skript alles auf einmal gemacht. D.h., am Ende ist man so weit, daß alle benötigten Programme und Skripten bei jedem Neustart der Box mittels wget online heruntergeladen und gestartet werden. Das verursacht zwar ein paar hundert KB Traffic und ist auf die Verfügbarkeit der entsprechenden Webseite angewiesen, funktioniert aber problemlos. Übrigens habe ich mir alles Nötige auf meine eigene Webseite kopiert und lade es von dort, damit nicht eines Tages die Tools auf TecChannel verschwunden sind und ich dumm dastehe.

    Ich habe das Haupt-Skript wieder am PC bearbeitet. Drei Stellen muß man anpassen; wenn man die Software auf die eigene Homepage legt, paßt man außerdem noch die Download-Adressen an. Nach der Bearbeitung übertrug ich es per FTP auf die Box, das fiel mir leichter als die Benutzung des vorinstallierten nvi auf der Box.

    Achtung: Eine Anpassung muß man dann doch online auf der Box machen, nämlich die der Routing-Tabelle innerhalb von /var/flash/ar7.cfg, um einen Tunnel von außen in die Box für SSH zu bauen. Das geht über die Web-Oberfläche nicht, weil AVM das verbietet (Sicherheitsrisiko bei unerfahrenen Benutzern). Wie es gemacht wird, steht auch im TecChannel-Artikel, aber ich poste hier noch ein paar kleine nvi-Tips, mit denen man auch als Nicht-UNIXer zurecht kommen sollte (Infos stammen auch irgendwo aus dem WWW):

    Code:
    Mit der "Einfügen"-Taste kann zwischen Replace und Insert umgeschaltet werden.
    Replace = Zeichen durch neue Überschreiben
    Insert = Zeichen anfügen
    Mit "ESC" kommt man wieder in den Command Modus um Commands an das Programm abzusetzten 
    Im Command Modus 
    x = Zeichen an Curserposition löschen
    dd = Ganze Zeile löschen
    :q = Beenden 
    :w = Nur Speichern
    :x = Speichern & Beenden
    Man könnte theoretisch auch Tunnels für FTP oder HTTP (Web-Oberfläche der Box) bauen, aber das würde ich lieber lassen. SSH genügt, um eine Kommandozeile zu kriegen und von dort aus das Wake-on-LAN-Tool aufzurufen. Dann ist der Heim-PC "wach", und man kann ihn fernsteuern. Der TecChannel-Artikel erklärt, wie das mit RDP (Windows-Bordmittel) geht, ich selbst verwende UltraVNC als Dienst.

    Was fehlt noch? Ach ja, wenn man das Haupt-Skript bearbeitet, erklärt wiederum der TecChannel-Artikel, wie man aus Benutzername und Paßwort einen entsprechenden Hash für die passwd- bzw. shadow-Datei erzeugen kann. Der Verweis auf die dort genannte Webseite scheint aber zumindest heute nicht zu funktionieren, darum ein Tip: Einfach mal im kostenlosen VMware-Player oder direkt von CD ein Knoppix, Kanotix, grml oder was weiß ich booten und darin einen Benutzer mit entsprechendem Paßwort anlegen. Dann dort die entsprechende Zeile aus der /etc/shadow-Datei mit dem editierten Skript in die Box kopieren (z.B. über den Umweg, sie von Linux aus erst auf einen USB-Stick zu speichern oder innerhalb von VMware mittels Netzwerk-Verbindung [smbclient und darin put] auf einen Windows-Share legen).

    Wem manche Teile dieses Berichts nichts sagen, sei auf die hier im Text enthaltenen Links verwiesen. Insbesondere die TecChannel-Artikel erklären das, was ich hier nicht wiederholt habe.

    Noch Fragen? Ich hoffe, ich kann bei Bedarf helfen, obwohl ich auch ein Newbie in der Materie bin.

    P.S.: Bevor ich mittels Telnet auf die Box kam, habe ich mir mal die Firmware-Sourcen von AVM gezogen. Was aber noch mehr brachte, war das Auseinandernehmen des in der Original-Firmware enthaltenen filesystem.image mittels dumpsquashfs - das habe ich auch innerhalb eines Knoppix gemacht. Danach dann alles per tar wieder zusammenpacken, nach Windows transferieren und dort bequem drin herum stöbern. So fand auch auch heraus, daß tatsächlich der telnet-Daemon auf der 3050 enthalten ist. Später bestätigte mir auch der hier sehr rührige Experte danisahne, daß dem so sei. An dieser Stelle herzlichen Dank an ihn. Aber am Ende geht doch nix über den Online-Zugriff (den man halt erst mal haben muß).

    P.S. (2): Wer lieber auf die Downloads nach jedem Fritz!Box-Reboot verzichten möchte, kommt wohl kaum um ein Neukompilieren zumindest des filesystem.image bzw. der BusyBox herum. Wie das geht, steht hier im Forum auch irgendwo, aber ich habe es mir Mangels Erfahrung nicht angetan und habe diesen minimal-invasiven Weg eingeschlagen.

    P.S. (3): Auf der AVM-FTP-Seite sollte man sich vorsichtshalber mal das Recover-Tool ziehen, falls man mal nicht mehr an die Box herankommt (selbst nach Reboot reagiert die Web-Oberfläche nicht) und sie komplett resetten will. Achtung: Die aktuelle Version der Software spielt wieder die veraltete Firmware 16.03.99 auf. Darum vor dem Loslegen zweierlei machen:
    1. In der Web-Oberläche unter "Einstellungen" -> "System" -> "Einstellungen sichern" sämtliche Einstellungen in eine Datei speichern. Notfalls kann man nach einem Recover schnell wieder beim gleichen Menüpunkt alles wiederherstellen.
    2. Die aktuelle Firmware 16.04.07 bereithalten, um sie nach einem evtl. Recover sofort wieder einzuspielen, noch bevor man die Einstellungen wiederherstellt.
    Beide Schritte dauern alles in allem vielleicht zehn Minuten, evtl. auch fünfzehn, wenn der notwendige Reboot bei Eurem PC langsam ist.

    Puh, das soll's gewesen sein. Ich wollte einfach was von dem zurückgeben an Euch alle, was ich hier und anderswo erfahren habe, denn ein Puzzle aus verschiedenen Quellen hat mich zur Lösung gebracht, auf die ich selbst nie gekommen wäre. AVM war auch nicht hilfreich ("nicht unterstützt, kein Support"), obwohl der dortige Support ansonsten nach meiner Erfahrung gut ist.

    History:
    * 08.11.2006: Artikel eingestellt
    * 21.11.2006: Die Fritz!Box heißt 3050, nicht 5030 - an einer Stelle war das falsch.