# OPNsense HAProxy: Reverse Proxy & Modern Web Exposure
TL;DR / Management Summary Ein direkter Port-Forward (Artikel 561) auf interne Webserver ist unsicher und unflexibel. Der HAProxy Reverse Proxy agiert als intelligentes Gateway zwischen Internet und LAN. Er terminiert SSL-Verbindungen, filtert böswillige Anfragen und leitet Traffic basierend auf dem Hostnamen (z.B.
wiki.firma.devs.cloud.firma.de) an unterschiedliche interne Server weiter. Ein Senior Admin nutzt HAProxy, um das Sicherheitsniveau seiner Web-Infrastruktur massiv zu steigern.
# 1. Einführung & Konzepte
Layer-7 Switching.
HAProxy arbeitet auf der Anwendungsebene (OSI Layer 7).
- Frontend: Dort, wo der User anklopft (z.B. WAN-IP, Port 443).
- Condition (ACL): Die Logik (z.B. “Wenn Hostname = wiki.de”).
- Backend: Der Zielserver im LAN (z.B.
10.0.1.50).
# 2. Einrichtung in der Praxis
Dienste sicher bündeln.
# Schritt 1: Das Zertifikat
Importieren Sie Ihr Wildcard-Zertifikat oder nutzen Sie das ACME Plugin (Artikel 322), um Zertifikate automatisch von Let’s Encrypt zu beziehen.
# Schritt 2: Backends definieren
Services -> HAProxy -> Backend Pool.
Erstellen Sie für jede App (Wiki, Nextcloud, Proxmox GUI) ein eigenes Backend.
- Port: Meist 80 (HTTP), da HAProxy die Verschlüsselung übernimmt.
# Schritt 3: Frontends & ACLs
- Erstellen Sie ein Frontend auf Port 443.
- Definieren Sie eine ACL:
Host matches: wiki.firma.de. - Verknüpfen Sie die ACL mit dem passenden Backend.
# 3. Deep Dive: SSL Offloading & Security
Verschlüsselung am Rand.
# SSL Offloading
Der User spricht HTTPS mit OPNsense. OPNsense spricht HTTP mit dem internen Server.
- Vorteil: Der Webserver im LAN braucht kein Zertifikat und keine hohe CPU-Last für Krypto.
- Sicherheit: Nutzen Sie HSTS (HTTP Strict Transport Security) im Frontend, um Browser zur dauerhaften HTTPS-Nutzung zu zwingen.
# IP-Passthrough (X-Forwarded-For)
Damit der Webserver im LAN die echte IP des Users sieht (und nicht nur die IP der Firewall):
- Aktion: Aktivieren Sie im HAProxy Backend die Option “Option pass-through” und fügen Sie
http-request set-header X-Forwarded-For %[src]hinzu.
# 4. Day-2 Operations: Rate Limiting & Schutz
DoS-Angriffe abwehren.
HAProxy kann User blockieren, die zu viele Anfragen pro Sekunde schicken.
- Stick Tables: Speichern die Request-Rate pro Quell-IP.
- ACL: Wenn
http_req_rate(MyTable) > 50-> Block.
# 5. Troubleshooting & “War Stories”
Wenn der Proxy streikt.
# Top 3 Fehlerbilder
-
Symptom: “503 Service Unavailable”.
- Ursache: Das Backend ist offline oder der Health-Check (Artikel 562) schlägt fehl.
- Lösung: Health-Check Methode auf
TCP(einfacher Connect) stattHTTPstellen für den ersten Test.
-
Symptom: Unendliche Redirect-Schleife (HTTP -> HTTPS -> HTTP).
- Ursache: Der interne Webserver versucht selbst auf HTTPS umzuleiten, erkennt aber nicht, dass HAProxy die Verbindung bereits verschlüsselt hat.
- Lösung: Im internen Webserver (Apache/Nginx) das
X-Forwarded-ProtoFlag auswerten.
-
Symptom: Große Dateiuploads (z.B. Nextcloud) brechen ab.
- Lösung: Timeouts im Frontend und Backend von 30s auf 300s erhöhen.
# “War Story”: Der “Double-Header” Bug
Ein Admin wunderte sich, warum seine Web-Applikation sporadisch “Invalid Header” Fehler warf.
Die Entdeckung: Sowohl die OPNsense Firewall (via Shaper) als auch HAProxy fügten spezifische Header hinzu. Wenn ein Paket beide Instanzen passierte, war der Header-Bereich zu groß für den internen Webserver.
Lösung: Wir konfigurierten HAProxy so, dass er bestehende X-Forwarded-For Header erst löscht, bevor er seine eigenen setzt.
Lehre: Ein Reverse Proxy ist ein Protokoll-Manipulator. Man muss exakt wissen, welche Header-Felder die Applikation erwartet.
# 6. Monitoring & Reporting
Dashboard für Web-Traffic.
# HAProxy Statistics
Nutzen Sie die integrierte Statistik-Seite (Port 9000, Passwort-geschützt).
- KPI:
Session Cur(Wie viele User sind gerade online?). - KPI:
Rate(Requests pro Sekunde).
# 7. Fazit & Empfehlung
HAProxy ist die sicherste Methode, um Webdienste im Internet anzubieten.
- Empfehlung: Nutzen Sie HAProxy für alle HTTP/S basierten Dienste. Deaktivieren Sie direktes Port-Forwarding auf Port 80/443.
- Sicherheit: Kombinieren Sie HAProxy mit dem WAF (Web Application Firewall) Modul von OPNsense, um SQL-Injection und XSS Angriffe auf Layer 7 zu stoppen.
# Anhang: Cheatsheet für ACLs
| Typ | Wert | Zweck |
|---|---|---|
| Host matches | cloud.meine.de |
Routing nach Domain |
| Path starts with | /admin |
Schutz von Unterverzeichnissen |
| Source IP | Alias_HomeOffice |
Zugriffsbeschränkung |
| Backend Status | 0 (Down) |
Fehlerseite anzeigen |