Sephiroth
2004-06-10, 20:22:58
Hinweis:
Da ich hier im Windows-Forum poste, bezieht sich auch alles auf Computer mit dem Betriebssystem Windows.
Einleitung:
In Anlehnung an das Sticky von Captain America VNC: PCs übers Netzwerk fernsteuern (http://www.forum-3dcenter.de/vbulletin/showthread.php?s=&threadid=10980), gilt dieser Thread dem Thema "VNC: Computer über das Internet sicher fernsteuern".
Das Prinzip ist dem im kleineren, lokalen Netzwerk gleich, doch achtet man dort meist nicht auf große Sicherheit. Die meisten unter euch nutzen VNC im heimischen LAN und wer eine Personal Firewall(FW oder PFW) verwendet, der hat das LAN i.A. als demilitarisierte Zone (DMZ) eingestuft - sprich die FW kümmert sich nicht um Rechner, die dieser Zone angehören.
Wer nun von euch einen Computer als Internet Gateway/Router einsetzt und diesen (oder einen anderen Computer im LAN) über das Internet mittels VNC fernsteuern möchte, dem sei gesagt, daß diese VNC Verbindung NICHT wirklich sicher ist. Das Passwort welches benötigt wird, wird zwar verschlüsselt, der Rest jedoch nicht. (-> RealVNC FAQ: Is VNC secure? (http://www.realvnc.com/faq.html#security))
So wie machen wir VNC über das Internet sicher (oder zumind. sicherer)?
Antwort: mit einer SSH (Secure Shell) Verbindung, genauer: mit einem SSH Tunnel.
Was das ist und wie das geht? Auf eurem Internet Gateway/Router Computer läuft ein SSH Server. Ihr meldet euch nun mittels eines SSH Client Tools bei diesem Server an und stellt das Client Tool so ein, das eine bestimmte Verbindung durch diese SSH verbinung weitergeleitet (ge-forwarded) wird.
Nun startet man auf dem Client den VNC Viewer und versucht eine VNC Verbindung zu sich selbst aufzubauen, doch diese wird durch den SSH Client durch die SSH Verbindung auf den Server umgeleitet und es wird somit eine VNC Verbindung mit dem Server aufgebaut.
Das geht natürlich nicht nur mit VNC, sondern mit jeder anderen Verbindung die das TCP Protokoll verwendet. z.B.: FTP, Mail, Newsserver usw.
benötigte Software:
VNC Server: RealVNC (http://www.realvnc.com) oder TightVNC (http://www.tightvnc.com) (Freeware)
SSH Server für Windows: OpenSSH for Windows (http://sshwindows.sourceforge.net) (Freeware)
SSH Client: PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty) (freier SSH/Telnet Client für Windows)
VNC Client(Viewer): RealVNC (http://www.realvnc.com) oder TightVNC (http://www.tightvnc.com) (Freeware)
die IP des Servers (die externe, Internet-IP): DynDNS (http://www.dyndns.org) oder vbScript für Windows (http://www.forum-3dcenter.de/vbulletin/showthread.php?s=&threadid=148040)(100% selbstgemacht ;))
Software einrichten:
1.) SSH Server
Installiert ihn und lest euch den quick start guide durch. Denn ihr müßt nach der Installation zunächst (mind.) einen Benutzer hinzufügen, damit ihr euch überhaupt anmelden könnt. Bei OpenSSH für Windows wird, wenn der Benutzername der selbe ist wie einer der Windows Account(bei NT Systemen) automatisch dessen Passwort nach dem hinzufügen genommen, ansonsten müßt ihr es noch festlegen.
2.) VNC Server
2.1) RealVNC
Installieren und bei NT Systemen als Dienst hinzufügen (geht am Ende des Setups). Stell anschließend die die gewünschten Optionen ein (näheres dazu auf der Seite von RealVNC (http://www.realvnc.com)). Anschließend öffnet ihr den Registr Editor "regedit" und begebt euch in den Pfad "HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\", dort setzt ihr den Wert von "AllowLoopback" auf "1". Schließt regedit wieder und startet den VNC Server (Dienst) neu (Systemsteuerung -> Verwaltung -> Dienste oder über das Startmenü).
Update: Mit der Version 4 von RealVNC ist die Option "AllowLooback" nicht mehr von Nöten.
2.2) TightVNC
Bei TightVNC geht das ganze fast genauso, jedoch mit der Ausnahme, daß man die Option zum Erlauben von Loopback Verbindungen (eine VNC Sitzung auf den selben PC aufmachen) in den Einstellungen von TightVNC direkt anwählen kann - sprich ohne Registry per Hand zu ändern.
Je nachdem, ob der TightVNC Server schon läuft, muß er ggf. neugestartet werden.
3.) SSH testen
Testet zunächst einmal die SSH Verbindung, indem ihr euch von einem zweiten Rechner im LAN auf dem Server anmeldet.
3.1) Firewall oder Router im Einsatz?
Bei einem Router muß zusätzlich der TCP Port 22 auf den Rechner geroutet werden, auf dem der SSH Server läuft. Wenn ihr (zusätzlich) eine Firewall verwendet, dann muß für denn SSH Server der TCP Port 22 freigegeben werden.
4.) VNC SSH Tunnel im LAN testen
Startet PuTTY, geht Links unter "Connections/SSH" auf "Tunnels". Gebt unten bei "Source port" "5900" ein und bei Destination "<SERVERIP_IM_LAN>:5900" (z.B. 192.168.0.1:5900) und klickt auf "Add" (stellt vorher sicher das "Local" ausgewählt ist). Danach verbindet ihr euch zum Server und meldet euch an. Dann startet ihr den VNC Viewer und gebt als Ziel "localhost" bzw. die IP "127.0.0.1" an und verbindet euch dorthin. Wenn alles geklappt hat, dann solltet ihr nun eine VNC Verbindung zum Server aufgebaut haben (durch den SSH Tunnel). =)
die externe IP:
Ja wie kommt man nun dauerhaft und bequem an diese IP ran? Man kann doch nicht immer bevor man das Haus verläßt sich die IP merken und was ist wenn sie sich später ändern sollte (die DSL User mit 24 Stunden-Zwangstrennung wissen wovon ich rede ;))?
Da gibt es die Möglichkeit sich eine eigene, kostenlose Internet Adresse zu besorgen. Anbieter wie DynDNS (http://www.dyndns.org/) haben sich darauf spezialisiert. Auf dem Server läuft dann ein Programm, welches stets die IP auf die eure Web-Adresse verweist aktualisiert. Dann braucht ihr nur bei SSH diese Adresse anzugeben und fertig.
Diese Methode ist bei dem Einsatz von Routern mit integriertem DSL Modem zu empfehlen.
Wer meint sowas bräuchte er nicht oder will es einfach nicht (wie ich) und eine eigene Homepage/Webspace haben, denen sei mit einer anderen Methode geholfen. Ich entwarf ein vbScript, welches die IP des DFÜ Adapters ausliest und diese in einer HTML Seite (W3C konform :ugly:) speichert und dann auf einen FTP Server läd und/oder eine E-Mail versendet. Jedoch hat dieses Skript zwei Nachteile: a) es geht nur auf WindowsNT 4.0 (mit mind. SP4), Windows 2000 Professional, Windows XP und Windows Server 2003 und b) geht es nicht, wenn die Internetverbindung durch einen Router mit integriertem DSL Modem hergestellt wird, also nicht durch den Rechner selbst.
Anmerkungen:
-Ich gehe einfach mal davon aus, daß heutzutage keiner mehr Windows95, 98 (SE) oder ME als Server/Router/Gateway einsetzt.
-Dieses How-To entstand aus dem Gedanken/Wunsch/der Vorstellung, daß erwähnte Script nicht einfach nur so im Programmier-Forum zu posten und gleichzeitig Anderen mit gleichem Vorhaben eine praktische und hoffentlich hilfreiche Übersicht zu liefern.
-Fragen, Anmerkungen, konstruktive Kritik? Bitte im dazugehörigen Diskussions-Thread (http://www.forum-3dcenter.org/vbulletin/showthread.php?t=164858) Posten.
weiterführende Links:
RealVNC Homepage (http://www.realvnc.com)
TightVNC Homepage (http://www.tightvnc.com)
DynDNS Homepage (http://www.dyndns.org)
Using VNC with SSH (http://www.uk.research.att.com/archive/vnc/sshvnc.html)
Using PuTTY to create an SSH Tunnel (http://www.precedence.co.uk/nc/putty.html)
Nachtrag:
Als "Destination Adress" kann natürlich auch jeder andere, vom SSH Server-Rechner aus erreichbare PC mit VNC Server, im Netzwerk angegeben werden. Man beachte, daß Linux Systeme hier nicht den Port 5900 verwenden, sondern üblicherweise 5901!
Da ich hier im Windows-Forum poste, bezieht sich auch alles auf Computer mit dem Betriebssystem Windows.
Einleitung:
In Anlehnung an das Sticky von Captain America VNC: PCs übers Netzwerk fernsteuern (http://www.forum-3dcenter.de/vbulletin/showthread.php?s=&threadid=10980), gilt dieser Thread dem Thema "VNC: Computer über das Internet sicher fernsteuern".
Das Prinzip ist dem im kleineren, lokalen Netzwerk gleich, doch achtet man dort meist nicht auf große Sicherheit. Die meisten unter euch nutzen VNC im heimischen LAN und wer eine Personal Firewall(FW oder PFW) verwendet, der hat das LAN i.A. als demilitarisierte Zone (DMZ) eingestuft - sprich die FW kümmert sich nicht um Rechner, die dieser Zone angehören.
Wer nun von euch einen Computer als Internet Gateway/Router einsetzt und diesen (oder einen anderen Computer im LAN) über das Internet mittels VNC fernsteuern möchte, dem sei gesagt, daß diese VNC Verbindung NICHT wirklich sicher ist. Das Passwort welches benötigt wird, wird zwar verschlüsselt, der Rest jedoch nicht. (-> RealVNC FAQ: Is VNC secure? (http://www.realvnc.com/faq.html#security))
So wie machen wir VNC über das Internet sicher (oder zumind. sicherer)?
Antwort: mit einer SSH (Secure Shell) Verbindung, genauer: mit einem SSH Tunnel.
Was das ist und wie das geht? Auf eurem Internet Gateway/Router Computer läuft ein SSH Server. Ihr meldet euch nun mittels eines SSH Client Tools bei diesem Server an und stellt das Client Tool so ein, das eine bestimmte Verbindung durch diese SSH verbinung weitergeleitet (ge-forwarded) wird.
Nun startet man auf dem Client den VNC Viewer und versucht eine VNC Verbindung zu sich selbst aufzubauen, doch diese wird durch den SSH Client durch die SSH Verbindung auf den Server umgeleitet und es wird somit eine VNC Verbindung mit dem Server aufgebaut.
Das geht natürlich nicht nur mit VNC, sondern mit jeder anderen Verbindung die das TCP Protokoll verwendet. z.B.: FTP, Mail, Newsserver usw.
benötigte Software:
VNC Server: RealVNC (http://www.realvnc.com) oder TightVNC (http://www.tightvnc.com) (Freeware)
SSH Server für Windows: OpenSSH for Windows (http://sshwindows.sourceforge.net) (Freeware)
SSH Client: PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty) (freier SSH/Telnet Client für Windows)
VNC Client(Viewer): RealVNC (http://www.realvnc.com) oder TightVNC (http://www.tightvnc.com) (Freeware)
die IP des Servers (die externe, Internet-IP): DynDNS (http://www.dyndns.org) oder vbScript für Windows (http://www.forum-3dcenter.de/vbulletin/showthread.php?s=&threadid=148040)(100% selbstgemacht ;))
Software einrichten:
1.) SSH Server
Installiert ihn und lest euch den quick start guide durch. Denn ihr müßt nach der Installation zunächst (mind.) einen Benutzer hinzufügen, damit ihr euch überhaupt anmelden könnt. Bei OpenSSH für Windows wird, wenn der Benutzername der selbe ist wie einer der Windows Account(bei NT Systemen) automatisch dessen Passwort nach dem hinzufügen genommen, ansonsten müßt ihr es noch festlegen.
2.) VNC Server
2.1) RealVNC
Installieren und bei NT Systemen als Dienst hinzufügen (geht am Ende des Setups). Stell anschließend die die gewünschten Optionen ein (näheres dazu auf der Seite von RealVNC (http://www.realvnc.com)). Anschließend öffnet ihr den Registr Editor "regedit" und begebt euch in den Pfad "HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\", dort setzt ihr den Wert von "AllowLoopback" auf "1". Schließt regedit wieder und startet den VNC Server (Dienst) neu (Systemsteuerung -> Verwaltung -> Dienste oder über das Startmenü).
Update: Mit der Version 4 von RealVNC ist die Option "AllowLooback" nicht mehr von Nöten.
2.2) TightVNC
Bei TightVNC geht das ganze fast genauso, jedoch mit der Ausnahme, daß man die Option zum Erlauben von Loopback Verbindungen (eine VNC Sitzung auf den selben PC aufmachen) in den Einstellungen von TightVNC direkt anwählen kann - sprich ohne Registry per Hand zu ändern.
Je nachdem, ob der TightVNC Server schon läuft, muß er ggf. neugestartet werden.
3.) SSH testen
Testet zunächst einmal die SSH Verbindung, indem ihr euch von einem zweiten Rechner im LAN auf dem Server anmeldet.
3.1) Firewall oder Router im Einsatz?
Bei einem Router muß zusätzlich der TCP Port 22 auf den Rechner geroutet werden, auf dem der SSH Server läuft. Wenn ihr (zusätzlich) eine Firewall verwendet, dann muß für denn SSH Server der TCP Port 22 freigegeben werden.
4.) VNC SSH Tunnel im LAN testen
Startet PuTTY, geht Links unter "Connections/SSH" auf "Tunnels". Gebt unten bei "Source port" "5900" ein und bei Destination "<SERVERIP_IM_LAN>:5900" (z.B. 192.168.0.1:5900) und klickt auf "Add" (stellt vorher sicher das "Local" ausgewählt ist). Danach verbindet ihr euch zum Server und meldet euch an. Dann startet ihr den VNC Viewer und gebt als Ziel "localhost" bzw. die IP "127.0.0.1" an und verbindet euch dorthin. Wenn alles geklappt hat, dann solltet ihr nun eine VNC Verbindung zum Server aufgebaut haben (durch den SSH Tunnel). =)
die externe IP:
Ja wie kommt man nun dauerhaft und bequem an diese IP ran? Man kann doch nicht immer bevor man das Haus verläßt sich die IP merken und was ist wenn sie sich später ändern sollte (die DSL User mit 24 Stunden-Zwangstrennung wissen wovon ich rede ;))?
Da gibt es die Möglichkeit sich eine eigene, kostenlose Internet Adresse zu besorgen. Anbieter wie DynDNS (http://www.dyndns.org/) haben sich darauf spezialisiert. Auf dem Server läuft dann ein Programm, welches stets die IP auf die eure Web-Adresse verweist aktualisiert. Dann braucht ihr nur bei SSH diese Adresse anzugeben und fertig.
Diese Methode ist bei dem Einsatz von Routern mit integriertem DSL Modem zu empfehlen.
Wer meint sowas bräuchte er nicht oder will es einfach nicht (wie ich) und eine eigene Homepage/Webspace haben, denen sei mit einer anderen Methode geholfen. Ich entwarf ein vbScript, welches die IP des DFÜ Adapters ausliest und diese in einer HTML Seite (W3C konform :ugly:) speichert und dann auf einen FTP Server läd und/oder eine E-Mail versendet. Jedoch hat dieses Skript zwei Nachteile: a) es geht nur auf WindowsNT 4.0 (mit mind. SP4), Windows 2000 Professional, Windows XP und Windows Server 2003 und b) geht es nicht, wenn die Internetverbindung durch einen Router mit integriertem DSL Modem hergestellt wird, also nicht durch den Rechner selbst.
Anmerkungen:
-Ich gehe einfach mal davon aus, daß heutzutage keiner mehr Windows95, 98 (SE) oder ME als Server/Router/Gateway einsetzt.
-Dieses How-To entstand aus dem Gedanken/Wunsch/der Vorstellung, daß erwähnte Script nicht einfach nur so im Programmier-Forum zu posten und gleichzeitig Anderen mit gleichem Vorhaben eine praktische und hoffentlich hilfreiche Übersicht zu liefern.
-Fragen, Anmerkungen, konstruktive Kritik? Bitte im dazugehörigen Diskussions-Thread (http://www.forum-3dcenter.org/vbulletin/showthread.php?t=164858) Posten.
weiterführende Links:
RealVNC Homepage (http://www.realvnc.com)
TightVNC Homepage (http://www.tightvnc.com)
DynDNS Homepage (http://www.dyndns.org)
Using VNC with SSH (http://www.uk.research.att.com/archive/vnc/sshvnc.html)
Using PuTTY to create an SSH Tunnel (http://www.precedence.co.uk/nc/putty.html)
Nachtrag:
Als "Destination Adress" kann natürlich auch jeder andere, vom SSH Server-Rechner aus erreichbare PC mit VNC Server, im Netzwerk angegeben werden. Man beachte, daß Linux Systeme hier nicht den Port 5900 verwenden, sondern üblicherweise 5901!