Webinterface vom LAN ins öffentliche Internet bringen

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
Exxter
Beiträge: 383
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Webinterface vom LAN ins öffentliche Internet bringen

Beitrag von Exxter » 29.01.2018 10:41:43

Hallo,

ich möchte ein Webinterface, welches auf einem Raspi innerhalb eines LAN's erreichbar ist, über einen Debian Root-Server dauerhaft im Internet zugänglich machen, allerdings mit Passwort und SSL geschützt. Anfang ist ein SSH-Tunnel vom Raspi auf den Root-Server:

Code: Alles auswählen

ssh -p22222 -nNT -R 33333:localhost:80 USER@example.org
Das funktioniert zumindest mit "links" im Terminal, ich bekomme auf einem anderen Rechner in einem anderen LAN mit "links http://example.org:33333/" die Standard Webseite vom Raspi.

Nun bilde ich mir ein, sollte aus Scherheitsgründen direkt auf dem Root-Server, noch bevor ich überhaupt zum SSH-Tunnel komme, ein Passwort abgefragt werden. Außerdem sollte die Verbindung natürlich per SSL verschlüsselt sein.

Jemand eine Idee, wie ich das realisieren könnte?

Ich habe den Zugriff auch mit Firefox, Chrome und Vivaldi getestet, dort kommen aber überall SSL-Fehler:

Code: Alles auswählen

Fehler: Gesicherte Verbindung fehlgeschlagen

Ein Fehler ist während einer Verbindung mit example.org:33333 aufgetreten. SSL hat einen Eintrag erhalten, der die maximal erlaubte Länge überschritten hat. Fehlercode: SSL_ERROR_RX_RECORD_TOO_LONG
Auch wenn ich kein httpS nehme sondern direkt http wechselt er in jedem Browser auf https.

AllowTcpForwarding yes
GatewayPorts yes

habe ich auf dem root-Server in der /etc/ssh/sshd_config eingestellt.

Ein Portforwarding am Router des LAN's ist nicht möglich.

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: Webinterface vom LAN ins öffentliche Internet bringen

Beitrag von uname » 29.01.2018 13:34:08

Ich glaube du solltest dir erst mal überlegen ob du ein VPN, SSH-Tunnel oder eine Weiterleitung eines Webservers nutzen willst.

Ich gehe mal davon aus, dass du den intern gehosteten Raspi (z. B. Nextcloud) über Internet erreichbar machen möchtest. Folgende Möglichkeiten sehe ich

a.) VPN
Es sollen nur gewisse Clients aus dem Internet zugreifen. Bei einen echten VPN (z. B. openvpn) vergibt man Schlüssel und somit fällt eine Passwortanmeldung weg. Die Clients (im Internet) befinden sich über VPN (virtuell) im LAN und fertig. Hierfür müsste auf den Server im LAN der VPN-Server installiert werden. Ist ein DSL-Router noch vorgeschaltet müssen der oder die relevanten VPN-Ports weitergeleitet und konfiguriert werden. Alle Clients im Internet benötigen einen VPN-Client sowie eine geeignete Konfiguration (z. B. Preshared Key). Zugriff über z. B. Smartphones ist möglich aber komplizierter.

b.) Webzugriff
Es wird einfach am DSL-Router eine Portweiterleitung auf den Raspi für HTTP und/oder HTTPS eingerichtet. Sollte eine Benutzerverwaltung notwendig sein findet diese erst auf dem Raspi statt. Der DSL-Router leitet einfach die Verbindung ins interne LAN weiter. Der Webservice ist von jeden Rechner im Internet erreichbar, sofern man DNS / IP-Adresse und Port kennt. Die Benutzerverwaltung (z. B. Nextcloud) schützt die Daten. Zugriff auch z. B. mit Smartphones möglich, da kein VPN-Client installiert werden muss ... es reicht ein Browser. Evtl. kann zur Optimierung noch WebDAV verwendet werden.

http://www.pc-magazin.de/ratgeber/nextc ... 98015.html
(nicht gelesen, aber Seite 3 könnte interessant sein)

Am einfachsten wird Lösung b.) zu realisieren sein.

Exxter
Beiträge: 383
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Webinterface vom LAN ins öffentliche Internet bringen

Beitrag von Exxter » 29.01.2018 14:12:45

Hallo uname,

genau das ist der Wunsch, ein intern gehostetes Webinterface (kerberos.io) übers Internet erreichbar zu machen.
Leider funktionieren beide Wege in dem Fall nicht: der Raspi hängt hinter einem Kabelmodem welches mit Carrier-grade NAT ans Internet angeschlossen ist. Ich bin auf einen Tunnel angewiesen da das Modem / der Router nicht direkt aus dem Internet erreichbar ist.

