Bidirektionales SSH Tunneling - really freaky ;)

kyr0

Member
Hi zusammen,

so schaut mein Konzept aus:

Ich habe eine Client-Machine, nennen wir sie "Blackeye" und ein Gateway;
nennen wir es "Blackguide".

Blackguide steht außerhalb des LAN irgendwo im Netz und hat eine statische IP sowie einen Hostnamen den ich via Static DNS auflösen kann.

Blackeye steht innerhalb eines Company-Lan.
Da unsere Company nun beschlossen hat, entgegen aller Moralvorstellungen rumzuschnüffeln und zu filtern, muss ich mir nun andere Wege suchen.

Also möchte ich Blackguide für besondere Anfragen als Gateway nutzen.

Folgend soll es später aussehen:
ich besuche: google.de:10080 und meine Anfrage wird über eine SSH-Session zu Blackguide geroutet und von dort wird die Antwort zurück an mich geroutet. Und dort an meine Anwendung übergeben.

Soweit sogut. Ich würde diesen Post nicht schreiben, wenn ich nicht schon Tagelang mit IP-Tables, SSH und anderen Tools geplänkelt hätte ;)

Letztendlich hab ich das Tool HTTP-Tunnel aus dem Gedächtnis gegraben.
Dummerweise ist das ein HTTP-Tunnel. I need encryption =)

Also sozusagen HTTP-Tunnel verandelt in SSH-Tunnel.
Nun brauch ich euer Brain ;)

Was habt ihr für nette Ideen, das umztusetzen.
Wenn garnichts hilft, würde ich http-tunnel umprogrammieren,
aber das ist sicher nen aufwand, den ich nicht haben möchte
wenns auch irgendwie anders geht.

Danke schonmal für eure Hilfe ;)

Grüße
kyr0
 
habe ich das so richtig verstanden?
du willst:
Code:
Blackeye -->Firmenlan-->Inet-->Blackguide-->foo.bar
| mit Blackeye -> Blackguide sei SSH-Tunnel?

Ich mache sowas manchmal von Messen oder dem C3 aus folgendermaßen mit meinem Unirechner (feste IP). (Du brauchst aber Installationsmöglichkeiten auf dem Blackguide)

Code:
Laptop --ssh--> Uniserver --> www

1.) Auf dem Unirechner IJB (The Internet Junkbuster) installieren, ist ein WWW-Proxy der Spam filtern soll, aber eben in erster Linie ein Proxy. Horchen soll er auf 127.0.0.1:8080, damit er von aussen nicht angreifbar ist ;-)

2.) Tunnel zum Unirechner mit portforwarding auf den IJB aufbauen:

Code:
ssh -2 -C -c rijndael256-cbc stefan@unirechner -L 50000:127.0.0.1:8080

3.) alle Anfragen, die ich nun auf meinem Laptop auf 127.0.0.1:50000 absetze, werden zum Uniserver per SSH verschlüsselt getunnelt, d.h. im Opera einfach nur noch 127.0.0.1:50000 als Proxy setzen, und bis zum Unirechner kann keiner sniffen ;-)


Update: man kann den SSH Tunnel auch auf den Mailserver umbiegen, damit keiner sniffen kann ;-)

2.) Update: Falls die Firma SSH blockt, einfach den sshd am Server auf 443 umlenken, das ist HTTPS und meist frei.

3.) Update: du kannst natürlich auch zu der Zielseite per portforwarding tunneln bspw:
ssh -l 50000:google.de:80 und dann 127.0.0.1:50000 ansprechen, aber sobald du von google z.B. auf web.de umbiegst, ist der Tunnel logischerweise futsch. Das übernimmt in meinem Verfahren der IJB, der sich um die Zieladressen kümmert.
 
Last edited:
Du kannst bequem mittels ssh+ppp ein VPN erzeugen und dann zB die Adresse des Gegenueber als sog. default gateway eintragen. VPN halt, aber ich bin mir nicht ganz sicher, was du wirklich willst? Die Kommunikation zwischen zwei Rechner per SSH verschluesseln, und dann allen Verkehr drueber tunneln? Falls ja, frag nochmal nach, dann Kram ich meine config vor.

PS: Ich rede nicht von einem port-forward.
 
Nochmalige Präzison meines Ziels:

Client (bar)

Wenn Outgoing-IP von eth0 eine Adresse im Bereich 192.168.n.n ansrpicht dann nutze gateway: 192.168.1.254 Port 3128.
Wenn Outgoing-IP von eth0 eine Adresse außerhalb von 192.168.n.n ist:
Stelle eine SSH-Verbindung zu foo über Port 22 her.
Tunnel alle Packete zu foo.
{Outgoing-IP = Ziel meiner Packete}

{das setzt natürlich vorraus, das ich zuerst die adressenauflösen muss um dessen IP rauszufinden... }

Server (foo)
Wenn eine neue Verbindung von bar kommt, nimm diese an, nimm die Packete und fungier als Gateway.
Alle Antwort-Packete schick über die SSH-Session zurück nach bar.

Alles das kann man eigentlich recht einfach mit IP-Tables und "route" herstellen.

Dennoch:
Wie starte ich aus den IP-Tables heraus eine SSH-Session zu foo?
(meines Wissens nicht möglich, aber wie soll ich das anders machen?)

Wie lokalisier ich auf foo die richitge Session, um Antwortpackete auch bidirektional zurück zu schicken? (state established?)

Grüße und Danke für die vielen Antworten
kyr0
 
Last edited:
Bei jedem "Paket" (du meinst wohl eher Verbindung) einen SSH-Tunnel on-the-fly aufzustellen ist IHMO der falsche Weg. Mit SSH-Multiplexing koennte das noch halbwegs gehen, aber warum nimmst du nicht gleich ein VPN?

Desweiteren kannst du nicht bel. IP-Pakete einfach auf einen Port routen. Port 3128 ist doch ziemlich sicher ein http-proxy. Also was willst du eigenlich? Internet routen, oder das "WWW" routen?

Nochwas, wenn das tunneln in der Firma nicht erlaubt ist, riskierst du deinen Arbeitsplatz. Ueberlegs dir genau.
 
Back
Top