Inhaltsverzeichnis

Reverse-Proxy auf Basis von OPNsense

Grund

Ich möchte 1) von der Firewallbasis Debian mit Shorewall wechseln zu OPNsense. Dazu gehört auch die Funktion des Reverse-Proxys am Eingang des Netzes. Dieser übernimmt auch weitere Aufgaben wie Dynamisches DNS, SSL-Offloading, Letsencrypt usw.

Auch eine Schule kann einen Reverse-Proxy gut gebrauche, da man doch mit der Zeit den einen oder anderen Webdienst auch nach außen verfügbar machen will. Mit ein wenig Aufwand erhält man dann aber mit OPNsense ein hervorragendes Ergebnis.

Übersicht zum Aufbau des Netzes

Die Debian-Web-Server, welche Dienste bereitstellen, sind im Bild ganz rechts.
Der benachbarte AdminPC kann irgendein Betriebssystem haben - solange ein Browser zur Firewallsteuerung läuft.
Die roten Netze existieren hier alle nur innerhalb des KVM-Systems als virtuelle Netze (ohne DHCP oder Hostverbindung). Von oben sind es Schulnetz, Demonetz und das winzige Management-Netz. Natürlich könnte nach rechts aus dem KVM-System auch eine echte Ethernetleitung herausführen, die ebenfalls von der OPNsense-Firewall kontrolliert wird und z.B. mit einem Servernetz verbunden ist.

Uns so erfolgt nun der Zugriff aus dem Internet:

Vom Clients ist zuerst die Fritzbox zu „überwinden“ um eine Verbindung zum Gatewayserver herzustellen. Dieser greift dann stellvertretend als Reverse-Proxy auf die Webserver zu und liefert das Ergebnis an den Client zurück. Welchen der Webserver er anspricht hängt von dem übertragenen FQHN ab (jedenfalls sind die im Folgenden verwendeten „Rules“ so angelegt).

Installation

Plane das Netzwerk und die Serveradressen! Die restlichen Maschinen außer OPNsense können bereits installiert sein, man kann sie ja dann in den virtuellen Netzen verschieben.

Mögliche IP-Adressen innerhalb des KVM-Servers (hier meine heimische Konfiguration):

Maschine Interface zum Netz IPv4-Adr.
(immer privat)
IPv6-Adr.
(public)
Kommentar
OPNsense LAN 192.168.2.200 dynamisch von Fritzbox via Präfix weitergegeben
OPNsense Management 192.168.1.1 - Standard bei OPNsense-Installation, Port ändern (s.u.)
OPNsense Schulnetz 192.168.3.1 -
OPNsense Demonetz 192.168.9.1 -
Admin-PC Management 192.168.1.100 -
Shellinabox Schulnetz 192.168.3.133 - Port 8080 per HTTP
DemoServer Demonetz 192.168.9.122 - Port 80 per HTTP
Technikserver Demonetz 192.168.9.123 - Port 80 per HTTP
DNS-Vorbereitungen
OPNsense: Installation und erste Konfiguration

(Stand: April 2020)

Fritzbox
OPNsense: Software nachinstallieren

Konfiguration von Letsencrypt (acme-client) und von HAProxy

Es gibt es einige ausführliche Anleitungen - siehe am Ende der Seite unter Quellen. Meist sind es aber „klick dies - tipp das“-Anleitungen. Damit man weiß, was man überhaupt konfiguriert, betrachten wir folgende Grafik:

Unnötig zu sagen, dass HAProxy natürlich deutlich komplexer ist, als hier dargestellt. So können auch Backend-Server eigene Regeln haben, Conditions können komplexer sein, Benutzeranmeldung kann gemacht werden usw.

Wenn es nicht funktioniert: Unten sind einige Fehler beschrieben.

Verschlüsselung optimieren

Voraussetzung: Es funktioniert!

Nun kann man die Verschlüsselung bei https://SSLLabs.com testen. Vermutlich erhält man eine B-Note. Bei T hat man etwas falsch gemacht… Um auf die Note A+ zu kommen sind nun wenige Optimierungen in den HAProxy-Settings nötig:

Bei Settings→Global Parameters:

Beim Virtual Service→Public Service→ NameMeinesPublicService:

Schließlich kann man noch in dem DNS-Server der Domain (wo immer man die verwaltet, z.B. INWX oder beim eigenen Provider) einen CAA-Eintrag machen:

  example.org. CAA 128 issue "letsencrypt.org"

Fehler, die mir unterkamen und ihre Ursachen

Mozilla SSL-Konfiguration

       ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
       

Deutsche Anleitungen:

Englische Anleitung:

1)
Der Wechsel ist u.a. ein Gebot der Vernunft, da z.B. die Weiterentwicklung der von mir verwendeten und geschätzten Shorewall fraglich ist. Bei der Konfiguration bin ich wegen des eher seltenen Aufbaus auf mich alleine gestellt - keine Firma würde das supporten. Da ist OPNsense erfolgversprechender.