Triviale Übertragungen mit TFTP, Teil 3: Verwendung
In den vorangegangenen Artikeln haben wir TFTP vorgestellt und erörtert, warum Sie es verwenden sollten, und wir haben uns verschiedene Konfigurationsoptionen angesehen. Nun wollen wir versuchen, einige Dateien zu verschieben. Da Sie nun wissen, wie Sie Ihren Server ein wenig besser absichern können, können Sie dies beruhigt tun.
Test 1, 2, 3
Um Ihren Server zu testen, brauchen Sie natürlich einen Client, mit dem Sie sich verbinden können. Glücklicherweise können wir einen solchen sehr einfach installieren:
# apt-get install tftp
Red Hat Derivate sollten eine Client-Installation wie folgt verwalten:
# yum install tftp
Wenn Sie die IP-Adresse Ihres Servers mit einem Befehl wie dem folgenden nachschlagen, dann ist es möglich, sich von überall her mit Ihrem TFTP-Server zu verbinden (vorausgesetzt natürlich, dass Ihre TCP Wrappers-Konfiguration oder IPtables-Regeln dies zulassen).
# ip a
Sobald Sie die IP-Adresse kennen, ist es sehr einfach, loszulegen. Sie können sich vom Client aus wie folgt mit dem Server verbinden:
# tftp 10.10.10.10
Jetzt sollten Sie verbunden sein. (Wenn das nicht funktioniert, überprüfen Sie Ihre Firewall oder „telnet“ Sie zu Port 69 auf der IP-Adresse Ihres TFTP-Servers). Als nächstes können Sie einen „Status“-Befehl wie folgt ausführen:
tftp> statusConnected to 192.168.0.9.Mode: netascii Verbose: off Tracing: offRexmt-interval: 5 seconds, Max-timeout: 25 seconds
An dieser Stelle ziehe ich es vor, eine ausführliche Ausgabe zu verwenden, indem ich einfach diesen Befehl eingebe:
tftp> verbose
Sie können wählen, ob Sie Binärdateien oder reine Textdateien herunterladen möchten, indem Sie dies für reinen Text eingeben:
tftp> ascii
Oder Sie können erzwingen, dass Binärdateien korrekt heruntergeladen werden mit:
tftp> binary
Um uns etwas Inhalt zum Herunterladen zu geben, habe ich eine einfache Textdatei wie folgt erstellt:
# echo hello > HERE_I_AM
Das bedeutet, dass die Datei HERE_I_AM das Wort „Hallo“ enthält. Dann habe ich diese Datei in unser Standard-TFTP-Verzeichnis verschoben, das wir bereits in der Hauptkonfigurationsdatei /etc/inetd.conf verwendet haben. Dieses Verzeichnis – von dem aus unser treuer Daemon arbeitet – heißt /srv/tftp, wie wir in Listing 3 sehen können.
Da es sich nur um eine einfache Textdatei handelt, ist es nicht nötig, den Binärmodus zu aktivieren, und wir haben bereits verbose geschrieben, so dass es jetzt nur noch darum geht, unsere Datei zu übertragen.
Wenn Sie mit FTP auf der Kommandozeile vertraut sind, werden Sie keine Schwierigkeiten haben, die Sprache zu verstehen. Es ist einfach „get“ zum Empfangen und „put“ zum Platzieren. Meine Beispieldatei HERE_I_AM kann wie folgt abgerufen werden:
tftp> get HERE_I_AMgetting from 192.168.0.9:HERE_I_AM to HERE_I_AM Received 7 bytes in 0.1 seconds
Das obige Beispiel bietet die ausführliche Ausgabe, wenn dieser Modus aktiviert ist. Sie können nützliche Informationen entnehmen, wie zum Beispiel, dass wir nicht den Binärmodus, sondern nur den „netascii“-Modus verwenden. Außerdem können Sie sehen, wie viele Bytes übertragen wurden und wie schnell. In diesem Fall waren die Daten sieben Bytes groß und brauchten eine Zehntelsekunde, bei einem halben Kilobyte (oder so) pro Sekunde, um sie zu übertragen.
Vergleichen Sie das mit der Ausgabe im Non-Verbose-Modus, und Sie werden sicher zustimmen, dass es sich lohnt:
tftp> get HERE_I_AMReceived 7 bytes in 0.0 seconds
Wenn Sie das Bedürfnis haben, die Portnummer Ihres TFTP-Servers zu verschleiern, dann müssen Sie nach der Bearbeitung der Datei /etc/services eine Verbindung mit Ihrer Client-Software herstellen, und zwar so:
# tftp 10.10.10.10 11111
Zusätzlich sollten Sie sich nicht davor scheuen, mehrere Dateien in einer Zeile anzufordern. Verwenden Sie dazu die folgende Syntax:
# get one.txt two.txt three.txt four.txt five.txt
Wenn Sie auf Probleme stoßen, gibt es eine Reihe von Möglichkeiten zur Fehlerbehebung. Sie könnten zum Beispiel eine gesättigte Netzwerkverbindung aufgrund eines Broadcast-Sturms haben oder ein fehlerhaftes Gerät, das seltsame Netzwerksonderbarkeiten verursacht. Sie werden jedoch erfreut sein zu erfahren, dass Sie die Zeitüberschreitungen anpassen können. Zunächst können wir von der TFTP-Client-Eingabeaufforderung aus Zeitüberschreitungen pro Paket wie folgt einstellen:
tftp> rexmt 10
Das zeigt uns, wie wir die Zeitüberschreitungen für die erneute Übertragung pro Paket auf 10 Sekunden einstellen.
Um die Zeitüberschreitung für die gesamte Transaktion einzustellen, nehmen Sie die folgende Einstellung wie folgt vor:
tftp> timeout 30
Ein weiteres nützliches Werkzeug für die Fehlersuche ist die „Trace“-Funktion. Sie kann wie folgt aktiviert werden:
tftp> tracePacket tracing on.
Jetzt sieht jede Übertragung sehr verrauscht aus, wie unten, was bei der Fehlersuche helfen sollte:
tftp> get HERE_I_AMsent RRQ <file=HERE_I_AM, mode=netascii>received DATA <block=1, 512 bytes> sent ACK <block=1> received DATA <block=2, 512 bytes>sent ACK <block=2> received DATA <block=3, 512 bytes>
Aus den obigen Informationen sollten Sie erkennen können, an welchem Punkt eine Übertragung fehlschlägt und vielleicht ein Verhaltensmuster erkennen können.
Wenn Sie die Eingabeaufforderung des TFTP-Clients verlassen wollen, genügt es übrigens, die Taste „q“ zu drücken.
In diesem Abschnitt haben wir gesehen, wie man Dateien von einem TFTP-Server konfiguriert und empfängt. Wie bereits erwähnt, ist es eine gute Idee, den Port 69 von der Außenwelt abzuschirmen, wenn Sie mit dieser Software experimentieren und insbesondere, wenn Sie sie in der Produktion einsetzen.
Ich empfehle, dass Sie entweder Ihren Server abriegeln, so dass nur einige wenige Rechner darauf zugreifen können, indem Sie IPtables oder TCP Wrappers verwenden. Obwohl es sich um eine ältere Technologie handelt, ist TFTP zweifellos immer noch ein nützliches Werkzeug, das man in seinem Werkzeugkasten haben sollte, und es sollte nicht abgetan werden, weil es nur für die Weitergabe von Konfigurationen an Workstations oder Server beim Hochfahren nützlich ist.
Systemd
Zufälligerweise können Sie den TFTP-Server auf modernen systemd-Systemen mit diesem Befehl starten und stoppen (oder ihn nach einer Konfigurationsänderung neu starten), indem Sie „stop“ durch „restart“ oder „start“ ersetzen.
# systemctl stop openbsd-inetd
Auf älteren Systemen brauchen Sie sich nicht daran zu erinnern, dass in den meisten Fällen einer dieser Befehle ausreicht.
# /etc/init.d/openbsd-inetd start# service openbsd-inetd restart
Ändern Sie einfach openbsd-inetd in den Namen des entsprechenden inetd- oder xinetd-Skripts für Ihre Distribution. Denken Sie daran, dass Sie die Namen der Dienste herausfinden können, indem Sie einen Befehl wie diesen ausführen:
# ls /etc/init.d
Dies funktioniert sogar bei modernen systemd-Versionen, aber Sie müssen sich das resultierende Dateilisting genau ansehen, denn seien wir ehrlich, Conduits zu „inetd“ werden in manchen Kreisen als rückständig angesehen und haben seltsame Dateinamen.
EOF
Wenn Sie sich dazu entschließen, Ihr Leben selbst in die Hand zu nehmen und TFTP über das Internet zu nutzen, lassen Sie mich ein Wort der Warnung aussprechen, nun ja, eigentlich ein Akronym: NAT. Wenn die Netzwerkadressübersetzung bei Fernverbindungen eine Rolle spielt, können Sie mit TFTP-Übertragungen Probleme haben, da diese UDP verwenden. Damit dies funktioniert, muss der NAT-Router als ein etwas fortschrittlicherer Proxy fungieren. Sie könnten sich die renommierte Sicherheitssoftware pfSense ansehen, die offensichtlich helfen kann.
Wir haben uns eine Reihe von TFTP-Funktionen angesehen. Natürlich gibt es bestimmte Umstände, unter denen das ausgezeichnete TFTP ein nützliches Werkzeug ist, das schnell und effektiv mit wenig Konfiguration eingesetzt werden kann.
In anderen Fällen ist TFTP zugegebenermaßen nicht ganz ausreichend, um die Anforderungen zu erfüllen. In solchen Fällen sind sFTP und Standard-FTP vielleicht besser geeignet. Bevor Sie sich jedoch auf die Suche nach diesen Paketen begeben, sollten Sie einen Blick darauf werfen, ob die von Ihnen benötigten Funktionen im TFTP-Toolkit enthalten sind. Sie werden vielleicht angenehm überrascht sein, was Sie vorfinden. Schließlich stammen viele der Tools, die wir heute verwenden, aus der Zeit, aus der TFTP stammt.
Chris Binnie ist technischer Berater mit 20 Jahren Linux-Erfahrung und Autor für das Linux Magazine und das Admin Magazine. In seinem neuen Buch „Linux Server Security: Hack and Defend“ zeigt er Ihnen, wie Sie ausgeklügelte Angriffe starten, Ihre Server unsichtbar machen und komplexe Passwörter knacken können.
Bringen Sie Ihre Karriere in der Linux-Systemadministration voran! Schauen Sie sich den Kurs „Grundlagen der Systemadministration“ der Linux Foundation an.
Lesen Sie frühere Artikel:
Triviale Übertragungen mit TFTP, Teil 1: Warum es verwenden?
Triviale Übertragungen mit TFTP, Teil 2: Konfiguration