Virtuelle Server unter AIX

Virtual Network Connectivity VNC auf AIX Servern

VNC Dokumentation - VNC Verbindung absichern -

VNC ist eine Anwendung mit der man entfernte Rechner von einem lokalen PC aus bedienen kann indem man sich die Benutzeroberfläche des entfernten Rechners über eine Netzwerkverbindung auf den lokalen PC holt. Der größte Vorteil gegenüber einer direkten Verbindung ist es, daß dieser VNC Desktop nacheinander von verschiedenen Rechnern aus angesteuert werden kann ohne daß sich am Desktop selbst etwas ändert. Bei einer normalen CDE Sitzung kann man sich zwar auch von anderen Servern verbinden aber nicht an dieselbe Sitzung, mit der man von einem vorherigen Rechner aus gearbeitet hat. Mit VNC hingegen kann man mitten in der Bearbeitung eines Themas die Arbeit unterbrechen, kann dann den Ort wechseln und sich von einem völlig anderen Rechner wieder neu verbinden um im VNC Desktop an der Stelle weiterzumachen an der man aufgehört hat. Es ähnelt in dieser Funktion dem Programm screen, welches dasselbe in der Konsole ermöglicht. Selbst wenn man nicht vorhat sich von verschiedenen Plätzen aus wieder an eine bestehende Verbindung anzumelden hat VNC einen weiteren Vorteil gegenüber einer direkten Verbindung. Da der entfernte Rechner und der lokale PC völlig unabhängig voneinander sind, kann man nach einer Netzwerkunterbrechung oder nach Absturz des lokalen PC die Arbeit am VNC Desktop wieder aufnehmen ohne sich mit abgebrochenen Prozessen oder verlorengegangenen Eingaben etc. auf dem Server herumschlagen zu müssen.

Das VNC RPM Paket für AIX ist aus der Linux-Toolbox erhältlich. Einmal installiert kann jeder Benutzer einen vncserver starten (um einen Desktop verfügbar zu machen) bzw. den vncviewer benutzen (um sich mit dem VNC Desktop zu verbinden). Die 'aktuelle' Version in der Toolbox ist zwar uralt, funktioniert aber seit AIX 4.3 einwandfrei. Lassen Sie sich deshalb von der Versionsnummer nicht abschrecken. Inzwischen (Februar 2011) ist das Paket kompiliert für AIX ab 5.1.

Zuerst muß mit

# vncpasswd

ein Paßwort gesetzt werden, welches in verschlüsselter Form in $HOME/.vnc/password des aufrufenden Benutzers abgelegt wird. Anschließend kann der vncserver gestartet werden. Wenn kein Paßwort im Vorfeld erzeugt wurde, wird beim ersten Start von vncserver vncpasswd automatisch mit ausgeführt.

(0)cserver:/home/user 5$ vncserver -geometry 1152x864 -depth 16

You will require a password to access your desktops.

Password:

Verify:

New 'X' desktop is cserver:1

Creating default startup script /home/user/.vnc/xstartup

Starting applications specified in /home/user/.vnc/xstartup

Log file is /home/user/.vnc/cserver:1.log

(0)cserver:/home/user 6$

Achtung: da der Start des CDE Desktop aus einer Benutzersitzung erfolgt für welche die Authentifizierung bereits stattgefunden hat findet im CDE Dekstop keine weitere Paßwortabfrage statt. Ohne das VNC Paßwort bestünde also eine Sicherheitslücke, denn dann könnte jeder, der sich an das entsprechende Display verbindet, unmitelbar auf den CDE Desktop dieses Benutzers zugreifen. Deswegen ist das VNC Paßwort unbedingt nötig.

Beim ersten Aufruf wird im $HOME Verzeichnis des Benutzers ein Verzeichnis .vnc angelegt. Wie im obigen Beispiel ebenfalls zu sehen ist, können bei Aufruf des vncservers außerdem Einstellungen für den virtuellen Desktop gemacht werden.

Praxistip: Die Darstellung wird schneller, wenn man die Anzahl der dargestellten Farben reduziert. Allerdings muß bei weniger als 16 Bit Farbtiefe mit Falschfarben gerechnet werden. Eine Farbtiefe von 16 ist deshalb ein guter Startwert.

Wenn kein X Display aktiv ist, ist der erste Bildschirm 0. Wenn jedoch z.B. bereits CDE oder auch ein anderer VNC Server schon läuft, kann der frisch gestartete vncserver auch auf :1, :2 oder höher laufen. Am besten prüft man nach Start des vncservers nach, wo genau der Server wartet. Im folgenden Beispiel wartet der VNC X Desktop für den Benutzer root auf Display :1.

(0)cserver:/home/root/.vnc 66# ps -ef | grep vnc

root 409804 1 0 21:39:16 pts/0 0:02 Xvnc :1 -desktop X -httpd [...]

Wenn kein X11 Forwarding aktiviert ist, muß das DISPLAY exportiert werden.

