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.
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 |
TFTP nutzt UDP (nicht TCP), daher:
- Keine Verbindungsgarantie
- Weniger Overhead
- Einfacher, aber unsicherer
TFTP-Server-Setup
- tftpd-hpa (Linux, Standard)
- Windows Deployment Services (WDS) - Integrierter TFTP
- SolarWinds TFTP Server (Windows, kostenlos)
- Tftpd64 (Windows, einfach)
sudo apt install tftpd-hpa
sudo systemctl start tftpd-hpa
sudo systemctl enable tftpd-hpa
Standardverzeichnis: /srv/tftp/
Konfiguration
- 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
Für PXE-Boot benötigt man:
- DHCP-Server - Vergibt IP-Adresse und TFTP-Server-Info
- TFTP-Server - Liefert Boot-Image (z.B. pxelinux.0, initrd)
- 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
- Keine Authentifizierung - Jeder kann Dateien abrufen
- Keine Verschlüsselung - Übertragung im Klartext
- Keine Integritätsprüfung - Manipulation möglich
- UDP - Spoofing-Anfälligkeit
- 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
TFTP sollte NIEMALS für vertrauliche Daten verwendet werden - keine DSGVO-Konformität!
Troubleshooting
- 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
# 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
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
TFTP-Server sind Teil der Configuration Management-Datenbank (CMDB) und unterstützen Service Transition bei Deployments.