Workshop Challenges (Reverse Proxy + TLS Focus)
Diese Aufgaben sind auf manuelle Proxy-Konfiguration ausgelegt.
Abgabe pro Aufgabe:
- kurzer Demo-Run (1-3 Minuten)
- Done-Check Command
- 2-3 Saetze: Was wurde geaendert und warum?
Arbeitsmodus
- Datei anpassen (
proxy/nginx.conf,docker-compose.yml). - Deployen mit
make redeployodermake proxy-reload. - Testen mit
curl/openssl. - Wenn etwas kaputt ist:
./scripts/compose.sh logs reverse-proxy.
Easy
1) Routing verstehen
Ziel
- Reverse Proxy leitet Requests auf unterschiedliche Backends.
Muss
service/aundservice/baufrufen.- Unterschiede in den Antworten erklaeren.
Done-Check
curl http://localhost:8080/service/a
curl http://localhost:8080/service/b
2) Drittes Backend manuell hinzufuegen
Ziel
- Proxy auf ein neues Backend erweitern.
Dateien
docker-compose.ymlproxy/nginx.conf
Muss
- Service
backend-canlegen. - Upstream + Route
/service/ckonfigurieren.
Done-Check
curl http://localhost:8080/service/c
3) Eigene Route mit Rewrite
Ziel
- URL-Struktur im Proxy gestalten.
Datei
proxy/nginx.conf
Muss
- Route
/demo/asoll intern auf Backend A zeigen. - Implementierung ueber
rewriteoder eigenelocation.
Done-Check
curl http://localhost:8080/demo/a
Medium
4) Security Headers setzen
Ziel
- Grundlegende Header-Haertung im Proxy.
Datei
proxy/nginx.conf
Muss
- Setze mindestens:
X-Content-Type-Options: nosniffX-Frame-Options: DENYReferrer-Policy: no-referrer
Done-Check
curl -I http://localhost:8080/
5) Interne Route absichern
Ziel
- Route nur lokal erreichbar machen.
Datei
proxy/nginx.conf
Muss
- Neue Route
/internal/statusbauen. - Nur
127.0.0.1erlauben, alle anderen verbieten.
Done-Check
curl -i http://localhost:8080/internal/status
6) Logging verbessern
Ziel
- Proxy-Debugging ueber bessere Logs.
Datei
proxy/nginx.conf
Muss
- Eigenes
log_formatmit Upstream-Infos erstellen. - Access Log auf dieses Format umstellen.
Done-Check
curl http://localhost:8080/service/a
./scripts/compose.sh logs reverse-proxy
Hard (TLS)
7) HTTPS von 0 mit Easy-RSA
Ziel
- Eigene CA + Server-Zertifikat fuer
localhost.
Dateien
docker-compose.ymlproxy/nginx.conf
Muss
- Cert fuer
localhosterzeugen. - Proxy auf
443aktivieren (z. B.8443:443). - Root-CA importieren.
Done-Check
curl https://localhost:8443/service/a
8) HTTP -> HTTPS Redirect
Ziel
- Klarer Redirect-Flow.
Datei
proxy/nginx.conf
Muss
- HTTP Requests auf HTTPS umleiten.
/healthzdarf optional auf HTTP bleiben.
Done-Check
curl -I http://localhost:8080/service/a
9) TLS Haertung + Chain Check
Ziel
- Bessere TLS-Defaults + saubere Validierung.
Datei
proxy/nginx.conf
Muss
- TLS auf 1.2/1.3 beschraenken.
- HSTS aktivieren (
Strict-Transport-Security). - Zertifikatskette pruefen.
Hinweis: Im HTTP-Basissetup ist HSTS absichtlich noch nicht aktiv. Das ist Teil der Aufgabe.
Done-Check
curl -I https://localhost:8443/service/a
openssl s_client -connect localhost:8443 -servername localhost
Bonus Expert
10) Wireshark: HTTP vs HTTPS
Ziel
- Sichtbar machen, was verschluesselt ist und was nicht.
Muss
- HTTP Traffic auf
8080mitschneiden. - HTTPS Traffic auf
8443mitschneiden. - TLS Handshake markieren (
ClientHello,ServerHello,Certificate). - Technisch erklaeren, warum HTTP lesbar ist und HTTPS nicht.
Vorgehen (empfohlen)
- Capture auf
lo(oder passendes Interface) starten, Filtertcp.port == 8080. curl http://localhost:8080/service/asenden und HTTP-Stream zeigen.- Capture auf
tcp.port == 8443odertlsumstellen. curl https://localhost:8443/service/asenden.- Handshake-Pakete markieren und kurz erklaeren.
Optional
- TLS Decrypt mit
SSLKEYLOGFILE.
Done-Check
- 3-4 Screenshots + 3-5 Bulletpoints Auswertung.
Typische Fehler
- falsches Interface gewaehlt
- HTTPS noch nicht korrekt aktiv
- Keylog gesetzt, aber Browser nicht aus derselben Shell gestartet
Zusatz-Hints
challenges/easyrsa-hints.mdchallenges/wireshark-hints.md