FTP & SFTP

Was ist FTP?

Das File Transfer Protocol (FTP) ist eines der ältesten Netzwerkprotokolle – entwickelt 1971, standardisiert in RFC 959. Es dient ausschließlich der Übertragung von Dateien zwischen einem FTP-Client und einem FTP-Server.

FTP war jahrzehntelang der Standard für Dateiübertragungen – heute wird es wegen fehlender Verschlüsselung zunehmend durch sicherere Alternativen wie SFTP oder FTPS ersetzt.

Das Besondere an FTP – Zwei Verbindungen

FTP verwendet als einziges verbreitetes Protokoll zwei separate TCP-Verbindungen:

Verbindung

Port

Zweck

Steuerverbindung

TCP 21

Befehle und Antworten (bleibt während der ganzen Sitzung offen)

Datenverbindung

TCP 20 (aktiv) oder dynamisch (passiv)

Eigentliche Dateiübertragung (wird für jede Übertragung neu aufgebaut)

Aktiver vs. Passiver Modus

Aktiver Modus (PORT)

Client                          Server
  │──── Steuerverbindung ───────▶Port 21
  │──── PORT-Befehl ────────────▶│  "Verbinde dich mit mir auf Port X"
  │◀─── Datenverbindung ─────────Port 20 → Client Port X

Problem: Der Server baut die Datenverbindung zum Client auf. Firewalls blockieren eingehende Verbindungen oft – aktiver Modus funktioniert hinter NAT/Firewall häufig nicht.

Passiver Modus (PASV)

Client                          Server
  │──── Steuerverbindung ───────▶Port 21
  │──── PASV-Befehl ────────────▶│  "Auf welchem Port wartest du?"
  │◀─── Port-Antwort ────────────│  "Verbinde dich mit mir auf Port Y"
  │──── Datenverbindung ─────────▶Port Y

Lösung: Der Client baut beide Verbindungen auf. Funktioniert problemlos hinter NAT und Firewalls. Passiver Modus ist heute Standard.

FTP-Befehle

Befehl

Bedeutung

USER

Benutzername senden

PASS

Passwort senden

LIST

Verzeichnisinhalt anzeigen

RETR

Datei vom Server herunterladen

STOR

Datei auf Server hochladen

DELE

Datei auf Server löschen

MKD

Verzeichnis erstellen

CWD

Verzeichnis wechseln

QUIT

Verbindung beenden

PASV

Passiven Modus aktivieren

FTP-Statuscodes

Code

Bedeutung

220

Server bereit

230

Login erfolgreich

331

Passwort erforderlich

425

Datenverbindung konnte nicht geöffnet werden

530

Login fehlgeschlagen

550

Datei nicht gefunden oder kein Zugriff

Das große Problem mit FTP – Keine Verschlüsselung

FTP überträgt alles im Klartext – Benutzername, Passwort und Dateiinhalte. Ein Angreifer im gleichen Netzwerk kann alles mitlesen:

Wireshark-Mitschnitt eines FTP-Logins:
220 FTP Server ready
USER admin
331 Password required
PASS geheimesPasswort123    ← Im Klartext sichtbar!
230 Login successful

Die sicheren Alternativen

Protokoll

Port

Basis

Verschlüsselung

FTP

21/20

Eigenständig

Keine

FTPS

990 (implizit) / 21 (explizit)

FTP + TLS

TLS/SSL

SFTP

22

SSH-Subsystem

SSH (vollständig)

SCP

22

SSH

SSH (vollständig)

SFTP – SSH File Transfer Protocol

SFTP ist kein FTP mit SSH – es ist ein völlig eigenständiges Protokoll das als Subsystem von SSH läuft. Es verwendet nur eine einzige verschlüsselte Verbindung auf Port 22 und ist heute die empfohlene Alternative zu FTP.

Vorteile von SFTP gegenüber FTP:
✓ Vollständige Verschlüsselung (Befehle + Daten)
✓ Nur ein Port (22) – firewall-freundlich
✓ Authentifizierung per SSH-Key möglich
✓ Kein aktiv/passiv Problem
✓ Auf praktisch jedem Linux-Server verfügbar

SFTP in der Praxis

Verbindung per Kommandozeile:
sftp benutzer@server.example.com

Wichtige SFTP-Befehle:
ls          → Verzeichnis auflisten
cd ordner   → Verzeichnis wechseln
get datei   → Datei herunterladen
put datei   → Datei hochladen
rm datei    → Datei löschen
mkdir name  → Verzeichnis erstellen
exit        → Verbindung beenden

Mit SSH-Key (ohne Passwort):
sftp -i ~/.ssh/id_rsa benutzer@server.example.com

Zusammenfassung

  • FTP ist das File Transfer Protocol – entwickelt 1971, Port 21 (Steuerung) und 20 (Daten)

  • FTP verwendet zwei Verbindungen – Steuerverbindung und Datenverbindung

  • Aktiver Modus: Server baut Datenverbindung auf – problematisch hinter NAT/Firewall

  • Passiver Modus: Client baut beide Verbindungen auf – heute Standard

  • FTP überträgt alles im Klartext – Passwörter sind abfangbar

  • SFTP läuft als SSH-Subsystem auf Port 22 und verschlüsselt alles

  • FTPS ist FTP mit TLS-Verschlüsselung

  • In modernen Umgebungen sollte FTP nicht mehr eingesetzt werden