Rechtsdienstleistungen, Datenschutz, sichere EDV-Systeme

ich war hier: ReverseProxyOPNsense

Wiki source for ReverseProxyOPNsense


Show raw source

===== [[ReverseProxyOPNsense 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 [[https://docs.opnsense.org/index.html in der guten Dokumentation]] erklärte Aufgaben, wie Wireguard einrichten o. ä., sondern um das mächtige und ein ganzes anderes Projekt umfassende Plugin "HAProxy".

((1)) 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: [[https://forum.opnsense.org/index.php?topic=23339.0 Link zum Tutorial]].

((1)) 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**:

((2)) 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.

((1)) 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:

((2)) 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##.

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

((2)) 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".

((2)) 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

((1)) Unsere Konfiguration
Unsere HAProxy-Config fassen wir nachstehend zusammen:

((2)) 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
Valid XHTML  |  Valid CSS  |  Powered by WikkaWiki