Im .vnc Verzeichnis befindet sich nach dem Start des vncserver eine Datei, welche die PID enthält, sowie ein Log und eine Datei mit dem verschlüsselten Passwort. In der xstartup Datei wird eingestellt, was eigentlich vom VNC Server zur Verfügung gestellt wird. In der Standardeinstellung wird dort jedoch nur ein Windowsmanager mit einem einzigen xterm definiert. Wer hingegen den CDE benutzen möchte, muß die xstartup Datei entsprechend anpassen Anstelle von:

#!/bin/sh

xrdb $HOME/.Xresources

xsetroot -solid grey

xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

twm &

sieht sie dann für die Nutzung von CDE z.B. so aus:

#!/bin/sh

xrdb $HOME/.Xresources

xsetroot -solid grey

/usr/dt/bin/Xsession &

Achtung: falls mit dieser xstartup Problem mit der Tastatur auftreten, dann kann man statt /usr/dt/bin/Xsession auch alternativ /usr/dt/bin/dtsession aufrufen.

Noch ein Tip für diejenigen, denen xterm im Fenstermanager völlig ausreichen: In der xstartup kann auch ausgewählt werden, welcher X-Server genutzt werden soll. Wenn man z.B. von twm auf mwm umstellt, ist die Bedienung (neue X-Sessions öffnen etc.) leichter. In der Linux Toolbox finden sich außerdem ältere Versionen von KDE und Gnome, man ist also nicht auf CDE festgelegt.

Praxistip: Manchmal funktioniert bei remote Zugriff auf den CDE der Exit Schalter nicht. Die Session beendet sich nicht richtig, sperrt sich aber auch nicht. Das kann an zwei Stellen zum Problem werden. Zum einen kann sich an den nicht gesperrten CDE jeder verbinden, der sich an den VNC Desktop verbindet. Zum anderen könnte der reguläre Benutzer vergessen, daß ein (mißglückter) Abmeldevorgang vorausging und in der Folge kann es zu Fehlfunktionen in einigen Programmen kommen. Wenn die Abmeldung also fehlschlägt dann beendet man die Sitzung am besten dadurch, daß man den vncserver auf dem AIX Server killt (und wenn man ihn braucht natürlich wieder neu startet). Wer die CDE Sitzung nur verlassen will um später weiterzuarbeiten benutzt als zusätzliche Absicherung zum VNC Passwort dann das Schloss-Symbol des CDE Lock CDE Destkop um die Sitzung nur zu sperren.

Vorteile, Nachteile?

Wir haben am Beispiel des AIX CDE gesehen, wie man mit Hilfe von VNC eine graphische Benutzeroberfläche an verschiedene Rechner mitnehmen kann. Wer zuvor bereits das Kapitel CDE remote von PC oder Notebook nutzen gelesen hat, dem ist vielleicht direkt aufgefallen, daß wir mit der bis hier beschriebenen VNC Methode den Vorteil der Mobilität gegen den Nachteil der fehlenden SSH Verschlüsselung eingetauscht haben. Das VNC Protokoll kann abgehört werden, Paßwörter etc. werden im Klartext übertragen. Dies ist in der Regel unerwünscht. Wie immer in der AIX Welt gibt es aber auch dafür eine Lösung. Wir kombinieren VNC mit SSH und bekommen dann das Beste aus beiden Welten.

Absichern einer VNC Verbindung durch SSH Tunnel

Um die mobile VNC Lösung mit SSH zu kombinieren machen wir uns zunutze, daß SSH in der Lage ist verschlüsselte Tunnel zwischen Sockets aufzubauen. Ein Socket besteht aus einer IP-Adresse und einem Port. Das SSH Kommando definiert nun einen Port auf der lokalen Maschine für den vncviewer und einen Port auf der entfernten Maschine für den vncserver. In unserem Beispiel könnte das Kommando dazu wie folgt aussehen:

$ ssh -L <lokaler_Port>:localhost:<remote_Port> Zielmaschine

Man kann für einen Tunnel beinahe beliebige Port verwenden. Außerdem hat jede beteiligte Maschine ihre eigenen Ports, d.h. in der Konfiguration des Tunnels könnten Ports "doppelt" vorkommen - sie müssen es aber nicht. Bei der Nutzung von X11 mit VNC sind für bestimmte Verwendungen die Ports schon definiert und können bzw. sollten übernommen werden. Die Verwendung der Standards macht die Administration leichter. Die vncserver Ports beginnen bei 5900, wobei 59xx immer dabei ist und 0 für das erste Display steht. Die Zahl für das Display wird dann einfach hochgezählt. Der Port wird im vncserver Prozess angezeigt, kann also mit dem ps Kommando auf dem laufenden System gefunden werden.

Um z.B. Display :0 des lokalen PC an das Display :1 des AIX Servers zu tunneln wäre der SSH Aufruf:

$ ssh -L 5900:localhost:5901 <aixserver>

