SSH Tunnel über einen Proxy zu einem Proxy

Wir lernen heute, wie wir über einen Proxy einen SSH Tunnel zu einem Linux Server aufbauen, auf dem in dem Fall auch ein Proxy installiert ist.

Zu was ist sowas nötig?

Nehmen wir mal an, wir sitzen schön in einem öffentlichem Netz oder in der Schule. Viele Betreiber blocken Dienste oder Seiten. Zudem ist der Verkehr in diesem Fall verschlüsselt, in der Regel ist das ein 128 Bit AES Schlüssel. So kann niemand im (W)LAN die Daten mitlesen, die wir über HTTP oder SMTP/POP3/IMAP senden. Auch ICQ und MSN nutzen keinen verschlüsselten Transport der Gesprächdaten. ICQ meldet sich sogar “Plaintext” also Unverschlüsselt am Server an, da haben Hacker sehr leichtes Spiel.

Was benötige ich?

  • einen SSH Server, der das “Tunneln” unterstützt mit Proxy (Proxy2)
  • PuTTY
  • die Daten für den “lokalen” Proxyserver(Proxy1)

Und wie geht das nun?

Zunächst schauen wir uns die lokale IP-Konfiguration an, im Windows funktioniert das mit “ipconfig“.

Windows-IP-Konfiguration
Ethernet-Adapter LAN-Verbindung 2:

Verbindungsspezifisches DNS-Suffix:
IP-Adresse. . . . . . . . . . . . : 192.168.0.102
Subnetzmaske  . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : 192.168.0.1

und im Linux “ifconfig

eth0      Link encap:Ethernet  HWaddr 00:1c:f0:65:b5:ed
inet addr:192.168.0.111 Bcast:192.168.0.255  Mask:255.255.255.0
inet6 addr: fe80::21c:f0ff:fe65:b5ed/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:59 errors:0 dropped:0 overruns:0 frame:0
TX packets:66 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7660 (7.4 KiB)  TX bytes:8245 (8.0 KiB)
Interrupt:10

Ich habe in beiden Fällen mal die IP fett dargestellt. Anhand der Subnetz Maske (Subnet Mask) sehen wir die Größe des Netzes. Hier ist das die 255.255.255.0, demzufolge ist dies ein Klasse-C Netz. Der Browserkonfiguration können wir entnehmen, dass der Proxy Server auf der IP 192.168.0.101 und Port 8888 lauscht.

Übersicht Netz

Übersicht Netz

Verbinden wir uns nun über Proxy1 (192.168.0.101) auf den Linux Server mit SSH (192.168.0.111).

[Update] Mir ist heute aufgefallen, dass der erste Proxy den entfernten Linux Server, auf dem wir uns per SSH verbinden wollen, oftmals Port 22 nicht zulässt. Hier sollte man seinen Linux Server so konfigurieren, dass er auf einem anderen Port lauscht [bzw per NAT “umbiegen”], was zugleich das Angriffsrisiko verringert. [/Update]

Hierzu benötigen wir nun Putty und richten folgendes ein:

Ist dies getan, klicken wir auf der Linken Seite auf “SSH” und dann auf “Tunnels” und tragen folgendes ein:

Wir tragen oben den Source-Port ein (die ist der lokale Port an unserem Rechner [8888])und unten das Ziel mit dem Port (in unserem Fall Proxy2 [192.168.0.111:8888]). Ist dies getan, klicken wir auf “Open”, melden uns am Server an, der Tunnel steht.

Als letztes tragen wir im Browser noch den “neuen” Proxy ein:

IP: 127.0.0.1

Port: 8888

Nun surfen wir verschlüsselt über den SSH Tunnel.

Was haben wir gelernt?

Umgehung eines (zwangs)Proxys mit Hilfe eines anderen Proxys und einem SSH Tunnel.