Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:webapps:ipfire_pound]] 

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):

  1. Das Paket Pound-2.7-8 auf dem IPfire installieren
     [root@ipfire ~]# pakfire install pound 
  2. Zertifikat erzeugen (heutzutage: via letsencrypt, z.B. Letsencrypt legacy client, letsencrypt certbot client oder mit linuxmuster-dehydrated.
  3. 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/ 
  4. Die Startconfig für pound erzeugen
    /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=""
  5. 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.
    /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
  6. pound starten
     /etc/init.d/pound start #stop restart 
  7. 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
    1. 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 
    2. 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 
    3. Nicht vergessen, die Änderungen zu übernehmen.
  8. 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:

/etc/pound.cfg
  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.

/etc/pound.cfg
  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)

/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

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.

/etc/pound.cfg
  Service "everything else"
    Redirect "https://cloud.schule.de/cloud"
  End

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 127.0.0.1