Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
reverse_proxy_opnsense [2020/05/06 18:15] – [Grund] cbreverse_proxy_opnsense [2020/05/10 09:52] (aktuell) – [Quellen & Links] cb
Zeile 10: Zeile 10:
 Die Debian-Web-Server, welche Dienste bereitstellen, sind im Bild ganz rechts.\\ 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. \\ Der benachbarte AdminPC kann irgendein Betriebssystem haben - solange ein Browser zur Firewallsteuerung läuft. \\
-Die roten Netze existieren alle nur innerhalb des KVM-Systems als virtuelle Netze (ohne DHCP oder Hostverbindung). Von oben sind es Schulnetz, Demonetz und das winzige Management-Netz.+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
  
-So erfolgt 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).+==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=== ===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. 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.
  
-IP-Adressen innerhalb des KVM-Servers:+Mögliche IP-Adressen innerhalb des KVM-Servers (hier meine heimische Konfiguration):
 ^ Maschine       ^ Interface zum Netz  ^ IPv4-Adr.\\ (immer privat)  ^ IPv6-Adr.\\ (public)  | Kommentar                                               | ^ 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       | LAN                 | 192.168.2.200               | dynamisch             | von Fritzbox via Präfix weitergegeben                   |
Zeile 33: Zeile 34:
  
 ==OPNsense: Installation und erste Konfiguration==  ==OPNsense: Installation und erste Konfiguration== 
-Stand: April 2020+(Stand: April 2020)
     * Konfigurieren der virtuellen Netze     * Konfigurieren der virtuellen Netze
     * OPNsense installieren als FreeBSD 11.2 auf KVM,     * OPNsense installieren als FreeBSD 11.2 auf KVM,
Zeile 89: Zeile 90:
       * Die Verschlüsselung beim Public-Service greift auf das von Letsencrypt gelieferte Zertifikat zurück - sobald es da ist. Man kann den Public-Service für Port 443 also erst danach aktivieren!       * Die Verschlüsselung beim Public-Service greift auf das von Letsencrypt gelieferte Zertifikat zurück - sobald es da ist. Man kann den Public-Service für Port 443 also erst danach aktivieren!
  
-Unnötig zu sagen, dass HAProxy natürlich deutlich komplexer ist, als hier dargestellt. auch Backend-Server können Regeln habenBenutzeranmeldung kann gemacht werden...+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. Wenn es nicht funktioniert: Unten sind einige Fehler beschrieben.
Zeile 111: Zeile 112:
     * Enable HTTP/2     * Enable HTTP/2
  
-Schließlich kann man noch in dem DNS-Server der Domain einen CAA-Eintrag machen:+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"     example.org. CAA 128 issue "letsencrypt.org"
  
Zeile 117: Zeile 118:
 ===Fehler, die mir unterkamen und ihre Ursachen=== ===Fehler, die mir unterkamen und ihre Ursachen===
     * Letsencrypt kann das Zertifikat nicht aktualisieren     * Letsencrypt kann das Zertifikat nicht aktualisieren
-      * -> überprüfe, dass die URL (die mit /.well-known beginnt) von außen per HTTP (Port 80) erreichbar ist+      * -> überprüfe, dass die URL (die mit /.well-known beginnt) von außen per HTTP (Port 80) erreichbar ist - z.B. mit [[curl|cURL]].
       * -> findet für diese URL eine Weiterleitung zu https statt, so ist entweder       * -> findet für diese URL eine Weiterleitung zu https statt, so ist entweder
         * eine solche im HAProxy eingerichtet worden (dann ergänze die Rule so, dass beim acme-challenge-Verfahren nicht weitergeleitet wird) oder         * eine solche im HAProxy eingerichtet worden (dann ergänze die Rule so, dass beim acme-challenge-Verfahren nicht weitergeleitet wird) oder
         * oben der Haken bei "Disable web GUI redirect rule" nicht gesetzt worden!         * oben der Haken bei "Disable web GUI redirect rule" nicht gesetzt worden!
-    * HAProxy lässt sich nicht starten+    * HAProxy lässt sich nicht starten (Kontrolle im Dashboard)
       * -> Teste die Konfiguration mit dem Button       * -> Teste die Konfiguration mit dem Button
       * -> Sind bei abgeschaltetem HAProxy die Ports 80 und 443 wirklich frei? D.h. nicht erreichbar?       * -> Sind bei abgeschaltetem HAProxy die Ports 80 und 443 wirklich frei? D.h. nicht erreichbar?
Zeile 130: Zeile 131:
     * Kein HTTPS-Zugriff mit Firefox möglich, mit anderen Browsern klappt es:     * Kein HTTPS-Zugriff mit Firefox möglich, mit anderen Browsern klappt es:
       * -> In Letsencrypt OCSP Must Staple angeklickt? Sonst eine gute Idee, wird aber von HAProxy nicht unterstützt und Firefox beschwert sich zu Recht. Also Haken weg, Zertifikat neu ausstellen lassen, fertig.       * -> In Letsencrypt OCSP Must Staple angeklickt? Sonst eine gute Idee, wird aber von HAProxy nicht unterstützt und Firefox beschwert sich zu Recht. Also Haken weg, Zertifikat neu ausstellen lassen, fertig.
 +===Mozilla SSL-Konfiguration===
 +    * [[https://ssl-config.mozilla.org/#server=haproxy&version=2.21&config=intermediate&openssl=1.1.1f&ocsp=false|SSL Configuration Generator]]
 +    * Liefert eine Liste empfehlenswerter Verschlüsselungstechniken (Cipher).
 +    * "intermediate" dürfte für die meisten Anwender praktikabel sein.
 +    * Man sollte die Einstellungen z.B. jährlich aktualisieren...
 +    * Derzeit (April 2020) lautet sie: 
 +
 +         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
 +         
 ===Quellen & Links=== ===Quellen & Links===
 Deutsche Anleitungen: Deutsche Anleitungen:
Zeile 140: Zeile 150:
     * Patric Green: [[https://blog.bagro.se/lets-encrypt-with-haproxy-on-opnsense/|Let's Encrypt with HAProxy on OPNsense]]     * Patric Green: [[https://blog.bagro.se/lets-encrypt-with-haproxy-on-opnsense/|Let's Encrypt with HAProxy on OPNsense]]
  
-Mozilla SSL-Konfiguration: 
-    * [[https://ssl-config.mozilla.org/#server=haproxy&version=2.21&config=intermediate&openssl=1.1.1f&ocsp=false|SSL Configuration Generator]] 
-    * Liefert eine Liste empfehlenswerter Verschlüsselungstechniken (Cipher). 
-    * "intermediate" dürfte für die meisten Anwender praktikabel sein. 
-    * Man sollte die Einstellungen z.B. jährlich aktualisieren... 
-    * Derzeit (April 2020) lautet sie:  
  
-         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 
                    
 {{tag>OPNsense Reverse-Proxy Firewall Letsencrypt HAProxy HTTP HTTPS Portnummer Dyn-DNS Fritzbox Zertifikat SSL-Offloading HowTo}} {{tag>OPNsense Reverse-Proxy Firewall Letsencrypt HAProxy HTTP HTTPS Portnummer Dyn-DNS Fritzbox Zertifikat SSL-Offloading HowTo}}