Aber wie es aussieht scheint es dafür keine Lösung zu geben. Ich dachte vielleicht kann man mit Apache eine Art Weiterleitung einrichten mit einem gesetzten Passwort, aber dazu finde ich gerade nichts..

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: Webinterface vom LAN ins öffentliche Internet bringen

Beitrag von uname » 29.01.2018 14:24:25

Das ändert alles. Auch verstehe ich nun warum du von einen root-Server schreibst, der dann natürlich im Internet steht ;-)

Code: Alles auswählen

ssh -p22222 -nNT -R 33333:localhost:80 USER@example.org
Ich könnte mir vorstellen, dass raspi:80 auf example.org nur über 127.0.0.1:33333 und nicht über 0.0.0.0:33333 erreichbar ist.

Versuche mal:

Code: Alles auswählen

ssh -p22222 -nNT -R 0.0.0.0:33333:localhost:80 USER@example.org
Bei dieser Lösung solltest du natürlich besser SSL (:443) verwenden, da der Weg vom Client zum root-Server nicht verschlüsselt wird. Leider sind bei SSL Probleme mit den SSL-Zertifikaten vorprogrammiert (Zertifikatswarnung im Browser).

Das Problem mit den Passwörtern musst du erst mal verschieben. Versuche erst mal ob der Zugriff nun geht.

Exxter
Beiträge: 383
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Webinterface vom LAN ins öffentliche Internet bringen

Beitrag von Exxter » 29.01.2018 14:50:55

uname hat geschrieben: ↑ zum Beitrag ↑
29.01.2018 14:24:25
Versuche mal:

Code: Alles auswählen

ssh -p22222 -nNT -R 0.0.0.0:33333:localhost:80 USER@example.org
Wenn ich den Tunnel laufen habe kommt der Fehler "ERR_SSL_PROTOCOL_ERROR" und wenn ich ihn aus habe kommt "ERR_CONNECTION_REFUSED", also denke ich, dass der Tunnel schon funktioniert. Außerdem klappt er mit 'links' auf dem Terminal, vermutlich weil links nicht automatisch auf SSL umschaltet wie Firefox/Chrome/Vivaldi. Ich habe den Apache auf dem Raspi auch nicht konfiguriert, nur installiert und die index.html angepasst. In der Log des Apaches kommt beim Zugriff:

Code: Alles auswählen

::1 - - [29/Jan/2018:14:49:51 +0100] "GET / HTTP/1.1" 200 296 "-" "Links (2.14; Linux 4.9.0-5-amd64 x86_64; GNU C 6.3; text)"
::1 - - [29/Jan/2018:14:50:03 +0100] "\x16\x03\x01" 400 0 "-" "-"
die zweite Zeile mit grafischem Browser.

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: Webinterface vom LAN ins öffentliche Internet bringen

Beitrag von uname » 29.01.2018 15:17:22

Wenn ich den Tunnel laufen habe kommt der Fehler "ERR_SSL_PROTOCOL_ERROR"
Lokal auf den root-Server ode von einen Client über den root-Server?

Den Fehler hätte ich nun nicht erwartet. Was nutzt du überhaupt für ein SSL-Zertifikat auf deinen Raspi?


Sofern du es hinbekommst lokal auf den root-Server (z. B. per Firefox in X11, im Tunnel geforwardet, links/w3m/wget mit https:// ) die SSL-Verbindung korrekt aufzurufen, könntest du statt der direkten Weiterleitung (0.0.0.0:) auch einen SSL nutzenden Apache2 Reverse Proxy verwenden. Natürlich bräuchtest du dann ein eigenes SSL-Zertifikat z. B. von Let's encrypt für deinen root-Server.

Exxter
Beiträge: 383
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Webinterface vom LAN ins öffentliche Internet bringen

Beitrag von Exxter » 30.01.2018 06:41:45

Sowohl als auch: ich habe noch einen weiteren Root-Server der weder mit meinem LAN noch mit meinem eigenen Root-Server etwas zu tun hat. Auf dem kann ich mit links die Seite "example.org:33333" aufrufen (es kommt der in die index.html vom Raspi geschriebene Text). Ist die selbe Verbindung, wie wenn ich sie mit einem grafischen Browser aufrufe zB. vom Smartphone über eine mobile Verbindung, nur da kommt eben immer der ERR_SSL_PROTOCOL_ERROR.
Auf dem Raspi ist alles Standard, das ist ein selbst-signiertes Zertifikat. Auf example.org habe ich auf Port 80 ein Lets Encrypt SSL-Zertifikat. Hmm, könnte ich mal auf den Raspi kopieren und sehen, ob es damit klappt. Mit dem Apache2 Reverse Proxy werde ich mich mal näher befassen.

Antworten