Tunneln über eine SSH Verbindung
Aus NAS Wiki
Tunneln über eine SSH Verbindung im Internet
Beschrieb wird hier wie man per SSH über das Internet eine Verbindung verschlüsselt somit von aussen geschützt ist.
Vorwort:
Jeder kennt es doch von euch sicher, man sitzt in der Firma oder öffentlichen Gebäuden (Bahnhof, Gaststätten usw.) und will mal eben kurz auf sein Heim-Netzwerk wo u.a. das NAS-System läuft und oder Home-Server, Heim PC usw. um ein paar Daten abzurufen oder einige Arbeiten erledigen, von zuhause aus Surfen oder sonst was man machen will. Nun gibt es die Möglichkeit einfach per dyndns oder wenn man seine IP kennt, eine Feste IP hat(Wohl die wenigsten hier) eine Verbindung übers Internet aufzubauen. Das ist alles schön und gut aber die Sache hat mehre Haken! Einmal wären die Daten nicht Verschlüsselt d.h. Jeder Schnüffler, Cracker usw. könnten mit hören und die Daten Pakete verändern, Passwörter mitschneiden und andere Sachen machen, dann hat man oft das Problem wenn man in der Firma ist und von sein Arbeitsplatz sich in sein Home- Netzwerk zuhause Verbinden möchte das Entweder durch ein Proxy oder Firewalls' die meisten Port zu sind d.h. gesperrt und so keine Verbindung zustande kommen wird. Aber es gibt Wege und Möglichkeiten dieses Problem zu umgehen im dem man über SSH ein Tunnel aufbaut der gleichzeitig Verschlüsselt ist und so ein Schutz im öffentlichen Datenverkehr das Internet ist. Darüber hinaus kann man mit SSH mehre Port und Locale -Ip's im Home -Netzwerk ansteuern. Durch SSH kann man auch die meisten Firewall's bzw. Proxy’s umgehen. Die meisten Ports sind immer offen für eine Verbindung nach draußen u.a. wären es 22 für SSH (nicht immer), 80 für HTTP und 443 für (SSL) HTTPS und dies lassen sich wunderbar mit SSH Tunneln so umgeht man die meisten Firewall oder auch Proxy’s.
Achtung Wichtiger Hinweis:
Es soll jetzt keine Anreiz sein, wie hebelt man in seine Firma wo man Arbeitet das Firmennetzwerk aus oder anders wo! Weill viele Administratoren mögen es nicht wenn man dem Proxy oder Firewall umgeht bzw. der Arbeitgeber will es nicht. Darum sich immer vorher Absichern also Fragen, ob es vom (Arbeitgeber) Chef oder Administrator erlaubt ist. Sollte man sich drüber hinwegsetzten kann dieses zur Abmahnung bzw. bis zur Kündigung führen. Ich übernehme hier keine Haftung was auch immer Ihr ausprobiert!
Ausgangslage und Situation:
Herstellen einer Verbindung per SSH über einem Arbeitsplatz Rechner (Client) nach Hause zum Router (Speedport701 mit Dropbear) auf ein NAS-Gerät (ICYBOX4220 im Home- Netzwerk und andere Verbindung per Remote. Als Client kommt Windows XP mit Putty zum Einsatz. (Mit WinSCP sollte es auch gehen Später mal eine Beitrag!) Das ganze sollte auch über Linux laufen da Linux ssh von Haus aus mitbringt.
Voraussetzung die man dafür Braucht:
In unserem Beispiel wird eine Verbindung zum Router Speedport 701 mit Modifizierte Firmware Freetz aufgebaut.
- 1.PC oder Notebook mit Windows (2000/XP/Vista) als Client. Linux geht auch aber die Vorgehensweise ist anderes und wird jetzt nicht weiter Erläutert.
- 2.Home- Netzwerk wo eine Router Linux mit Dropbear als Server/Client oder OpenSSH drauf läuft, hier diesem Fall ein Speedport701 vergleichbar auch mit anderen Fritzboxen/Speedports wo Freetz seine Dienste Verrichtet . Andere Router sollten auch gehen die Freetz kompatibel sind oder OpenWRT unterstützen. Eine Linux Server mit Dropbear als Server/Client was aber auch eine NAS sein kann oder eine Linux-Server mit OpenSSH oder Dropbear der gleichzeitig die Router Funktion übernehmen kann.
- 3.Putty als Client (WindowsXP) für die Verbindung zum Home- Netzwerk und Werkzeug zum Tunnel. Andere Windows Betriebssysteme gehen auch wo Putty auch laufen wird.
- 4.Remote Programme/ Tools wie Dropbear, VNC , WinSCP und andere Remote/Verbindungs- Programme die für dein aufbau eine Verbindung gedacht sind.
- 5.DynDNS der für die DNS der IP Auflösung zuständig ist sollte am besten auf dem Router laufen oder wer eine feste IP hat damit man sein Home- Netzwerk von Außen über Internet erreichen kann.
Vorgehensweise:
Prüfen des Verbindende Netzwerk und Client!
Voraussetzung des zu Verbindende Netzwerk prüfen:
Nun erste Mal die Schritte durchgehen ob man alles auch an Voraussetzung erfüllt. Schaut man nun ob der Router hier Bespiel Speedport701 mit Freetz bestückt ist im unseren Beispiel. Wenn nicht kann man sich die Sachen unter Freetz besorgen und auf dem Router installieren. Wie Freetz installiert wird kann man der FAQ entnehmen und auch im IPF erfahren.
- Darauf will ich hier nicht tiefer eingehen!
Wenn man das Alles gemacht wird als erstes Dropbear eingerichtet . Wie das geht ist hier im IPF mit WoL beschrieben. Aber nochmal Kurz erklärt was Ziemlich einfach ist:
Los geh's:
- Browser aufrufen und dann mit der Eingabe http://fritz.box:81 oder routerip:81 gehen.
- In der Weboberfläche von Freetz auf Dienste gehen dann Dropbear und schauen ob die Einstellungen wie in Bild dargestellt alles übereinstimmen:
Port 22, Startyp auf JA gesetzt und Passwort Login:Ja
Man könnte auch eine Schlüssel erstellen mit Zertifikat wie das geht werde ich mal ein anderes mal schreiben.
Router für die Verbindung einrichten:
So nun die Port Weiterleitung einrichten, da wir von der Firma aus den Port 443 (SSL) HTPS nehmen (Ausgehende) Verbindung zum Home- Netzwerk und eingeht zum Router (Speetport701 auf dem Port 22 für die SSH Verbindung müssen wir im Router die Portweiterleitung aktivieren und das geht so:
- Per Browser mit dem Aufruf http://fritz.box oder http://IP desRouter auf die Weboberfläche des Routers zu gelangen.
- Den Menu Punkt Internet und dann weiter auf Port Weiterleitung gehen. Auf neuen Port einrichten Drücken und den Port für eingehende und ausgehende Verbindung eingeben.
- Im unseren Fall 443 auf 22 zu Router IP. Wichtig ist das die ar7.cfg entsprechend editiert ist. Das wird hier unten Beschrieben (AUSZUG) oder man nimmt das Script.
Protweiterleitung des Routers Dies Anleitung ist nur für Freetz:
- 1.Geht in die Weboberfläche von euren Router (Speedport oder Fritzbox mit Freetz) in den Menüpunkt:
Internet > Portfreigabe >Neue Portfreigabe. Dort nehmen wir einen Scheineintrag vor, um gleich die richtige Stelle in der ar7.cfg zu finden. Tragt folgendes ein:
Bezeichnung HIER BIST DU RICHTIG
Protokoll tcp
von Port 443 bis Port 443
an IP-Adresse 192.168.178.123
an Port 22
Den Haken setzen, übernehmen klicken, fertig!
- 2. Nun per Telnet, SSH an Router anmelden oder wie auch immer auf die Systemebene und folgendes eingeben:
nvi /var/flash/ar7.cfg
Nun durchsucht ihr eure ar7.cfg nach eurem Eintrag. So sieht dann der eingerückte Block aus. Das Markierte ist der Eintrag, den ihr hinzufügen müsst: Achtung: Falsche Einträge in der ar7cfg können die Box lahmlegen. Grundlagen von vi sind hier essentiell. Ein aktuelles Firmware-image und eine Anleitung zum Wiederbeleben der Box zu haben ist vor dem nächsten Schritt nicht verkehrt. Unbedingt auf die Kommas, Semikolons und Anführungszeichen achten.
forwardrules =
"tcp 0.0.0.0:0 0.0.0.0:0 1 out",
"udp 0.0.0.0:0 0.0.0.0:0 1 out",
Diese Zeile hinzufügen --> "tcp 0.0.0.0:443 0.0.0.0:22",
"udp 0.0.0.0:5060 0.0.0.0:5060",
"udp 0.0.0.0:7078 0.0.0.0:7078",
"udp 0.0.0.0:7079 0.0.0.0:7079",
"udp 0.0.0.0:7080 0.0.0.0:7080",
"udp 0.0.0.0:7081 0.0.0.0:7081",
"udp 0.0.0.0:7082 0.0.0.0:7082",
"udp 0.0.0.0:7083 0.0.0.0:7083",
"udp 0.0.0.0:7084 0.0.0.0:7084",
"udp 0.0.0.0:7085 0.0.0.0:7085",
"udp 0.0.0.0:7086 0.0.0.0:7086",
"udp 0.0.0.0:7087 0.0.0.0:7087",
"udp 0.0.0.0:7089 0.0.0.0:7089",
"udp 0.0.0.0:7090 0.0.0.0:7090",
"udp 0.0.0.0:7091 0.0.0.0:7091",
"udp 0.0.0.0:7092 0.0.0.0:7092",
"udp 0.0.0.0:7093 0.0.0.0:7093",
"udp 0.0.0.0:7094 0.0.0.0:7094",
"udp 0.0.0.0:7095 0.0.0.0:7095",
"udp 0.0.0.0:7096 0.0.0.0:7096",
"udp 0.0.0.0:7097 0.0.0.0:7097",
"udp 0.0.0.0:443 192.168.178.123:22 0 # HIER BIST DU RICHTIG";
shaper = "globalshaper";
- 3. Folgendes eingeben:
/bin/ar7cfgchanged
Damit ar7cfg neu gestartet wird und die Einstellungen wirksam werden. Man kann natürlich auch dern Router neu Starten
- Hat man es soweit gemacht kann man da ganze abspeichern und die Weboberfläche verlassen.
Dann wäre der Teil für den Serververbindung im Home- Netzwerk über den Router erledigt.
Client einrichten Arbeits- Platz Rechner im unseren Fall:
Nun widmen wir uns dem Client wie aus unserm Beispiel Windows XP.
- Als erstes besorgen wir uns Putty.
PuTTy ist ein von Simon Tatham entwickeltes freies SSH- und Telnet-Client-Programm für Microsoft Windows, Mac OS und Unix. Es dient dazu, eine sichere und bei Bedarf auch verschlüsselte Verbindung von einem Rechner zu einem anderen Rechner, meist einem Server, herzustellen. Diesen kann man auch wunderbar auf eine USB oder Diskete packen und dann aufrufen.
- So da wir nun Putty auf unserm Client haben wird er erstmal entsprechend Eingerichtet.
So wird Putty eingerichtet:
Start >Ausführen > aufrufen und Verzeichnis angeben wo Putty liegt ausführen:
C:/Mein_Verzeicnis/putty.exe
Putty wird gestartet.
Angabe des Ziel für die Verbindung:
Als erstes richten wir die Session ein. Unter Hostname tragen wir entweder die IP-Adresse ein wenn sie bekannt ist oder man gibt dort sein dyndns Account eine 'meinaccount.dyndns.org' Das wäre für die Verbindung zum Home -Netzwerk also Router gedacht. In der Kategorie "Session" muss hierfür die Zieladresse in dem Feld für Host Name (or IO adress) eingetragen werden. In diesem Fall MeineIP oder meineaccount.dyndns.org. Der Connection Type muss auf SSH festgelegt werden. In diesen Feld können optional auch alle getroffenen Einstellungen gespeichert
SSH Protocol festlegen:
In der Kategorie "SSH" muss das SSH Protocol auf SSH 2 stehen. Standardmäßig sollte diese Einstellung bereits in Putty vorhanden sein.
In der Reiter SSH sollte man Enable comprission aktiviert haben.
Festlegen des Zielrechners wo getunnelt werden soll:
In der Kategorie "Tunnels" müssen nun die Angaben zu dem eigentlich Zielrechner getroffen werden, zu dem anschließend die Remote Desktop Verbindung hergestellt werden soll. In dem Feld Destination muss hierfür die IP-Adresse des Zielrechners im HomNetzwerk eingetragen werden zusammen mit dem entsprechenden Port.
Beispiele für den Tunnel Einsatz:
- Tunnel Port 80 auf 80 192.168.178.2 für Weboberfläche der ICYBOX 4220
- Tunnel Port 5900 auf Client 192.168.178.3 für VNC Remote Desktop Linux Port 5900
- Tunnel Port 1000 auf Client 192.168.178.4 für Remote-Desktop Port 3398 (RDP) Windows
- Tunnel Port 22 auf Client 192.168.178.2 für eine Konsolensitzung oder WinSCP ICYBOX 4220 Port 22
Man kann auch andere Port nach beleiben wählen nur sollten sie dann im Putty angepasst sein.
Zusätzlich muss noch ein Source port angegeben werden, der beliebig gewählt werden kann, aber mindestens 2-stellig sein soll. Hier die Beispiele 80,5900,1000 und 22 .Diese Ports muss anschließend bei der Remote 'Desktop' 'Konsolen' Verbindung nochmals angegeben werden. Mit dem Add-Button werden die Daten hinzugefügt in das Feld Forwarded ports.
Anschließend kann nun die Verbindung zum Home- Netuwerk (Router) hergestellt werden. Durch Eingabe seines Loginnamens und Passwort besteht die Verbindung dorthin.
Verbindung mit Putty:
Verbindung zum Netzwerk hier wäre es der Rouer Speedport701 mit Freetz wo jetzt die Verbindungen mit localhost Abgegeben werden.
Remote Verbindung zur NASBOX Weboberfläche:
Mit dem Aufruf des Browser unser Fall Firefox können wir nun die lokale Adresse mit dem Entsprechenden Port eingeben und wir gelangen hier im Unseren Beispiel auf die Weboberfäcche der ISYBOX 4220
Remote Desktop Verbindung zum LinuxDesktop:
Nun kann anhand des Linux Remote Desktop VNC eine Verbindung zum LinuxDesktop aufgebaut werden. Hierfür gibt man localhost an mit dem Source Port, den man zuvor in Putty definiert hat. In diesem Beispiel der Port 5900. Anschließend sollte eine Verbindung mit dem Arbeitsplatzcomputer hergestellt werden.
Remote Desktop Verbindung zum WindowDesktop:
Eine Remote Verbindung kann anhand des Windows Remote Desktop eine Verbindung zum Windows-Rechner-Desktop aufgebaut werden. Hierfür gibt man localhost an mit dem Source Port, den man zuvor in Putty definiert hat. In diesem Beispiel der Port 3389. Anschließend sollte eine Verbindung mit dem Arbeitsplatzcomputer hergestellt werden
Remote Verbindung zur NASBOX 4220 auf die Konsole
Verbindung kann anhand des Remote Shells eine Verbindung zur Konsole der ICYBOX 4220 aufgebaut werden. Hierfür gibt man localhost an mit dem Source Port, den man zuvor in Putty definiert hat. In diesem Beispiel der Port 22. Anschließend sollte eine Verbindung mit dem Arbeitsplatzrechner hergestellt werden.
Firewall und Proxy-Server überlisten wenn Port 22 oder andere Ports gesperrt sind:
Dazu bitte die Warnung/Achtung oben beachten.
Ist der Port 22 z.B. in Firmen-Umgebungen gesperrt, wie Anfangs erwähnt, dann kann man sich eines einfachen Tricks behelfen, indem man den Port 443 https(SSL) nutzt um nach draußen zu gelangen. Einfach in den Router hier Speedport mit Freetz den Port 443 auf Port 22 wie oben beschrieben umleiten und in PuTTy anstelle von Port 22 den Port 443 eintragen. Bei Verwendung eines Proxy-Servers muss in Putty noch folgende Einstellung vorgenommen werden. Das sollte es dann gewesen sein!
Proxy Einrichten in Putty laut Bild:
Verbindung dann mit 443 eingaben stat 22 laut Bild:
Fazit:
Wie man sieht ist es eine Einfache und sichere Lösung schnell und Bequem eine Verbindung zu sein Privates -Netzwerk aufzubauen das gleiche gilt natürlich auch für eine Firmennetzwerk also auch umgekehrt . Man sollte über das Risiko was das Umgehen der Firewall’s und Proxy betrifft im Klaren sein. Denn nicht jeder Firma (Arbeitgeber) oder Netzwerkadministrator erlaubt es. Es sollte dadurch nicht die Sicherheit des Netzwerks gefährden werden. Bei öffentliche Einrichtungen Bahnhof, Gaststätten etc. wo z.B. Hotspots vorhanden sind ist es kein Problem und ist auch dringend zu Empfehlenswert über ein Tunnel mit Verschlüsselung zu Surfen da die meisten Hotspots nicht ausreichend abgesichert sind (Verschlüsselt). Eine andere Möglichkeit die nach meiner Meinung besser für Hotspots empfehlen würde wäre eine VPN-Verbindung (openVPN pptpd), die man ohne großen Aufwand aufbauen kann mit etwa den gleichen Mitteln. Darüber werde ich Irgendwann noch mal eingehen.
Fragen und Anregungen:
Nützliche Links zum Thema:
Download Links:
Autor und Verfasser by alias Speedport701 v. 10.9.2008 (1)
eigenes Zertifikat erstellen mit ein Tool von Putty
Was hier noch Fehlt ist wie man mit ein Tool ganz Einfach sein eigenes Zertifikat erstellen kann! Das mit diesem Tool ganz Einfach unter Windows oder auch Linux zu erledigen ist werde ich diese die Tage nach Reichen, damit diese Anleitung komplett wird. :)



