{{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.