HTL Workshop - Reverse Proxy & TLS Lab
Dieses Repo ist ein leichtes HTTP-Basissetup fuer einen Workshop mit Fokus auf:
- Reverse Proxy Grundlagen (Nginx)
- Routing auf mehrere Backends
- TLS/HTTPS manuell umsetzen (z. B. Easy-RSA)
- Security-Hardening im Proxy
Die Aufgaben sind absichtlich auf manuelle Konfiguration ausgelegt, nicht auf App-Entwicklung.
Architektur
reverse-proxy(Nginx, Port8080)backend-a(einfaches statisches Backend)backend-b(einfaches statisches Backend)
Basisrouten nach dem Start:
http://localhost:8080/-> Startseitehttp://localhost:8080/service/a-> Backend A via Proxyhttp://localhost:8080/service/b-> Backend B via Proxy
WebUI Struktur
http://localhost:8080/-> Ueberblick + Navigationhttp://localhost:8080/challenges.html-> Detaillierte Challengeshttp://localhost:8080/hints.html-> Hint Cheatsheethttp://localhost:8080/solutions.html-> Musterloesungen
Voraussetzungen
Windows (empfohlen)
1. WSL + Ubuntu installieren
WSL ist die Grundlage fuer den Workshop (alle Test-Kommandos laufen spaeter in der Linux-Shell). In einer PowerShell als Administrator:
wsl --install -d Ubuntu-24.04
Das installiert WSL2 samt Ubuntu 24.04. Danach Windows neu starten und beim ersten Ubuntu-Start einen Linux-Benutzer (Name + Passwort) anlegen.
Pruefen bzw. verfuegbare Distros anzeigen:
wsl --list --verbose # bereits installierte Distros + WSL-Version
wsl --list --online # installierbare Distros
Ist WSL schon vorhanden, nur aktualisieren: wsl --update. Fehlt nur die Distro, separat nachziehen: wsl --install -d Ubuntu-24.04.
2. Tools installieren (winget)
winget install --id Microsoft.VisualStudioCode -e
winget install --id Git.Git -e
winget install --id Docker.DockerDesktop -e
Nach der Installation von Docker Desktop die WSL-Integration in den Einstellungen aktivieren (Settings -> Resources -> WSL Integration -> Ubuntu-24.04).
3. Optionale TLS-Tools (in Ubuntu/WSL)
Die TLS-Challenges (Easy-RSA, OpenSSL, Wireshark/tshark) laufen am besten innerhalb WSL. Im Ubuntu-Terminal:
sudo apt update
sudo apt install -y easy-rsa openssl tshark
Linux / macOS
Docker Engine oder Docker Desktop installieren.
Optional fuer TLS-Challenges:
Ubuntu/Debian (apt)
sudo apt update
sudo apt install easy-rsa openssl wireshark
Fedora/RHEL (dnf)
sudo dnf install easy-rsa openssl wireshark
Schnellstart
Windows
./scripts/workshop.ps1 -Action bootstrap
Falls PowerShell das Script blockiert:
Set-ExecutionPolicy -Scope Process Bypass
Wenn mehrere WSL-Distros installiert sind:
./scripts/workshop.ps1 -Action bootstrap -Distro Ubuntu-24.04
Alternativ direkt im WSL-Terminal:
./scripts/bootstrap.sh
Linux / macOS
./scripts/bootstrap.sh
Das Skript:
- prueft Docker + Compose
- startet den Stack
Der PowerShell-Wrapper ruft intern ./scripts/lab.sh in WSL auf - dieselbe Steuer-Oberflaeche wie unter Linux/WSL.
Neu deployen / resetten
Alle Aktionen laufen ueber ./scripts/lab.sh <aktion> (in WSL/Linux). Windows-PowerShell-Nutzer nehmen ./scripts/workshop.ps1 -Action <aktion> - dahinter steckt dasselbe Skript.
./scripts/lab.sh up
./scripts/lab.sh redeploy
./scripts/lab.sh proxy-reload
./scripts/lab.sh down
./scripts/lab.sh logs
./scripts/lab.sh reset
./scripts/lab.sh reset-hard
./scripts/lab.sh reset-origin
up: build + start (entspricht dem, wasbootstrapam Ende macht)redeploy: build + restart aller Servicesproxy-reload: nur Reverse Proxy restartdown: Stack stoppen (Container entfernen, Volumes bleiben)logs: Logs aller Services folgen (Strg+Czum Beenden)reset: Container/Netzwerk/Volumes aufraeumenreset-hard: wiereset, plus lokale Git-Aenderungen verwerfen (falls Git-Repo)reset-origin: wiereset-hard, aber bevorzugt Ruecksetzen auforigin/main
Hinweis: redeploy startet zusaetzlich den Reverse Proxy neu, damit Nginx-Config-Aenderungen sicher aktiv sind.
Kurz testen
curl http://localhost:8080/service/a
curl http://localhost:8080/service/b
Windows: Diese und alle weiteren Test-Kommandos (
curl,openssl,grep, Schleifen) im WSL-Terminal (bash) ausfuehren, nicht in PowerShell. In PowerShell istcurlein Alias fuerInvoke-WebRequestund versteht die genutzten Flags (-I,-k,--cacert) nicht. PowerShell nur fuer den Stack-Wrapperscripts/workshop.ps1.
Fokus im Workshop
Die Basis ist bewusst nur HTTP. HTTPS ist Teil der Aufgaben:
- CA + Server-Zertifikat selbst erstellen
- Nginx auf 443 erweitern
- Root-CA importieren
- HSTS und TLS-Haertung umsetzen
- TLS mitschneiden und analysieren
Vollstaendige TLS-Beispielkonfiguration mit HSTS: proxy/nginx.tls.example.conf.