Virtual Network Computing (VNC) erlaubt den Zugriff auf die grafische Benutzungsoberfläche eines anderen Computers/Servers über ein Netzwerk mittels des Remote Framebuffer Protocol (RFB). Dabei baut ein sog. VNC-Client die Verbindung zum sog. VNC-Server auf, der auf dem Computer läuft, der administriert werden soll.
Das Remote-Framebuffer-Protokoll sieht allerdings keine Verschlüsselung vor und viele VNC-Server haben keine eigene Verschlüsselung implementiert oder standardmäßig aus Kompatibilitätsgründen nicht aktiviert. Eine sichere Nutzung über unsichere Netze kann nur dann gewährleistet werden, wenn der gesamte Datenstrom der sog. "Screen-Sharing"-Verbindung einschließlich der Authentisierung, in Sender- und Empfängerrichtung abgesichert wird.
Eine Lösung kann sein, zuerst eine sichere Verbindung in das gesicherte Campusnetz via VPN oder auf den Zielrechner via SSH aufzubauen. Im zweiten Schritt wird diese Verbindung (ein sog. Tunnel) für die Verbindung zwischen VNC-Server und -Client genutzt.
Viele VNC-Clients unterstützen die SSH-Tunnelvariante bereits nativ:
- Chicken (Mac OS X): Option "Tunnel over SSH"
- Reminna (Linux/Ubuntu): Optionen "SSH-Tunnel" und "Tunnel über Loopback-Adresse"
Im Netz gibt es auch einige Anleitungen zu manuell getunnelten VNC-Verbindung über SSH:
- unter Ubuntu: wiki.ubuntuusers.de/VNC/
- unter Mac OS X: www.mactopics.de/2014/02/26/mit-ssh-eine-remote-desktop-verbindung-vnc-bildschirmfreigabe-aufbauen/
- unter Windows mit Putty: helpdeskgeek.com/how-to/tunnel-vnc-over-ssh/
Mit einer dieser Tunnel-Lösungen ist es dann auch nicht erforderlich, dass der VNC-Server aus dem Internet heraus erreichbar ist, da die Verbindung auf den Server stets nur noch aus dem Campusnetz (VPN-Lösung) oder vom Zielsystem selbst (localhost bei SSH-Lösung) stattfindet. Eine entsprechende Konfiguration am Server, dass nur Verbindungen von localhost bzw. aus dem Universitätsnetz akzeptiert werden, würde die Angriffsfläche, unbefugt Zugang zu erlangen, somit erheblich reduzieren.