ftp & tftp

File Transfer Protocol und Trivial File Transfer Protocol

* Standard (Index)

Das ftp ist in --|> RFC 959 definiert
und dient, wie der Name schon sagt, dazu Dateien zu übertragen.
ftp hat einige Besonderheiten, so werden z.B. über TCP Port 21 Befehle und über
TCP Port 20 Daten übertragen, ausserdem arbeiten die Datentransfers nicht
im Hintergrund und somit auch ohne Spooler.
Steuerbefehle werden als ASCII Text im (von telnet bekannten) NVT-Format
übertragen und von LineFeed teminiert. Die Befehle sind maximal 4 Zeichen lang
(z. B. PWD und SYST) und werden von einem Rückmeldecode aus 3 Ziffern
beantwortet. Die Codes 100-399 sind positiv, 400-599 negative Rückmeldungen.
Da die Fehlermeldungen in ASCII gehalten sind, kann man z. B. mittels telnet
direkt mit dem ftpdaemon kommunizieren und so debugen.
ftp nutzt zur Sicherung der Übertragung die vorhandenen TCP/IP Funktionen in dem
jede Datenübertragung über eine TCP Verbindung läuft.
Dieses Verhalten macht das ftp gerade in Bezug auf Sicherheit und Paketfilter
äußerst schwierig zu handlen. (Um nicht zu sagen das ftp in der selben Hölle wie
telnetd, BIND oder Sendmail aufs gröbste gefoltert werden sollte.)
Unter Unix werden die beiden Übertragungsmodi Text und Binary eingesetzt, obwohl
as ftp grundsätzlich z. B. auch Kompression anbieten könnte.
Im Binärmodus werden die Daten als simple Abfolge von Bytes übertragen, so das
gerade zwischen verschiedenen Betriebsystemen Probleme mit den Dateien und dem
Zeilenumbruch auftreten. Deshalb werden im Textmodus die Zeilenenden einer Datei
in CR/LF umgewandelt.

* Eine Sitzung (Index)

Eine ftp Sitzung wird für gewöhnlich mit ftp rechnername portnummer
eröffnet wobei die Portnummer bei einem Server der auf Port 20 läuft weggelassen
werden kann. Es existieren unterschiedliche ftp-Clients die allerdings meist
die gleichen grundlegenden Befehle implementieren.

* Beispiel einer ftp-Session (Index)

stefan@ArwenOfRivendell:~ $ ftp releng.netbsd.org
Connected to releng.netbsd.org.
220 releng.netbsd.org FTP server (NetBSD-ftpd 20020214) ready.
Name (releng.netbsd.org:stefan): anonymous
331 Guest login ok, type your name as password.
Password:
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||60706|)
150 Opening ASCII mode data connection for '/bin/ls'.
total 16
d--x--x--x  2 0  0    512 May 29 17:42 bin
d--x--x--x  2 0  0    512 Feb 18 20:18 etc
drwxrwx--x  3 0  125  512 May 31 10:39 hidden
drwxrwxr-x  4 0  125  512 Jun 25 17:53 pub
226 Transfer complete.
ftp> help
Commands may be abbreviated.  Commands are:

!           debug       help        mode        preserve    restart     system
$           delete      idle        modtime     progress    rhelp       tenex
account     dir         image       more        prompt      rmdir       throttle
append      disconnect  lcd         mput        proxy       rstatus     trace
ascii       edit        less        msend       put         runique     type
bell        epsv4       lpage       newer       pwd         send        umask
binary      exit        lpwd        nlist       quit        sendport    unset
bye         fget        ls          nmap        quote       set         usage
case        form        macdef      ntrans      rate        site        user
cd          ftp         mdelete     open        rcvbuf      size        verbose
cdup        gate        mdir        page        recv        sndbuf      xferbuf
chmod       get         mget        passive     reget       status      ?
close       glob        mkdir       pdir        rename      struct
cr          hash        mls         pls         reset       sunique
ftp>
Der Befehl help listet die möglichen Kommandos auf und mit help Befehl kann man
eine Kurzhilfe zum Befehl bekommen.
Wie bereits erwähnt lässt sich ein ftpserver auch per telnet ansprechen, dies
ist nachfolgend einmal dargestellt
stefan@ArwenOfRivendell:~ $ telnet releng.netbsd.org 21
Trying 166.84.0.12...
Connected to releng.netbsd.org.
Escape character is '^]'.
220 releng.netbsd.org FTP server (NetBSD-ftpd 20020214) ready.
help
214-
    The following commands are recognized.
    (`-' = not implemented, `+' = supports options)
    USER    REIN-   TYPE    ALLO    MKD     HELP    MIC     MLST+   MSND-
    PASS    PORT    STRU    REST    PWD     NOOP+   CONF    MLSD    MSOM-
    ACCT-   LPRT    MODE    RNFR    LIST    AUTH    ENC     MAIL-   XCUP
    CWD     EPRT    RETR    RNTO    NLST    ADAT    FEAT    MLFL-   XCWD
    CDUP    PASV    STOR    ABOR    SITE    PROT    OPTS    MRCP-   XMKD
    SMNT-   LPSV    STOU    DELE    SYST    PBSZ    MDTM    MRSQ-   XPWD
    QUIT    EPSV    APPE    RMD     STAT    CCC     SIZE    MSAM-   XRMD
214 Direct comments to ftp-bugs@releng.netbsd.org. 

* tftp (Index)

Das tftp ist eine Minimalimplementierung des ftp und ist ursprünglich im RFC 783
definiert, welcher aber durch RFC 1350 obsoleted wurde.
Anders als ftp läuft tftp über UDP ab, genauer gesagt über UDP Port 69.
Ebenfalls bietet tftp kein Login, sondern erlaubt Zugriff auf alle Dateien
Die ------rw- gesetzt sind, weiterhin muss tftp mittels Zeitüberwachung
und Paketwiederholung die Integrität der Pakete sichern.
Da das tftp sehr minimial gehalten ist und innerhalb weniger kB Speicher
implementiert werden kann, wird es z.B im X11 oder im Diskless
Client-Breich eingesetzt.
Das tftp verwendet nur einige wenige Protokollcodes:
Read Request - RRQ
Write Request - WRC
Data Send - DATA
Acknowledgment - ACK
Error - ERROR
Die Verbindung wird mit RRQ/WRQ aufgebaut und es werden Transaktions IDs
vereinbart. Mit DATA werden die Daten übertragen und mit ACK oder ERROR
quittiert. Die Verbindung wird nach einem Paket das kleiner
als 512 Bytes ist beendet.

Wie auch telnet gestaltet sich ftp/tftp in Bezug auf Sicherheit extrem problematisch,
da auch hier wieder der Traffic unverschlüsselt übertragen wird. Es existiert
(ausser vielleicht einem Anonymous-ftp Server) kein Grund einen ftpd zu betreiben,
wenn er aber eingerichtet werden muss sollte er wenigstens gejailt (chrooted)
werden. Als Alternative bietet sich der sftpd von OpenSSH an, welcher auch in
Anbetracht eines Paketfilters wesentlich pflegeleichter ist.

net-tex.de, Index
\$Id: ftp.html,v 1.29 2014/08/21 09:23:55 stefan Exp $


$Log: ftp.html,v $ Revision 1.29 2014/08/21 09:23:55 stefan Umlaute und Makefile clean up

Autor: Stefan Schumacher für net-tex.de/cryptomancer.de, PGP-Key 0xB3FBAE33

Bitte beachten Sie, das die Seite inhaltlich seit Ende 2007 nicht mehr gepflegt wird!
Aktuellere Informationen erhalten Sie auf Kaishakunin.com