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
Letzte ÜberarbeitungBeide Seiten der Revision
sysbetr:reverse_proxy_opnsense [2020/04/17 17:53] – [Konfiguration von Letsencrypt (acme-client) und von HAProxy] cbsysbetr:reverse_proxy_opnsense [2020/04/27 23:11] – [Verschlüsselung optimieren] cb
Zeile 1: Zeile 1:
 ====Reverse-Proxy auf Basis von OPNsense==== ====Reverse-Proxy auf Basis von OPNsense====
 ===Grund=== ===Grund===
-Ich möchte ((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.)) von Debian mit Shorewall als Firewallbasis weg, hin zu **OPNsense**. Dazu gehört auch der Reverse-Proxy am Eingang des Netzes. Dieser übernimmt auch weitere Aufgaben wie Dynamisches DNS, SSL-Offloading, Letsencrypt usw.+Ich möchte ((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.)) 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.
  
  
Zeile 88: Zeile 88:
       * 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...+Unnötig zu sagen, dass HAProxy natürlich deutlich komplexer ist, als hier dargestellt. auch Backend-Server können Regeln haben. Benutzeranmeldung kann gemacht werden...
  
 +Wenn es nicht funktioniert: Unten sind einige Fehler beschrieben.
 +
 +===Verschlüsselung optimieren===
 +Voraussetzung: Es funktioniert!
 +
 +Nun kann man die Verschlüsselung bei [[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:
 +
 +{{ :sysbetr:screenshotopnsense_cipher.png?nolink|}}
 +
 +Bei Settings->Global Parameters:
 +    * Maximum SSL DH Size aus 2048 erhöhen
 +    * Bind options: no-tlsv11 ergänzen
 +    * Cipher List: Löschen und die Zeichenfolge von Mozilla "Intermediate" (siehe unten) übernehmen.
 +
 +Beim Virtual Service->Public Service-> NameMeinesPublicService:
 +    * Bind options: no-tlsv11 ergänzen
 +    * Cipher List: Löschen und die Zeichenfolge von Mozilla "Intermediate" (siehe unten) übernehmen.
 +    * Enable HTTP/2
 +
 +Schließlich kann man noch in dem DNS-Server der Domain einen CAA-Eintrag machen:
 +    example.org. CAA 128 issue "letsencrypt.org"
 +
 +
 +===Fehler, die mir unterkamen und ihre Ursachen===
 +    * 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
 +      * -> 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
 +        * oben der Haken bei "Disable web GUI redirect rule" nicht gesetzt worden!
 +    * HAProxy lässt sich nicht starten
 +      * -> Teste die Konfiguration mit dem Button
 +      * -> Sind bei abgeschaltetem HAProxy die Ports 80 und 443 wirklich frei? D.h. nicht erreichbar?
 +      * Übrigens: Wenn fälschlicherweise immer noch die Administration auf 443 läuft, so bekommt man auch eine merkwürdige DNS-Rebind-Attack-Meldung. Daher "**Unbedingt** verlegen".
 +    * Die Server sind aus dem LAN zwischen Fritzbox und OPNsense nicht zu erreichen.
 +      * Private Network Adresses für WAN-Interface gesperrt? (OPNsense-WAN-Interface-Konfiguration)
 +      * Namensauflösung gescheitert, da die Fritzbox interne IP-Adressen nicht auflöst? (testen mit //host remote.example.com// . Ausnahmeliste in der Fritzbox-Netzwerk-Konfiguration ergänzen)
 +    * 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.
 ===Quellen & Links=== ===Quellen & Links===
-Deutsche Anleitung:[[https://www.triumvirat.org/2020/02/17/haproxy-reverse-proxy-mit-lets-encrypt-zertifikaten-unter-opnsense-20-1/|HAProxy Reverse Proxy mit Let’s Encrypt Zertifikaten unter OPNsense 20.1]]+Deutsche Anleitungen: 
 +    * Schulnetzkonzept: [[https://schulnetzkonzept.de/opnsense#article-100|Installation und Konfiguration des Reverse-Proxy-Servers]] 
 +    * Triumvirat: [[https://www.triumvirat.org/2020/02/17/haproxy-reverse-proxy-mit-lets-encrypt-zertifikaten-unter-opnsense-20-1/|HAProxy Reverse Proxy mit Let’s Encrypt Zertifikaten unter OPNsense 20.1]] 
 + 
 +Englische Anleitung: 
 +    * OPNsense-Forum: [[https://forum.opnsense.org/index.php?topic=12126.0|HowTo - Let's encrypt with HaProxy with 19.1.4]] 
 +    * OPNsense-Dokumentation: [[https://docs.opnsense.org/manual/how-tos/haproxy.html#haproxy|HAProxy Installation]] 
 +    * Patric Green: [[https://blog.bagro.se/lets-encrypt-with-haproxy-on-opnsense/|Let's Encrypt with HAProxy on OPNsense]]
  
-Englische Anleitung:[[https://forum.opnsense.org/index.php?topic=12126.0|HowTo - Let's encrypt with HaProxy with 19.1.4]]+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: 
  
-Mozilla SSL-Konfiguration[[https://ssl-config.mozilla.org/#server=haproxy&version=2.21&config=intermediate&openssl=1.1.1f&ocsp=false|SSL Configuration Generator]]+         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}}