Aktionen

PfSense - HAProxy + Lets Encrypt ACME + GeoIP-Blocking pfBlockerNG

Aus znilwiki

ACHTUNG-BAUSTELLE.png

Dieses Thema ist noch nicht vollständig! Es wird noch daran gearbeitet!




Changelog:

  • 08.02.2024 erste Version

Vorwort

Jahrelang habe ich meine Webdienste in der folgenden Konstellation betrieben:

Internet => pfSense Firewall => Ubuntu-Server mit Apache-Reverse-Proxy => eigentlicher Server

Auf der Firewall nutze ich zwar GeoIP-Blocking mit dem pfBlockerNG Plugin, die Ports 80 und 443 habe ich aber an einen Server dahinter mit Apache-Reverse-Proxy durchgereicht. Ohne Blocking und Weltweit offen.
Der Apache-Reverse-Proxy ist im Prinzip der normale Apache2-Webserver, man installiert ein Modul nach und schon kann man Reverse-Proxy Befehle nutzen.
Aus Faulheit nutze ich seit Jahren ISPConfig dafür. Diese Software bietet eine Weboberfläche in welcher ich einfach eine neue Subdomain erstellen kann, den Haken bei Let`s Encrypt Zertifikat setze, speichere und ein bis zwei Minuten warte - fertig ist die Webseite (externer DNS-Eintrag vorausgesetzt). Dann in den Einstellungen der Webseite die Reverse-Proxy-Einstellungen gesetzt und das ganze läuft.
Zusätzlich habe ich das Maxmind-Geolocation-Modul installiert und kann so bei einzelnen Subdomänen den Zugriff von Weltweit Blocken.

Dazu kam ich weil ich einen Exchange-Server umziehen möchte der bisher eine eigene externe IP-Adresse hatte und bisher über eine "Sophos UTM - Webserver Protection" geschützt ist.
Ich hatte dann die neueste Generation der Sophos-Firewall mit "Firewall-OS" getestet, musste aber feststellen das es die Webserver-Protection noch gibt, die automatische Anforderung von Let's Encrypt Zertifikaten aber nicht mit umgesetzt wurde (sondern extern erfolgen und dann per API und Skripten hochgeladen werden soll).

Da ein Kollege schon seit Jahren HAProxy für Exchange einsetzt habe ich mir das ganze auch mal angeschaut. In Verbindung mit der pfSense. HAProxy und das ACME-Plugin haben mich dabei begeistert, insbesondere da ACME automatisch Zertifikate über die API-Schnittstelle von meinem Domainhoster IONOS anfordern kann, Let's Encrypt Zertifikate also nicht per Webserver sondern über die DNS-Challenge anfordern kann. So kann ich auch problemlos Wildcard-Zertifikate wie *.znil.net anfordern. Nicht das ich ein Freund davon wäre, mach aber manches einfacher.
HAProxy kann dabei auch nicht alles, ich vermisse zum Beispiel den Einsatz von einzelnen Zertifikaten pro Subdomain hinter einer IP-Adresse. Was ich aber Dank Wildcard-Zertifikat umgehen konnte.
Nachfolgend beschreibe ich die Einrichtung damit ich das beim nächsten mal auch wieder hinbekomme.
Denn wie das so ist musste ich mir das gewünschte über mehrere Webseiten zusammensuchen und für mich anpassen.


Linksammlung