Miniserver per HTTPS erreichbar machen (Stunnel)

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Gast

    #1

    Miniserver per HTTPS erreichbar machen (Stunnel)

    Hallo allerseits,

    ich wollte hier noch eine Alternative für den HTTPS Zugang zum Miniserver vorstellen. Mit dem wirklich genialen Tool stunnel (https://www.stunnel.org) können beliebige TCP Verbindungen per SSL Tunnel gesichert werden.

    Ich habe dazu in meinem Heimnetz einen Stunnel Server installiert, der eine entsprechende ankommende SSL Verbindung an den Miniserver weiterleitet. Der Stunnel Server muss natürlich per Dyndns und Port Forwarding über das Internet erreichbar sein. Auf meinem Android Gerät (ist gerootet, soll aber auch mit nicht gerooteten Geräten per SSLDroid funktionieren) ist der stunnel client installiert, der die Verbindung der Loxone App mit SSL Verschlüsselung an den Server weiterleitet. Das ganze sieht dann ungefähr wie folgt aus:


    Loxone APP (Android) Port 80 -> stunnel client (Android) Verschlüsselung über Port z.B. 50000 -> INTERNET -> stunnel Server Entschlüsselung Port 80 -> Miniserver

    Der Miniserver und die Loxone App bekommen von der Verschlüsselung über Stunnel gar nichts mit, da Stunnel komplett transparent alle Pakete weiterleitet.

    Als externe Adresse muss beim Miniserver dann 127.0.0.1:50000 eingetragen werden, damit beim externen Zugriff der lokal installierte stunnel client angefragt wird. Mit einer entsprechenden stunnel client Konfiguration, wird dann die Verbindung verschlüsselt über Port 50000 übers Internet an die Dyndns Adresse des stunnel Servers geschickt. Dieser leitet dann die empfangenen Pakete im heimischen Netz wieder entschlüsselt weiter an den Miniserver.

    Diese Konfiguration läuft bei mir jetzt schon seit ca. 1 Jahr absolut problemlos. Praktisch daran ist, dass ich für den externen Zugriff auf den Miniserver vorher keine VPN Verbindung aufbauen muss. Auch der Zugriff per Loxone App auf meine Kameras zu Hause funktioniert über zusätzliche Ports in der stunnel Konfiguration einwandfrei. Nur die Sprachverbindung bei der Intercom (SIP Telefonie) habe ich nicht zum Laufen bekommen.

    Zusätzlich kann man die Sicherheit weiter erhöhen, in dem man nur bestimmte Clients (über Zertifikate) beim Stunnel Server zulässt. Somit hat man die Sicherheit, dass nur ausgewählte Geräte Zugriff auf den Miniserver erhalten, unabhängig vom Loxone Passwort.

    Falls Interesse besteht und ich Zeit finde, würde ich mich auch an ein kleines HOWTO machen. Ich denke aber, die meisten Tüftler hier werden das auch so hinbekommen.

    Viele Grüße aus Berlin,


    Stefan
  • Gerrit
    MS Profi
    • 26.08.2015
    • 942

    #2
    Super!
    Ich denke dass sollte man auf jeden Fall im Wiki ablegen, weil eigentlich jeder mindestens diese Konfiguration verwenden sollte. Gibts auch eine Lösung für Deskop, also Zugriff per Browser?
    Zudem bräuchte man den Miniserver dann nicht nach außen über Port Forwarding freigeben, sondern nur stunnel.
    Zertifikate sollte man dann auch auf jeden Fall nutzen. Ich werde das ganze mal am WE ausprobieren.
    Dann kann ich jetzt meine Anfrage an Loxone zurücknehmen, dass sie ihre Webapp anpassen sollen, dass sie nicht mehr HTTP statt HTTPS-Anfragen im JS-Code erzeugen, wenn man die Seite über HTTPS (über Reverse-Proxy) aufruft.

    Kommentar

    • BSiege
      LoxBus Spammer
      • 04.10.2015
      • 249

      #3
      Zitat von Gerrit
      Super!
      Gibts auch eine Lösung für Deskop, also Zugriff per Browser?
      Natürlich, ist ja unabhängig. Du verbindest auf einen localen proxy. Als alter Linuxer mache ich ab und zu das selbe mit ssh. Diese Dinge geraten halt immer mehr in Vergessenheit, weil es immer mehr Services gibt, die sich von Haus aus sauber absichern können. Der Aufwand solche Sachen zu Dokumentieren ist nicht zu unterschätzen, vor allem wenn man mehrere Ports so absichern will.

      Kommentar

      • Gerrit
        MS Profi
        • 26.08.2015
        • 942

        #4
        Achso an SSH hat ich jetzt fürs Handy gar nicht gedacht. Gibts da auch etwas zuverlässiges, bei dem man sich nicht manuell verbinden muss jedes Mal?
        Als Desktop gibts bei uns Mac OS X und Windows, und da hat ich jetzt auf die schnelle nicht soviel zu STunnel Clients gelesen. Oder ich hab noch nicht verstanden, ob stunnel gleichzeitig Server als auch Client sein kann. Man könnte natürlich beides anbieten, stunnel und ssh. Lokal könnte man dann je nach client denselben lokalen Port verwenden. Setzt ihr das schon erfolgreich ein und der Loxone Client beschwert sich auch nicht?

        Gast
        Könntest du deine stunnel server config bereitstellen?

        Kommentar


        • BSiege
          BSiege kommentierte
          Kommentar bearbeiten
          Damit es nicht falsch verstanden wird: Wenn man mit SSH-Tunneln umgehen kann, kann das öfters aus der Patsche helfen. Für praktisch jedes Protokoll das keine eigenen Rückkanäle aufbauen muss. Aber auf Android möchte ich das trotzdem nicht Automatisieren. Eher ein Leatherman für Techniker. Ganz geil ist wenn noch mosh https://mosh.org/ mitspielt. JuiceSSH kann das alles.
      • Gast

        #5
        Hallo Gerrit,

        stunnel gibt es für Android, Windows und Linux. Es sollte also mit all diesen Betriebssystemen funktionieren. Welches Programm Du dann benutzt (Browser, Loxone App, oder was auch immer) ist stunnel egal. Stunnel selber gibt es nur in einer Version, die Du dann über die Konfig-Datei als Server oder Client konfigurierst. Das ganze funktioniert absolut transparent, Du musst also keine manuelle Verbindung vorher anstoßen. Nur die Programme, die stunnel verwenden sollen, müssen auf den lokalen stunnel client konfiguriert werden. Also zum Beispiel 127.0.0.1:50200 im Browser oder der Loxone App eingeben.

        Kurz zur Konfig:

        Wie Du schon geschrieben hast, musst Du nicht den Miniserver sondern stunnel per Port Forwarding freigeben. (In meinem Fall 50200 und 50201).

        Meine stunnel.conf auf dem Server sieht folgendermassen aus: Falls Du den Port des Miniservers von 80 geändert hast, musst Du das natürlich entsprechend anpassen.

        CAFile = ca-certs.pem
        cert = stunnel-server.pem
        output = stunnel.log
        [loxone]
        accept = 50200
        connect = "Miniserver IP-Adresse":80
        [cam]
        accept = 50201
        connect = "Miniserver IP-Adresse":80


        Meine stunnel.conf als Client sieht dem entsprechend so aus:

        delay = yes
        cert = /data/local/etc/stunnel/stunnel.pem
        options = NO_SSLv2
        [loxone]
        client = yes
        accept = 127.0.0.1:50200
        connect = "dyndns-name":50200
        [Camera]
        client = yes
        accept = 127.0.0.1:50201
        connect = "dyndns-name":50201

        Auf jedem Gerät mit dem Du per stunnel auf Deinen Miniserver zugreifen möchtest, muss lokal auch stunnel mit der entsprechenden Konfig installiert sein.

        Hoffe Du kommst damit zu Recht und bekommst Das ganze zum Laufen. Wie gesagt, wenn ich etwas Zeit finde, würde ich mich an ein kurzes HOWTO machen.

        Viel Spaß dabei und viele Grüße,

        Stefan

        Kommentar

        Lädt...