Der Aufbau des Tunnels in puTTY ist dann einfach. In puTTY wird ein Tunnel zusätzlich zu den für SSH normalen Verbindungseinstellungen konfiguriert. In Connection - SSH - Tunnels tragen wir als Source port das lokale Display 0 ein, für VNC also konkret der Port 5900. Als Destination tragen wir ein, welcher Port auf welchem Zielsystem mit dem lokalen Port verbunden werden soll. Im Beispiel hat der Zielserver die 192.168.100.199 und verwendet das Display :1, für VNC als der Port 5901. Die Schreibweise ist "IP-Doppelpunkt-Port" ohne Leerzeichen dazwischen:

puTTY ssh tunnel Konfiguration 1

Wichtig ist, daß man nicht vergißt über den "Add" Schalter den Tunnel in die Konfiguration aufzunehmen. Aktiv sind nur Tunnel, die im Feld "Forwarded ports" stehen. Speichern Sie die Sitzung ab, wenn Sie sie mehrfach verwenden wollen.

puTTY ssh tunnel Konfiguration 2

Anschließend wird mit "Open" die puTTY Sitzung gestartet. Nach erfolgter Anmeldung existiert der SSH Tunnel zwischen den Ports 5900 und 5901 der beiden Maschinen. Solange die puTTY Sitzung aktiv ist, existiert auch der Tunnel.

Um den Tunnel mit VNC zu nutzen muß man einen kleinen gedanklichen Transfer leisten. D.h. man verbindet den vncviewer nun nicht mehr mit der Adresse des entfernten Servers, sondern lokal mit dem Endpunkt des SSH Tunnels auf der eigenen Maschine. Erinnern Sie Sich: die Verbindung zum entfernten System hat ja bereits der Tunnel hergestellt. Da wir den lokalen Port 0 verwenden (5900 für vnc), dies aber beim vncviewer der default ist muß der Port nicht extra angegeben werden. Es reicht also in diesem Fall, sich mit dem vncviewer an localhost zu verbinden.

vncviewer via ssh tunnel

Wenn die Tunnelkonfiguration erfolgreich war, kommt die vnc Paßwortabfrage durch. Nach Eingabe des korrekten Paßworts erscheint der VNC Desktop.

vnc viewer Passworteingabe

Man kann die Nutzung des Tunnels prüfen, z.B. mit tcpdump, iptrace oder wireshark etc. Wenn zwischen den beteiligten Maschinen nur noch SSH Pakete zu sehen sind ist alles in Ordnung. Wir haben den VNC Desktop dann erfolgreich mit SSH abgesichert.

SSH Pakete

Achtung: Falle

Wenn wir jedoch versehentlich den vncviewer direkt an das Zielsystem richten, also indem wir es ansprechen als sei kein Tunnel vorhanden, ist vordergründig im VNC Desktop (d.h. bei der Nutzung des Zielsystems) kein Unterschied zu bemerken.

vnc Anmeldung an Server

VNC Paßworteingabe

Beim Blick auf die zwischen den Systemen übertragenen Pakete sieht man jedoch einen deutlichen Unterschied. Hier werden keine SSH Pakete übertragen, sondern nur VNC und TCP Pakete. Selbst wenn der Tunnel funktioniert haben wir nichts davon, weil wir ihn nicht benutzen.

VNC Pakete in Wireshark

<Top>

VNC-Dokumentation

Da in der Linux Toolbox eine alte VNC Version verwendet wird, muß man auch auf eine ältere Version der Dokumentation zurückgreifen

VNC-3.3.7 Doku: http://www.realvnc.com/products/free/3.3.7/

Außerdem: Ergänzender Lesestoff zum Thema VNC absichern mit SSH (Wayback Machine) bzw. hier (CAM.AC.UK Archiv-Version)

Zusätzliche Info zu SSH-Tunnel.

<Top>

Virtueller Server unter AIX mit Bochs

Bochs ist ein open source IA-32 (x86) PC emulator, der unter AIX läuft. Zur Zeit (Juli 2004) ist die Version 2.1.1 aktuell. Sie kann mit dem gcc aus der Linux Toolbox kompiliert und installiert werden. Es entsteht ein virtueller PC mit Pentium CPU und 128MB RAM.

Eine Einschränkung der Version 2.1.1 ist jedoch, daß unter AIX keine Netzwerkkarte angesprochen werden kann.

Vorbereitungen

Auf dem Server, auf dem Bochs kompiliert wird, müssen die folgenden Komponenten vorhanden sein:

Fehlermeldungen / Probleme

ERROR: X windows gui was selected, but X windows libraries were not found.

Die notwendigen X11 Bibliotheken von AIX sind entweder nicht installiert oder nicht im Suchpfad. X11.samples, konkret zu finden z.B. unter smit install_latest von der ersten AIX CD: AIXwindows Sample X Consortium Core Libraries Binary/Source.

<Top>

Links:

Bochs Homepage

Download über Sourceforge

<Top>

Copyright © Schulze-EDV-Service 2011