Files
hkoeck 239cb9a90a Ergaenze WSL-Installation in der Windows-Anleitung
Die Windows-Voraussetzungen setzten WSL stillschweigend voraus. WSL
kann aber fehlen - dann scheitert der ganze Workshop am ersten Schritt.

- Schritt 1 neu: WSL2 + Ubuntu-24.04 per "wsl --install -d Ubuntu-24.04"
  (Admin-PowerShell), inkl. Neustart-/Benutzer-Hinweis und den Pruef-/
  Update-Kommandos (wsl --list --verbose/--online, wsl --update)
- Windows-Abschnitt in nummerierte Schritte gegliedert (WSL -> Tools -> TLS)
- Optionale TLS-Tools auf apt-in-WSL umgestellt (easy-rsa openssl tshark)
  statt nativem winget-OpenSSL/Wireshark - deckt sich mit wireshark-hints
  (natives Windows-Wireshark schneidet Docker-Loopback nicht zuverlaessig mit)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 22:50:53 +02:00

177 lines
4.9 KiB
Markdown

# 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, Port `8080`)
- `backend-a` (einfaches statisches Backend)
- `backend-b` (einfaches statisches Backend)
Basisrouten nach dem Start:
- `http://localhost:8080/` -> Startseite
- `http://localhost:8080/service/a` -> Backend A via Proxy
- `http://localhost:8080/service/b` -> Backend B via Proxy
## WebUI Struktur
- `http://localhost:8080/` -> Ueberblick + Navigation
- `http://localhost:8080/challenges.html` -> Detaillierte Challenges
- `http://localhost:8080/hints.html` -> Hint Cheatsheet
- `http://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**:
```powershell
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:
```powershell
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)
```powershell
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:
```bash
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)
```bash
sudo apt update
sudo apt install easy-rsa openssl wireshark
```
#### Fedora/RHEL (dnf)
```bash
sudo dnf install easy-rsa openssl wireshark
```
## Schnellstart
### Windows
```powershell
./scripts/workshop.ps1 -Action bootstrap
```
Falls PowerShell das Script blockiert:
```powershell
Set-ExecutionPolicy -Scope Process Bypass
```
Wenn mehrere WSL-Distros installiert sind:
```powershell
./scripts/workshop.ps1 -Action bootstrap -Distro Ubuntu-24.04
```
Alternativ direkt im WSL-Terminal:
```bash
./scripts/bootstrap.sh
```
### Linux / macOS
```bash
./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.
```bash
./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, was `bootstrap` am Ende macht)
- `redeploy`: build + restart aller Services
- `proxy-reload`: nur Reverse Proxy restart
- `down`: Stack stoppen (Container entfernen, Volumes bleiben)
- `logs`: Logs aller Services folgen (`Strg+C` zum Beenden)
- `reset`: Container/Netzwerk/Volumes aufraeumen
- `reset-hard`: wie `reset`, plus lokale Git-Aenderungen verwerfen (falls Git-Repo)
- `reset-origin`: wie `reset-hard`, aber bevorzugt Ruecksetzen auf `origin/main`
Hinweis: `redeploy` startet zusaetzlich den Reverse Proxy neu, damit Nginx-Config-Aenderungen sicher aktiv sind.
## Kurz testen
```bash
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 ist `curl` ein Alias fuer `Invoke-WebRequest` und versteht die genutzten Flags (`-I`, `-k`, `--cacert`) nicht. PowerShell nur fuer den Stack-Wrapper `scripts/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`.