Dies ist eine alte Version des Dokuments!
pfSense
pfSense ist eine Firewall-Distribution auf der Basis des Betriebssystems FreeBSD und des Paketfilters pf. (Wikipedia)
In unserer Infrastruktur setzten wir an mehreren Stellen diese Firewalls ein, um unterschiedliche Aufgaben zu erfüllen. Ein Standard Anwendungsfall ist der Reverse Proxy mit der Zertifikatsverwaltung. Dies ermöglicht uns hinter einer IP-Adresse mehrere Webserver zu betreiben unter der Verwendung der HTTP, Port 80, und HTTPS, Port 443.
Im nachfolgenden Bereich wird die Einrichtung der Zertifikatsverwaltung sowie die eines Reverse Proxy beschrieben.
ACME
ACME steht für Automatic Certificate Management Environment und ermöglicht uns in diesem Setup, dass die pfSense die Zertifikate verwaltet für die dahinter liegenden Server. Da unser primäre Hoster ALL-INKL ist, verwenden wir hier eine manuelle Konfiguration.
Installation
Zunächst wird das Paket acme benötigt, welches im „Package Manager“ unter System installiert werden kann. ACME package
Konfiguration
Unter dem Menüpunkt „Services“ wird nun der Dienst Acme Certificates angezeigt. Zuerst muss ein Account Key angelegt werden. * Vorsicht * Let's Encrypt erlaubt es lediglich eine gewisse Anzahl an Anfragen innerhalb eines Zeitraums zu tätigen, daher ist es ratsam zuerst den Staging (Testing) Server zu verwenden, um sicherzustellen, dass alle Einstellungen und Portweiterleitungen funktionieren.
Name: Lets Encrypt Production Description: Production SSL Certificate ACME Server: Let's Encrypt Production ACME v2 (Applies rate limits to certificate requests) E-Mail Address: admin@example.com Account key: "Create new account key" ACME account registration: "Register ACME account key"
Es wird empfohlen die Option „Cron Entry“ unter dem General settings Reiter zu aktivieren für die automatische Erneuerung der Zertifikate.
Jetzt wird das erste Zertifikat unter dem Reiter Certificates erstellt.
Name:server.example.com Description: Service Certificate Acme Account: Lets Encrypt Production Domain SAN list Domainname: server.example.com Method: DNS-All-inkl Kasserver Login: username Auth Type: plain Auth Data: password
Dann die Einstellungen speichern. Im Anschluss kann das Zertifikat erzeugt werden, dies dauert einige Sekunden. Es wird ein grüner Text angezeigt, oberhalb des generierten Zertifikats wird angezeigt, ob es erfolgreich war oder nicht.
HAProxy
Ein Reverse-Proxy ist ein Proxy in einem Rechnernetz, der Ressourcen für einen externen Client von einem oder mehreren internen Servern holt. Die Umsetzung der Adresse ist atypisch und der Richtung des Aufrufs entgegengesetzt. Die wahre Adresse des internen Zielsystems bleibt dem externen Client verborgen. Wikipedia
Installation
Zunächst wird das Paket haproxy benötigt, welches im „Package Manager“ unter System installiert werden kann. HAProxy
Konfiguration
Unter dem Menüpunkt „Services“ wird nun der Dienst HAProxy angezeigt. Zuerst wird das Backend angelegt.
Name: service Server list Name: service Address: IP Adresse des Servers Port: Port des Dienst Health check method: Anwendungsfall spezifisch Transparent ClientIP: Aktivierung empfohlen für logs und Zugriffsübersicht
Jetzt wird das Frontend angelegt. In diesem Fall legen wir einen HTTP und HTTPS Frontend an.
Name: WebApplications Description: SSL Offloading Server list Listen address 1: WAN address (IPv4) Port 1:80 Listen address 2: WAN address (IPv4) Port 2:443 SSL Offloading: Ja Access Control lists Name: Service Expression: Host matches Value: service.example.com Actions Action: User Backend Codition acl names: Service backend: service Certificate: Das zuvor erstellte Zertifikat via Lets Encrypt. Wenn weitere Zertifikate benötigt werden, können diese bei Additional certificates angegeben werden.
Damit der HAProxy tätig wird, muss dieser unter dem Settingsreiter aktiviert werden sowie noch weiter Einstellungen angepasst werden.
Maximum connections: 1000 Internal stats port: 2200 Max SSL Diffie-Hellman size: 2048
WireGuard Server
WireGuard ist eine freie Software zum Aufbau eines virtuellen privaten Netzwerkes über eine verschlüsselte Verbindung. Als Besonderheit ist diese VPN-Technik direkt im Linux-Kernel ab Version 5.6 integriert und erlaubt so eine höhere Verarbeitungsgeschwindigkeit als vergleichbare Lösungen wie IPsec oder OpenVPN.(Wikipedia)
Installation
Zunächst wird das Paket WireGuard benötigt, welches im „Package Manager“ unter System installiert werden kann. WireGuard
Konfiguration
Nach der Installation steht unter dem Menüpunkt VPN WireGuard als Option zur Verfügung und kann in dem Reiter Settings aktiviert werden. Der erste Schritt zum Anlegen des VPNs ist ein neuer Tunnel.
Enable: Ja Description: WireGuardServer Listen Port: 51820 Interface Keys: Neuen Key generieren Assignment: Interface hinzufügen
Nachdem der Tunnel vorbereitet ist, kann ein Peer angelegt werden. Dazu im Reiter Peers einen neuen Eintrag anlegen.
Enable: Ja Tunnel: tun_wg0 (WireGuardServer) Description: Client1 Dynamic: Ja (Wenn sich es um keine Statische IP handelt)
WireGuard Client
WireGuard ist eine freie Software zum Aufbau eines virtuellen privaten Netzwerkes über eine verschlüsselte Verbindung. Als Besonderheit ist diese VPN-Technik direkt im Linux-Kernel ab Version 5.6 integriert und erlaubt so eine höhere Verarbeitungsgeschwindigkeit als vergleichbare Lösungen wie IPsec oder OpenVPN.(Wikipedia)
Installation
Zunächst wird das Paket WireGuard benötigt, welches im „Package Manager“ unter System installiert werden kann. WireGuard
Konfiguration
Nach der Installation steht unter dem Menüpunkt VPN WireGuard als Option zur Verfügung und kann in dem Reiter Settings aktiviert werden. Der erste Schritt zum Anlegen des VPNs ist ein neuer Tunnel.
Description: Listen Port: Interface Keys: Neuen Key generieren Assignment: Interface hinzufügen
