{{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:
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.
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 [root@ipfire ~]# pakfire install pound - 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. 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/ - Die Startconfig für pound erzeugen # 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="" - 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. ## 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 - pound starten /etc/init.d/pound start #stop restart - 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! 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 - Verbindung firewall > Cloudserver: Firewallregel "Ausgehender Firewallzugang" erzeugen Quelle Firewall (GRÜN) auswählen Ziel Zieladresse Cloud-IP (172.16.17.1) auswählen Regelposition 1 Regel aktivieren Logging aktivieren - 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: Service "gitlab + co" HeadRequire "Host: simple.schule.de.*" BackEnd Address 172.16.17.1 Port 80 #HTTPS End End Dieser Service leitet HTTPS Anfragen auf HTTP Anfragen auf dem 172.16.17.1 um, wenn die Subdomäne "simple.schule.de" heißt. Service "horde + co" HeadRequire "Host: server.schule.de.*" BackEnd Address 10.16.1.1 Port 443 HTTPS End End Dieser Service leitet HTTPS Anfragen auf HTTPS Anfragen auf dem server um (z.B für Horde) 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 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. Service "everything else" Redirect "https://cloud.schule.de/cloud" End Der letzte Service leitet alle übrigen Anfragen auf den cloud-server um.