Challenges - Reverse Proxy & TLS
Fokus: manuelle Proxy-Konfiguration, saubere Security-Entscheidungen, TLS von Grund auf.
Abgabe-Format (fuer jede Challenge)
- 1) Demo: 1-3 Minuten, live zeigen.
- 2) Check: Done-Check Command ausfuehren.
- 3) Erklaerung: 2-3 Saetze: was, warum, Sicherheitswirkung.
Easy
Easy 1) Routing verstehen
Ziel: Verstehen, wie der Reverse Proxy Requests anhand des Pfads verteilt.
Muss:
/service/aund/service/baufrufen.- Unterschied der Antworten erklaeren.
- In 1 Satz erklaeren, welche
locationauf welchenupstreamzeigt.
Done-Check:
curl http://localhost:8080/service/a
curl http://localhost:8080/service/b
Easy 2) backend-c manuell hinzufuegen
Ziel: Proxy-Setup sinnvoll erweitern, ohne bestehenden Traffic zu brechen.
Dateien: docker-compose.yml, proxy/nginx.conf
Muss:
- Service
backend-cin Compose anlegen. - In Nginx
upstream backend_cundlocation /service/ckonfigurieren. - Routing fuer A/B darf danach nicht kaputt sein.
Done-Check:
curl http://localhost:8080/service/c
curl http://localhost:8080/service/a
curl http://localhost:8080/service/b
Easy 3) Eigene Route mit Rewrite
Ziel: URL-Design vom Backend entkoppeln.
Muss:
- Neue public Route (z. B.
/demo/a) einbauen. - Intern auf bestehenden Backend-Pfad umbiegen (Rewrite oder eigene Route).
- In der Demo erklaeren, warum solche Pfad-Abstraktion nuetzlich ist.
Done-Check:
curl http://localhost:8080/demo/a
Medium
Medium 4) Security Headers setzen
Ziel: Browser-Schutzmechanismen bewusst aktivieren.
Muss:
X-Content-Type-Options: nosniffX-Frame-Options: DENYReferrer-Policy: no-referrer
Done-Check:
curl -I http://localhost:8080/
Abgabe: kurz erklaeren, welchen Angriff jeder Header erschwert.
Medium 5) Interne Route absichern
Ziel: Zugangskontrolle direkt im Proxy umsetzen.
Muss:
- Route
/internal/statuseinbauen. - Nur
127.0.0.1erlauben, alle anderen verbieten. - Sinn der Route erklaeren (z. B. intern fuer Ops/Monitoring).
Done-Check:
curl -i http://localhost:8080/internal/status
Medium 6) Logging verbessern
Ziel: Fehler schneller eingrenzen koennen.
Muss:
- Eigenes
log_formatmit Upstream-Daten erstellen. - Mindestens enthalten:
status,upstream_addr, Timing. - Access Log auf das neue Format stellen.
Done-Check:
curl http://localhost:8080/service/a
./scripts/compose.sh logs reverse-proxy
Hard (TLS)
Hard 7) HTTPS von 0 (Easy-RSA)
Ziel: Eigene PKI und TLS-Endpoint fuer den Proxy aufbauen.
Muss:
- Server-Zertifikat fuer
localhosterstellen. - Proxy auf
443erweitern (z. B.8443:443). - Root-CA importieren und ohne
-ktesten.
Done-Check:
curl https://localhost:8443/service/a
Hard 8) HTTP -> HTTPS Redirect
Ziel: Client sauber auf TLS umleiten.
Muss:
- Alle HTTP Requests nach HTTPS redirecten.
/healthzdarf optional auf HTTP bleiben.- Redirect-Statuscode + Location Header erklaeren.
Done-Check:
curl -I http://localhost:8080/service/a
Hard 9) TLS Haertung + Chain Check + HSTS
Ziel: TLS nicht nur aktivieren, sondern sinnvoll haerten.
Muss:
- TLS auf 1.2/1.3 beschraenken.
- HSTS Header setzen:
Strict-Transport-Security. - Zertifikatskette pruefen und in der Demo erklaeren.
Hinweis: Im HTTP-Basissetup ist HSTS absichtlich noch nicht aktiv.
Done-Check:
curl -I https://localhost:8443/service/a
openssl s_client -connect localhost:8443 -servername localhost
Bonus Expert
Expert 10) Wireshark: HTTP vs HTTPS sauber ausarbeiten
Ziel: Nachweisbar zeigen, was bei HTTP lesbar und bei HTTPS geschuetzt ist.
Muss:
- HTTP Capture auf Port
8080, Request erzeugen, Klartext markieren. - HTTPS Capture auf Port
8443, TLS Handshake markieren. - Pakete mit
ClientHello,ServerHello,Certificatezeigen. - Kurze Analyse: Was sieht ein Angreifer im HTTP-Fall vs im HTTPS-Fall?
Optional: TLS Decrypt via SSLKEYLOGFILE und Unterschied vorher/nachher erklaeren.
Done-Check / Abgabe:
- Mindestens 3 Screenshots mit Markierungen.
- 3-5 Bulletpoints als technische Schlussfolgerung.
- Ein Satz zu Grenzen der Methode (z. B. nur mit Keylog decryption).