FTP File Transfer Protocol
Willemers Informatik-Ecke
FTP ist ein Protokoll, um Dateien über ein Netzwerk von einem Computer auf einen anderen zu übertragen.

Client und Server

Ein FTP-Server muss in der Regel installiert werden. Ein Kommandozeilen-Client ist auf Linux- und UNIX-Maschinen meist standardmäßig vorhanden.

Server

Wird ein Server auf einer Linux- oder UNIX-Maschine installiert, erhält standardmäßig jeder Benutzer ein FTP-Account. Damit können die Dateien in seinem Heimatverzeichnis gelesen und geschrieben werden.

Der Zugang wird über Benutzername und Kennwort geregelt und entspricht denen des Betriebssystems.

Zusätzlich kann ein Konto für den Benutzer anonymous eingerichtet werden. Das erlaubt einen Dateibereich ohne Passwort. Das Passwort wird zwar angefordert, aber ignoriert.

Client

Der FTP-Client wird über den Befehl ftp aufgerufen. Als Argument wird die IP-Adresse oder der Name des Servers angegeben.

Ist der Server erreichbar, fragt er in zwei Schritten nach Benutzerkennung und Passwort.

$ ftp 192.168.0.50
Connected to 192.168.0.50.
220 (vsFTPd 3.0.3)
Name (192.168.0.50:linux): bob
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
Damit befindet man sich in einer FTP-Kommandozeile und kann Dateien übertragen, Verzeichnisse erstellen, wechseln und löschen sowie Informationen über die Serverseite gewinnen. Mit dem Befehl quit kann man die FTP-Kommandozeile verlassen.

Die Befehle der Kommandozeile lauten:

Neben den Kommandozeilentools stehen auch grafische FTP-Clients zur Verfügung, wie beispielsweise Filezilla.

In manchen Fällen wird auch der Browser (Firefox o.ä.) als FTP-Client verwendet, da FTP beim Übertragen von Dateien effizienter ist als HTTP.

Auf der Paketebene

Der Ablauf einer Kommunikation zwischen Client und Server erfolgt durch folgende Pakete:

Client-Befehle

Der Client sendet vierbuchstabige Befehle an den Server auf Paketebene.

Serverantworten

FTP Aktiv- und Passivmodus

Bei der Übertragung der Dateien wird im Standardfall (aktiv) die Anforderung von Dateien zunächst durch den Client initiiert. Das eigentliche Übertragen startet allerdings der Server. Diese Verdrehung der Richtung hat NATs fatale Folgen, die zu Zeiten der Entwicklung des Protokolls nicht abzusehen waren. Darum gibt es bei FTP nun einen Aktiv- und einen Passivmodus.

Aktiv

Eine klassische Dateiverbindung läuft auf folgende Weise ab:

Der Client sendet über Port 12345 seinen Befehl an Port 21 des Servers. -->
<--   Der Server bestätigt den Befehl auf der Kontrollleitung
<--   Der Server sendet Daten über Port 20 auf Port 12345 des Clients.
Der Client sendet an Server die Bestätigung. -->

Problem: Der Server sendet über den Port 20 scheinbar unaufgefordert an den Client. Das gibt Ärger mit der NAT.

Hintergrund: Heute verwenden die lokalen Netzwerke private IPv4-Adressen, da die internetfähigen IPv4-Adressen Mangelware sind. In der Regel hat nur der Router eine solch wertvolle IPv4-Adresse.

Damit trotzdem alle surfen können, beauftragt jeder PC die NAT im Router mit seiner Anfrage. Die NAT merkt sich den Auftraggeber, sendet die Anfrage mit seiner internetfähigen IP-Adresse an den Server und wartet auf die Antwort.

Erhält die NAT die Antwort, schaut sie in der NAT-Tabelle nach, wer die Anfrage beauftragt hat und schickt ihm das Ergebnis.

Kommt nun der FTP unaufgefordert mit seinen Daten über den Port 20 in die NAT, kann sie keinen Auftraggeber finden und wird das Paket verwerfen.

Passiv

Eine Lösung ist, dass die Initialisierung der Datenübertragung an den Client übergeben wird. Der Server meldet seine Bereitschaft zum Senden und den Port, über den er senden will und der Client fragt noch einmal explizit nach. Damit sind dann sowohl NAT als auch Firewall zufrieden.

Client sendet seinen Befehl an Port 21 des Servers. -->
<--   Server meldet dem Client, das er über Port 4321 Daten senden will.
Der Client initialisiert an Server die Rücksendung von Daten. -->
<--   Der Server sendet Daten über Porst 4321 an Port 12345 des Clients.

Das Client-Server-Schema ist wieder hergestellt und die Firewall und das NAT müssen sich nicht aufregen.

Konkurrenz

Für das FTP-Protokoll stehen inzwischen einige Alternativen zur Verfügung.

Up- und Download im Internet

Lange Zeit wurde FTP als effizientes Protokoll für den Up- und Download im Internet verwendet. Inzwischen ermöglicht HTTP 2.0 auch die effiziente Übertragung von binären Dateien ohne ein Umwandlung in Base64. HTTPS bietet überdies die Mögichkeit einer Verschlüsselung.

Ebenfalls auf HTTP basieren Cloud-Lösungen wie beispielsweise NextCloud. Diese ermöglichen die sichere Auslagerung ohne Einbindung in das lokale Dateisystem.

scp, rsync Kopierbefehle über das Netzwerk

Zur Ablösung des Fernwartungstools telnet, mit dem man eine Shell auf einem fremden Rechner starten konnte, wurde SSH entwickelt. Dieses sorgt für eine Verschlüsselung und eine flexible Authentifizierung sowohl per User und Passwort als auch per Zertifikat. Darüber hinaus wird auch der Austausch des Zielrechners bemerkt (Man in the Middle-Angriff).

Mithilfe der SSH-Bibliothek ist es auch möglich, Dateien über das Netzwerk zu übertragen. Diese Übertragung kann die gleichen Sicherheitsstandards erfüllen. Dazu gibt es die folgenden Werkzeuge:

Windows-Netzwerk SMB

Im lokalen Netzwerk (LAN) wird oft SMB, auch bekannt als SAMBA oder Windows-Netzwerk eingesetzt.

Dabei wird ein lokales Verzeichnis vom Server freigegeben, das vom Client als Dateisystem eingebunden wird, beispielsweise als Netzwerklaufwerk.

Das Einbinden als Dateisystem birgt ein hohes Risiko. Verschlüsselungstrojaner (Ransomvirus) zerstören alle erreichbaren Festplatteninhalte, auch Netzwerklaufwerke. Ist ein Netzwerkdateisystem zum Zeitpunkt der Aktivität eines Ransomvirus eingebunden, werden auch dessen Dateien verschlüsselt.

Gegenmaßnahmen

NFS, UNIX/Linux-Gegenstück zu SMB

Um Dateien zu zentralisieren bietet NFS im Gegensatz zu SMB alle Möglicheiten eines POSIX-Dateisystems. Das ist für UNIX-Derivate wie Linux, Mac oder BSD hochinteressant.

Die Sicherheitsrisiken beim Einbinden einer NFS-Freigabe entsprechen weitgehend denen, die bei SMB genannt wurden.