Files
hkoeck 79a13f0919 Verbessere Challenge-Angaben, TLS-Fixes und Windows-Tauglichkeit
Fachliche Fixes:
- Easy-RSA: explizites --subject-alt-name (SAN) ergaenzt, sonst
  scheitert curl trotz CA-Import
- HSTS: max-age auf 3600 reduziert, includeSubDomains erklaert,
  Warnung zur host-weiten Browser-Falle + Reset-Weg
- Challenge 9: Backup-/Restore-Schritte fuer nginx.conf
- Compose-Portwechsel: redeploy statt proxy-reload klargestellt
- log_format-Platzierung (http-Block) dokumentiert
- add_header-Vererbungsfalle erklaert (Ch. 4 + Abgrenzung Ch. 8)

Angabe-Struktur (alle 13 Challenges):
- Einheitliches Schema: Ausgangszustand, Schritte (Muss),
  Zielzustand/Akzeptanz, erwartete Done-Check-Ausgaben
- Arbeitsweise global geklaert (additiv, Ausnahme Ch. 9, Reset)

Robustheit/Kosmetik:
- Load-Balancing: eindeutiger INSTANCE-Marker statt fragilem grep
- Challenge-3-Titel auf "Alias-Route" korrigiert
- HTTPS_PORT in .env.example parametrisiert
- Umlaut-Konsistenz (ASCII)

Windows-Tauglichkeit:
- Klargestellt: Test-Kommandos laufen in WSL bash, nicht PowerShell
  (curl-Alias-Falle), Stack-Steuerung per Wrapper oder WSL
- Wireshark: empfohlener Capture-Weg in WSL (tshark), npcap-Hinweis
- CA-Import: Linux-Trust-Store (WSL) vs Windows-Browser (certutil)

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

133 lines
3.1 KiB
Markdown

# Wireshark Hint Card (optional)
Diese Hinweise helfen bei der Bonus-Challenge mit Paketmitschnitt.
## 1) Installation
Fedora:
```bash
sudo dnf install -y wireshark wireshark-cli
```
Ubuntu/WSL:
```bash
sudo apt update
sudo apt install -y wireshark tshark
```
## 2) Interface waehlen
- Linux lokal: meist `lo` (Loopback) fuer `localhost`
- Docker-Welt: ggf. `docker0` bzw. Bridge-Interface
**Windows (Docker Desktop + WSL) - empfohlener Weg:**
- Capture **innerhalb WSL** machen, dort verhaelt sich `lo` wie unter Linux. Sowohl der `curl`-Request als auch der Mitschnitt laufen im WSL-Terminal:
```bash
# Terminal 1 (WSL): Mitschnitt starten
sudo tshark -i lo -f "tcp port 8080"
# Terminal 2 (WSL): Request senden
curl http://localhost:8080/service/a
```
- Natives Windows-Wireshark kann `localhost` nur ueber den npcap-Adapter "Adapter for loopback traffic capture" mitschneiden, und Docker-Desktop-Portforwarding macht das unzuverlaessig. Fuer den Workshop daher in WSL bleiben.
- Wireshark-GUI unter WSL braucht WSLg (Windows 11) oder ein X-Server; einfacher ist `tshark` (CLI) plus spaeter `.pcap` in der Wireshark-GUI oeffnen (`tshark -w mitschnitt.pcap ...`).
## 3) HTTP zuerst (Klartext)
1. Mitschnitt starten
2. Request senden:
```bash
curl http://localhost:8080/service/a
```
3. In Wireshark nach `http` oder `tcp.port == 8080` filtern
## 4) Root-CA importieren und HTTPS ohne -k testen
Voraussetzung: HTTPS-Challenge umgesetzt (Port `8443` aktiv).
Fedora:
```bash
sudo cp certs/easyrsa/pki/ca.crt /etc/pki/ca-trust/source/anchors/htl-workshop-root-ca.crt
sudo update-ca-trust
```
Ubuntu/Debian:
```bash
sudo cp certs/easyrsa/pki/ca.crt /usr/local/share/ca-certificates/htl-workshop-root-ca.crt
sudo update-ca-certificates
```
Test:
```bash
curl https://localhost:8443/service/a
```
## 5) HTTPS danach mitschneiden (verschluesselt)
Filter:
```text
tcp.port == 8443
```
oder
```text
tls
```
Handshake schnell finden:
```text
tls.handshake
```
Nur Zertifikats-Nachrichten:
```text
tls.handshake.type == 11
```
## 6) Optional: TLS in Wireshark entschluesseln
1. Vor Browser-Start setzen (WSL/bash):
```bash
export SSLKEYLOGFILE="$HOME/sslkeys.log"
```
In PowerShell waere es stattdessen `$env:SSLKEYLOGFILE = "$HOME\sslkeys.log"` - der einfachste Weg ist aber, alles in WSL zu machen.
2. Browser aus derselben Shell starten und HTTPS-Request erzeugen.
3. In Wireshark unter TLS-Preferences `sslkeys.log` als Key Log File setzen.
4. Mitschnitt erneut laden.
CLI-Alternative mit tshark (optional):
```bash
tshark -i lo -f "tcp port 8443"
```
## 7) Was ihr zeigen sollt
- HTTP-Mitschnitt: URL/Headers lesbar
- HTTPS-Mitschnitt: TLS Handshake sichtbar, Nutzdaten nicht im Klartext
- Nach CA-Import funktioniert `curl https://localhost:8443/...` ohne `-k`
- Optional: Mit Key Log koennen HTTP-Details im TLS-Stream sichtbar werden
## 8) Erwartete Abgabe (kurz)
- Screenshot 1: HTTP-Request mit lesbaren Daten
- Screenshot 2: HTTPS-Request mit TLS-Handshake
- Screenshot 3 (optional): entschluesselter TLS-Stream via Key Log
- 3 Bulletpoints: Unterschied HTTP vs HTTPS in euren eigenen Worten