TFTP-Server

Ein TFTP-Server (Trivial File Transfer Protocol Server) ist ein einfacher Dateiserver, der das TFTP-Protokoll nutzt, um Dateien über das Netzwerk zu übertragen - typischerweise für PXE-Boot und Geräte-Konfigurationen.

TFTP ist ein sehr einfaches, aber unsicheres Protokoll ohne Authentifizierung oder Verschlüsselung, hauptsächlich für Boot-Images und Firmware-Updates eingesetzt.

Typische Einsatzbereiche

  • PXE-Boot - Boot-Images für PC-Installation bereitstellen
  • Netzwerkgeräte - Firmware-Updates für Router, Switch, Firewalls
  • VoIP-Telefone - Konfigurationsdateien laden
  • Embedded Systems - Einfache Dateiübertragung
  • Thin Clients - Betriebssystem-Images laden


TFTP vs. FTP

Eigenschaft TFTP FTP
Komplexität Sehr einfach Komplex
Port UDP 69 TCP 20/21
Authentifizierung Keine Ja (Username/Password)
Verschlüsselung Keine Optional (FTPS/SFTP)
Verzeichnisse Nein Ja
Use Case Boot, Firmware Allgemeine Dateiübertragung
UDP-basiert

TFTP nutzt UDP (nicht TCP), daher:

  • Keine Verbindungsgarantie
  • Weniger Overhead
  • Einfacher, aber unsicherer

TFTP-Server-Setup

Bekannte TFTP-Server-Software

  • tftpd-hpa (Linux, Standard)
  • Windows Deployment Services (WDS) - Integrierter TFTP
  • SolarWinds TFTP Server (Windows, kostenlos)
  • Tftpd64 (Windows, einfach)

Linux-Installation (Ubuntu)

sudo apt install tftpd-hpa
sudo systemctl start tftpd-hpa
sudo systemctl enable tftpd-hpa

Standardverzeichnis: /srv/tftp/


Konfiguration

TFTP-Server-Optionen

  • Root-Verzeichnis: Wo liegen die Dateien? (z.B. /srv/tftp)
  • Port: Standard UDP 69
  • Read-Only vs. Read-Write: Meist Read-Only für Sicherheit
  • Timeout: Wie lange warten auf Client?
  • Blocksize: Optimierung für große Dateien

Beispiel-Konfiguration (Linux /etc/default/tftpd-hpa):

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"

Integration mit PXE-Boot

TFTP + DHCP + PXE

Für PXE-Boot benötigt man:

  1. DHCP-Server - Vergibt IP-Adresse und TFTP-Server-Info
  2. TFTP-Server - Liefert Boot-Image (z.B. pxelinux.0, initrd)
  3. Boot-Images - Im TFTP-Root-Verzeichnis

Ablauf:

1. [[PC]] bootet, sendet DHCP-Request
2. [[DHCP-Server]]: "Deine [[IP-Adresse]] ist 192.168.1.50,
  TFTP-Server ist 192.168.1.100,
  Boot-Datei: pxelinux.0"
3. [[PC]] kontaktiert TFTP-Server: "Gib mir pxelinux.0"
4. TFTP-Server sendet pxelinux.0
5. [[PC]] startet pxelinux.0

Sicherheit

Sicherheitsprobleme

  • Keine Authentifizierung - Jeder kann Dateien abrufen
  • Keine Verschlüsselung - Übertragung im Klartext
  • Keine Integritätsprüfung - Manipulation möglich
  • UDP - Spoofing-Anfälligkeit

Best Practices

  • Isoliertes Netzwerk - TFTP nur in Management-VLANs
  • Read-Only-Modus - Schreibzugriff deaktivieren
  • Firewall - Port 69 nur für vertrauenswürdige Quellen
  • Minimale Dateien - Nur notwendige Boot-Images
  • iPXE + HTTP - Moderne Alternative mit HTTPS

Nicht für sensible Daten

TFTP sollte NIEMALS für vertrauliche Daten verwendet werden - keine DSGVO-Konformität!


Troubleshooting

Häufige Probleme

  • TFTP Timeout - Server nicht erreichbar, Firewall blockt UDP 69
  • File not found - Falsche Pfade, Berechtigungen
  • Permission denied - TFTP-User hat keine Leserechte
  • Slow transfer - Blocksize zu klein, Netzwerk-Probleme

Diagnose-Befehle

# TFTP-Verbindung testen (Linux)
tftp <server-ip>
tftp> get testfile

# TFTP-Server-Status prüfen
sudo systemctl status tftpd-hpa

# Logs prüfen
sudo journalctl -u tftpd-hpa

# Firewall-Regel prüfen
sudo ufw status


Moderne Alternativen

HTTP/HTTPS für Boot

Moderne Systeme nutzen HTTP/HTTPS statt TFTP:

  • iPXE - Open-Source-Bootloader mit HTTP-Support
  • Schneller - TCP statt UDP
  • Sicherer - HTTPS mit Verschlüsselung
  • Flexibler - Größere Dateien, besseres Caching
ITIL-Integration

TFTP-Server sind Teil der Configuration Management-Datenbank (CMDB) und unterstützen Service Transition bei Deployments.