Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:webapps:ipfire_pound]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
anwenderwiki:webapps:ipfire_pound [2017/09/09 13:14]
Tobias [Weitere Pound-Konfigurationen:]
anwenderwiki:webapps:ipfire_pound [2017/09/21 16:30] (aktuell)
Tobias
Zeile 1: Zeile 1:
 +{{tag> ifire pound weiterleitung http https}}
 +
 +====== http/https an verschiedene interne Server umleiten ======
 +
 +Nach einer Mail von Willi Platzer als Grund für eine Umleitung:
 +
 +<​blockquote>​
 + Um den Zugang zu dem OwnCloud-Server sicherer zu gestalten habe ich Pound als Reverse Proxy installiert.
 + Das böse Internet kommt nur noch bis zum IPFire. Nur Pound greift auf den OwnCloud-Server zu.
 + Der Zugang zu andere lokalen Server (moodle usw.)  kann so auch freigegeben werden.
 + Sie benötigen einen DNS-Eintrag ( A-Record) der Ihren Web-Namen ​ cloud."​schule"​.de zu einer IP-Adresse auflöst.
 + Im folgenden meine Schritte zur Installation.
 +</​blockquote>​
 +
 +Ein zweiter Grund ist folgender: Eine externe Domäne möchte unter derselben IP-Adresse von außen verschieden angesprochen werden, so dass verschiedene Webserver antworten, z.b: schule.de/​cloud und schule.de/​horde oder cloud.schule.de und horde.schule.de. Man kann IPFire+pound so einrichten, dass Anfragen von außen jeweils auf die richtigen Server gelangen.
 +
 +Wir nehmen an, dass der Cloud-Server sinnvollerweise mit der IP 172.16.17.1 im ORANGE Netz (der DMZ) liegt.
 +
 +Anleitung (wieder nach Willi und Steffen):
 +
 +  - Das Paket Pound-2.7-8 auf dem IPfire installieren <​code>​ [root@ipfire ~]# pakfire install pound </​code>​
 +  - Zertifikat erzeugen (heutzutage:​ via letsencrypt,​ z.B. [[anwenderwiki:​server:​ssl-tls-letsencrypt-alt|Letsencrypt legacy client]], [[anwenderwiki:​server:​ssl-tls-letsencrypt|letsencrypt certbot client]] oder mit linuxmuster-dehydrated.
 +  - Das Zertifikat auf dem IPFire in ''/​etc/​ssl/​certs/''​ ablegen. <​code>​server ~ # cd /​etc/​linuxmuster-dehydrated/​certs/​schule.de/​
 +server /​etc/​linuxmuster-dehydrated/​certs/​schule.de # cat privkey.pem > server.pem
 +server /​etc/​linuxmuster-dehydrated/​certs/​schule.de # cat fullchain.pem >> server.pem
 +server /​etc/​linuxmuster-dehydrated/​certs/​schule.de # scp -P 222 server.pem ipfire:/​etc/​ssl/​certs/​ </​code>​
 +  - Die Startconfig für pound erzeugen <code bash /​etc/​sysconfig/​pound>​
 +# Set run_pound to 1 to start pound or 0 to disable it.
 +run_pound=1
 +# Specify additional pound options here (see manpage).
 +pound_options=""​
 +</​code>​
 +  - Die Config für pound erzeugen: Ersetze ''​1.1.1.1''​ durch die eigene externe IP. Ersetze ''​172.16.17.1''​ durch die eigene interne Adresse des Cloudservers. <code bash /​etc/​pound.cfg>​
 + ## Logging: (goes to syslog by default)
 + ## ​     0       no logging
 + ## ​     1       ​normal
 + ## ​     2       ​extended
 + ## ​     3       ​Apache-style (common log format)
 + ​LogLevel ​       1
 + ## check backend every X secs:
 + ​Alive ​          60
 + # poundctl control socket
 + ​Control "/​var/​run/​poundctl.socket"​
 +
 + # Cloudserver
 +ListenHTTPS
 +  HeadRemove "​X-Forwarded-Proto"​
 +  AddHeader "​X-Forwarded-Proto:​ https"
 +  Address 1.1.1.1
 +  Port 443
 +  # ist notwendig damit standard WebDAV aus geführt wird. es kann bei MS-Diensten auch xhhtp 3 notwendig sein
 +  # Android und Lightning funktionieren mit 2
 +  xHTTP 2
 +  # wurde in 2 erzeugt
 +  Cert "/​etc/​ssl/​certs/​server.pem"​
 +  Service "​cloud"​
 +  # die vollständige Adresse cloud."​schule"​.de des Cloudservers!
 +    HeadRequire "Host: cloud.schule.de.*"​
 +      BackEnd
 +        Address 172.16.17.1
 +        Port 443
 + # Damit https to https funktioniert!
 +        HTTPS
 +      End
 +    End
 +End
 +</​code>​
 +  - pound starten <​code>​ /​etc/​init.d/​pound start #stop restart </​code>​
 +  - Firewallregeln ändern: Wer bislang ein Routing von z.B: Firewall(ROT) nach 172.16.17.1:​443 hatte, der muss diese deaktivieren,​ stattdessen folgende Regeln anlegen
 +    - Verbindung Internet > firewall:​443:​ Firewallregel "​Eingehender Firewallzugang"​ erzeugen, d.h. der Zugriff auf Firewall:​443 ist vom Internet erlaubt! <​code>​
 +     ​Quelle Rot auswählen (oder  besser GeoIP mit der Auswahl der guten Länder ​ )
 +     Ziel Firewall ROT (IP) auswählen (nicht die Zieladresse oder ein Standardnetzwerk eingeben)
 +     ​Protokoll TCP     ​Quellport leer lassen ​   Zielport 443
 +     ​Regelposition 1
 +     Regel aktivieren
 +     ​Logging aktivieren </​code>​
 +    - Verbindung firewall > Cloudserver:​ Firewallregel "​Ausgehender Firewallzugang"​ erzeugen <​code>​
 +     ​Quelle Firewall (GRÜN) auswählen
 +     Ziel Zieladresse Cloud-IP (172.16.17.1) auswählen
 +     ​Regelposition 1
 +     Regel aktivieren
 +     ​Logging aktivieren </​code>​
 +    - Nicht vergessen, die Änderungen zu übernehmen.
 +  - Wer nicht nur von außen, sondern auch von GRÜN aus auf den DMZ-Server zugreifen will, braucht eine Routing-Regel:​ Quelle: GRÜN, Ziel: 172.16.17.1:​443 (mit oder ohne NAT funktioniert das bei mir)
 +
 +===== Weitere Pound-Konfigurationen:​ =====
 +
 +Hier noch meine Konfiguration als Beispiel:
 +<code none /​etc/​pound.cfg>​
 +  Service "​gitlab + co"
 +  HeadRequire "Host: simple.schule.de.*"​
 +    BackEnd
 +      Address 172.16.17.1
 +      Port 80
 +      #HTTPS
 +    End
 +  End
 +</​code>​
 +Dieser Service leitet HTTPS Anfragen auf HTTP Anfragen auf dem 172.16.17.1 um, wenn die Subdomäne "​simple.schule.de"​ heißt.
 +<code none /​etc/​pound.cfg>​
 +  Service "horde + co"
 +  HeadRequire "Host: server.schule.de.*"​
 +    BackEnd
 +        Address 10.16.1.1
 +        Port 443
 +        HTTPS
 +    End
 +  End
 +</​code>​
 +Dieser Service leitet HTTPS Anfragen auf HTTPS Anfragen auf dem server um (z.B für Horde)
 +<code none /​etc/​pound.cfg>​
 +  Service "​cloud,​bogy,​feedback,​phpmyadmin"​
 +  # die vollständige Adresse cloud."​schule"​.de des Cloudservers!
 +  HeadRequire "Host: (cloud.)schule.de.*"​
 +    BackEnd
 +      Address 172.16.17.2
 +      Port 443
 +# Damit https to https funktioniert!
 +      HTTPS
 +    End
 +  End
 +</​code>​
 +Dieser Service leitet HTTPS Anfragen auf HTTPS Anfragen auf dem Cloud-SErver (in ORANGE) um, wenn die Subdomäne cloud.schule.de heißt, oder auch, wenn die reine Domäne schule.de genommen wurde.
 +<code none /​etc/​pound.cfg>​
 +  Service "​everything else"
 +    Redirect "​https://​cloud.schule.de/​cloud"​
 +  End
 +</​code>​
 +Der letzte Service leitet alle übrigen Anfragen auf den cloud-server um.
  
 [[anwenderwiki:webapps:ipfire_pound]] anwenderwiki/webapps/ipfire_pound.txt · Zuletzt geändert: 2017/09/21 16:30 von Tobias