Rufen Sie uns an: +49 341 242 502 10

ReverseProxy mit OPNsense

insbesondere mit dem HA-Proxy-plugin

OPNsense ist eine spannende Firewall-Lösung. Und auch, wenn das Projekt nicht immer reibungslos lief, kann ich einen zuverlässigen Einsatz dieser Lösung seit Jahren bestätigen. Einrichtung ist nicht trivial, aber sehr gut dokumentiert und einmal eingestellt ist das System extrem zuverlässig - auch in sehr komplizierten Umgebungen (ein von uns eingesetztes Szenario: zwei physikalisch getrennte DMZ-Subnetze mit verschiedenen Internetzugängen, ein internes LAN und alles mit drei unterschiedlichen Netzwerkadaptern per OPNsense entsprechend den Bedürfnissen der Netztopografie einwandfrei verbunden! darüber hinaus bestehen dauerhaft verschiedene VPN-Verbindungen nach außen, die auch per OPN-Sense gemanagt oder zumindest geroutet werden - an sich unnötig komplex und wäre es nicht zwingend, würden wir es nie wieder so machen - und dennoch gut und zuverlässig per OPNsense im Griff).

An dieser Stelle geht es nicht um einfache und in der guten Dokumentation erklärte Aufgaben, wie Wireguard einrichten o. ä., sondern um das mächtige und ein ganzes anderes Projekt umfassende Plugin "HAProxy".

A. SSL Termination, Let's Encrypt in dem Proxy
Dieses für viele Projekte optimale Szenario (nur die Firewall / der Router kümmert sich um SSL, dahinter läuft es im abgeschotteten LAN nicht mehr verschlüsselt) ist komplex, aber an dieser Stelle für OPNsense 24.7.1 und 24.7.5 exzellent beschrieben: Link zum Tutorial.

B. Gemischte Weiterleitung
Wenn man nicht alle Verbindungen mit SSL-Termination abfangen möchte, sondern eine ja, andere nicht (also glatt durchleiten), ist dies auch möglich. Dann müssen nebeneinander folgende Stränge konfiguriert werden - und zwar jeweils im Hinblick auf Frontend und Backend:

1. SSL-Termination (HAProxy verwaltet das Zertifikat)
Frontend: "SSL Offloading" aktivieren und SSL-Zertifikat zuweisen (ACME und Let's Encrypt sind hierfür ein extra Thema).
Backend: Die Verbindung vom HAProxy zum Zielserver erfolgt unverschlüsselt (HTTP).

2. SSL-Pass-Through (Backend-Server verwaltet das Zertifikat)
Frontend: SSL-Option "SSL Offloading" deaktiviert lassen
Backend: der Datenverkehr wird als SSL-Pass-Through an den Zielserver weitergeleitet.

C. Vorgehensweise allgemein
Für jeden Dienst, der über HAProxy laufen soll, müssen die nachstehend genannten Schritte absolviert werden. Angenommen, der Dienst soll "XXX" heißen:

1. Neuen Server einrichten ("real server")
Im HAProxy ist ein XXX_server einzurichten.

2. Backend einrichten ("backend pool" zum real server)
Das für XXX_server passende Backend einrichten - z. B. mit dem Namen XXX_backend.

3. Neue Bedingung erstellen ("condition")
Es ist eine Bedingung zu erstellen, die für den Datenverkehr zutrifft - XXX_condition.

4. Neue Regel erstellen ("rule")
Es ist eine Regel zu erstellen, die dafür verantwortlich ist, dass der Datenverkehr zu XXX_backend geleitet wird => XXX_rule. Diese enthält die "conditions".

5. Die neue Regel zum Frontend hinzufügen
Die Regel XXX_rule muss zum passenden Frontend hinzugefügt werden:
  • zum other_HTTP_frontend, wenn SSL offloading NICHT erfolgen soll
  • zum HTTPS_frontend, wenn SSL offloading benötigt wird

D. Unsere Konfiguration
Unsere HAProxy-Config fassen wir nachstehend zusammen:

1. Elemente der Konfiguration und wo sie einzustellen sind

=> unsere Frontends:
  • SNI-Frontend => 0_SNI_frontend - horcht an allen Schnittstellen bis auf SSL-Termination-IP
  • WWW-Seiten-Frontends => 1_HTTP_frontend und 1_HTTPS_frontend
=> werden unter HAProxy Settings => Virtual Services => Public Services eingestellt

=> unsere Backends:
=> werden unter HAProxy Settings => Virtual Services => Backend Pools konfiguriert



CategoryITWissen

Auf dieser Seite sind keine Kommentare vorhanden