TCP Server und Client vertauschen

andr_gin

Grand Admiral Special
Mitglied seit
12.06.2003
Beiträge
3.052
Renomée
24
Standort
St. Pölten (60km westlich von Wien)
Ich stehe vor einem etwas kniffligen Problem:

Ich habe einen Kunde, bei dem eine Maschine verbaut ist. Auf diese kann man sich für Fernwartungszwecke per TCP verbinden.
Jetzt habe ich natürlich das übliche Problem, dass ich nur die externe IP zur Verfügung habe und ich natürlich auch nicht wild irgendwelche Portweiterleitungen in einem fremden Netz machen kann, da dann ja jeder von außen zugreifen kann. Genauso kann ich mich auch nicht per VPN mit dem Netzwerk des Kunden verbinden, da dieser das nicht gestatten würde.

Es wird nur möglich sein mich bei Bedarf von der Anlage beim Kunden nach außen zu einer fixen IP (bei mir im Netz) zu verbinden.
Kennt da jemand ein Tool, das ich bei mir und auf einem PC des Kunden installieren kann, das mir die Kommunikation dazwischen umdreht (also ein Wechsel TCP-Client und TCP-Server) und wenn möglich auch noch über einen beliebigen Port läuft, damit ich nicht irgendwo an der Firewall hängen bleibe.
 
Die einzige sichere Möglichkeit die ich sehe ist eine VPN-Verbindung zum Kundennetzwerk. Die sollen halt den VPN-Server so konfigurieren, dass Du Dich nur mit der Maschine verbinden kannst. Alles andere ist vermutlich Murks.
 
Könnte funktionieren. Die Frage ist, wie kann man das absichern, und wie verhält sich das bei Verbindungsunterbrechungen?

Edit: Mit GNU httptunnel könnte es theoretisch auch funktionieren.
 
Zuletzt bearbeitet:
der httptunnel unterstutzt keine verschlüsselung ? da könnten wir ja gleich portknocking nehmen ;)
 
Verschlüsselung ist aber noch kein Schutz. Nur weil Daten während der Übertragung per SSL geschützt sind, heißt das noch nicht, dass sich nicht jeder damit verbinden könnte. Bei stunnel bin ich mir wie gesagt auch nicht sicher, ob das eine sichere Authentifizierung unterstützt.
 
hmm. vllt ist portknocking eine alternative?

Meinst du das hier damit: http://de.wikipedia.org/wiki/Portknocking
Das hilft mir nicht weiter, da das sofort irgendwo an der Firewall des Kunden gefressen wird und auf die habe ich keinen Zugriff, geschweige denn dass ich hier irgendetwas nachinstallieren könnte.

Die einzige sichere Möglichkeit die ich sehe ist eine VPN-Verbindung zum Kundennetzwerk. Die sollen halt den VPN-Server so konfigurieren, dass Du Dich nur mit der Maschine verbinden kannst. Alles andere ist vermutlich Murks.

Das Problem daran ist, dass dort Server mit kritischen Daten sind, auf die niemand von außen Zugriff haben darf. Ich darf nur Zugriff auf meine Maschine bekommen, aber nicht auf das ganze Subnetz.

stunnel? :P muss ja nich gleich vpn sein.....

Die Daten, die übertragen werden, sind im Gegensatz zu denen des Kunden absolut unkritisch. Eine Verschlüsselung ist hier nicht notwendig. VPN wäre nur interessant, weil es einem das Problem des Portforwardings löst und gleichzeitig eine Authentifizierung bietet, damit nicht jeder rein kann (weil Änderungen wären hier doch wieder kritisch).

Könnte funktionieren. Die Frage ist, wie kann man das absichern, und wie verhält sich das bei Verbindungsunterbrechungen?

Verbindungsunterbrechungen sind egal. Die Fernwartung wird sowieso nur bei Bedarf in Betrieb genommen. Wenn die Verbindung wirklich abreißt, dann wird Client und Server auf beiden Seiten per Taskmanager abgeschossen und neu gestartet.

Edit: Mit GNU httptunnel könnte es theoretisch auch funktionieren.

Genau das ist es, was ich mir vorgestellt hätte.
Das einzige Problem daran ist, dass der Tunnel in die falsche Richtung läuft. Der Tunnelserver ist lokaler Client und der Tunnelclient ist lokaler Server d.h. die Serverseite ist erst wieder beim Kunden und die Clientseite bei mir. Somit ist der Tunnel hinfällig.

Was ich bräuchte wäre genau diese Konstellation zu vertauschen.
Dazu wäre es notwendig, dass der Tunnelserver auf beiden Seiten Server ist (Tunnel und lokal) und der Tunnelclient auf beiden Seiten Client.
Dass es bei mehreren gleichzeitigen Verbindungen kompliziert wird das Ganze zu realisieren, ist klar. Das ist aber wahrscheinlich auch nicht notwendig.

der httptunnel unterstutzt keine verschlüsselung ? da könnten wir ja gleich portknocking nehmen ;)

Verschlüsselung ist wie gesagt nicht notwendig.

Verschlüsselung ist aber noch kein Schutz. Nur weil Daten während der Übertragung per SSL geschützt sind, heißt das noch nicht, dass sich nicht jeder damit verbinden könnte. Bei stunnel bin ich mir wie gesagt auch nicht sicher, ob das eine sichere Authentifizierung unterstützt.

Die Authentifizierung wäre ja schon dadurch gegeben, dass wenn der Tunnel auf Kundenseite Client ist, dass sich dieser nur zu einer fix vorgegebenen IP verbinden kann. Das Mitsniffern der Daten ist nicht wirklich ein Problem und dass jemand die TCP Connection so manipuliert, dass da falsche Daten ankommen in einem ziemlich komplexen Protokoll, halte ich auch einmal für ausgeschlossen.

P.S.: Ich sollte vielleicht noch dazusagen, dass die Maschine, die ich fernwarten muss eine Siemens SPS ist d.h. ich kann hier nichts installieren, konfigurieren etc. Der TunnelClient muss also auf einem extra PC beim Kunden laufen, während meine Anlage im selben Subnetz daneben steht.
 
Zurück
Oben Unten