17.4 Remoteadministration
Rechner fernsteuern – das weiß nicht nur der Administrator zu schätzen, der seinen im Keller befindlichen Server warten muss. Außendienstmitarbeiter wünschen sich einen sicheren Zugriff auf das Firmennetzwerk, Anfänger lassen sich gerne von Experten über einen Remotedesktop helfen. Heutzutage gibt es unter Linux eine Vielzahl von Programmen, die den Zugriff auf einen entfernten Rechner vereinfachen.
17.4.1 Einen SSH-Tunnel aufbauen
Nachdem Sie in Abschnitt 17.2.1 gelernt haben, wie man mit Hilfe der Secure Shell SSH auf einen weiteren Rechner per Konsole zugreifen kann, soll im Folgenden gezeigt werden, wie man auf diese Weise auch graphische Programme über das Netzwerk nutzen kann. Dazu wird ein so genannter X-Tunnel via SSH aufgebaut.
Starten Sie den SSH-Server auf dem Zielrechner (das kann über eine Konsolenverbindung geschehen) und loggen Sie sich von dem Clientrechner aus mittels
user$ ssh –X <Benutzername>@<Rechnername>
ein. Das Passwort des Benutzers ist bei der Nachfrage einzugeben. Durch den Parameter -X wird das sogenannte X-Tunneling aktiviert. Dadurch werden graphische Anwendungen (also: X-Anwendungen) auch auf dem Client korrekt dargestellt. Sie können nun einmal testweise ein graphisches Terminal wie z. B. das gnome-terminal durch Eingabe des gleichnamigen Befehls nach dem Einloggen starten. Das neu gestartete Programm sollte dann auf dem Display des Clients erscheinen. Anschließend können komplexere Programme wie Firefox oder OpenOffice getestet werden. Beachten Sie, dass für den Start von KDE-Programmen auf dem Client-PC die entsprechenden KDE-Bibliotheken installiert sein müssen.
Voraussetzung für derartige Experimente ist eine ausreichend schnelle Netzwerkanbindung beider PCs. Was im LAN flüssig abläuft, kann sich bei einer Modem- oder ISDN-Verbindung als viel zu träge zum produktiven Arbeiten erweisen. Hier schlägt die große Stunde des im nächsten Abschnitt vorgestellten NX-Servers bzw. Clients.
17.4.2 Den Ubuntu-Desktop exportieren
GNOME-Desktop-Export
Im GNOME-Systemmenü finden Sie über Einstellungen · Entfernter Desktop. Nach dem Starten des Tools (Abbildung 17.13) haben Sie die Möglichkeit, anderen Benutzern im Netz Ihren Desktop zur Verfügung zu stellen. Das ist z. B. in solchen Fällen interessant, wenn Sie Hilfe von einem Experten benötigen.
Aus Sicherheitsgründen empfiehlt es sich, die Nachfrage sowie das Passwort für den Client zu aktivieren. Auf der Clientseite muss nun in einer Konsole lediglich der folgende Befehl eingegeben werden:
user$ vncviewer <Rechnername bzw. IP>:0
Nun ist ggf. das oben definierte Passwort einzugeben und abzuwarten, ob der Desktopeigner den Zutritt gewährt.
Abbildung 17.13 Export des GNOME-Desktops mit VNC
Der Export des Desktops basiert auf der Software VNC (Virtual Network Computing) und eignet sich hervorragend in pädagogischen Umgebungen, um Schülern, die Probleme mit der Software haben, sprichwörtlich unter die Arme zu greifen. Es gibt übrigens auch einen VNC-Viewer für Windows, mit dem auf einen laufenden Linuxserver zugegriffen werden kann. Sie finden das Programm unter http://www.realvnc.com/download.html. Dadurch sparen Sie sich teure Zusatzsoftware, die Windows mit einem X-Server ausstattet, um per SSH-X-Tunneling auf einen Linux-Client zuzugreifen. Der umgekehrte Weg funktioniert übrigens auch ganz hervorragend (Abbildung 17.14).
Abbildung 17.14 Ubuntu von Windows aus fernsteuern
Desktopexport mit KDE
Auch KDE bringt einen entsprechenden Server mit, um per VNC die Oberfläche zu exportieren. Sie finden das entsprechende Programm unter System · Verbindung zu Fremdrechner · Arbeitsfläche freigeben. Das Frontend heißt krfb.
FreeNX
FreeNX ist der neue Shooting Star in der Szene, wenn es darum geht, graphische Benutzeroberflächen auf einem Client-PC auch über eine relativ schmalbandige Anbindung (z. B. Modem oder ISDN) zu nutzen. Wer jemals probiert hat, KDE über das im vorigen Abschnitt beschriebene VNC-Interface per Modem fernzusteuern, weiß, wovon die Rede ist. Der quälend langsame Aufbau der Fenster sowie die kaugummizähen Reaktionen der Maus lassen hier keine wirkliche Freude bei der Remotedesktopnutzung aufkommen.
NX wurde von der Firma Nomachine entwickelt. Der Client zur Verbindung mit einem NX-Server ist kostenlos, die Serversoftware selbst ist kostenpflichtig. Der Knoppix-Entwickler Fabian Franz hat zusammen mit Kurt Pfeifle den quelloffenen, freien FreeNX-Server programmiert, der mittlerweile auch für Ubuntu erhältlich ist. Der unglaublich schnelle Aufbau des Desktops sowie die unmittelbare Reaktionsfähigkeit beruhen auf den folgenden technischen Kniffen:
- Die Übertragung der graphischen Daten mit dem X-Protokoll erfolgt in Verbindung mit einer ausgeklügelten Datenkompression.
- Häufig benutzte graphische Elemente des Desktops werden lokal gespeichert (gecachet).
- Im Gegensatz zu VNC wird nicht der gesamte Desktop übertragen, sondern immer nur kleine Änderungen. Das Verfahren ist im weitesten Sinne vergleichbar mit dem MPEG-Kompressionsverfahren im Videobereich.
Die genannten Eigenschaften führen zu einer wesentlich geringeren CPU- Belastung auf der Serverseite. Unter Ubuntu wird FreeNX folgendermaßen konfiguriert:
Zunächst ist es notwendig, ein externes Repository in die Paketverwaltung einzubinden. Dazu ergänzen Sie die folgende Zeile in der Datei
/etc/apt/sources.list:
# Auszug aus /etc/apt/sources.list # deb http://seveas.ubuntulinux.nl/ breezy-seveas all
Um das Repository nutzen zu können, muss noch dessen gpg-Schlüssel importiert werden:
user$ sudo gpg --keyserver subkeys.pgp.net \ --recv-keys 1135D466 user$ sudo gpg --export --armor 1135D466 | \ sudo apt-key add -
Nun können Sie mit Hilfe von Synaptic oder auf der Kommandozeile via sudo apt-get freenx das Paket freenx installieren. Nach der Installation meldet sich sofort die Konfigurationsroutine des Programms. Als Schlüsseltyp empfiehlt sich die Verwendung des Nomachine-Keys. Nun sollte ein bestehender Systembenutzer dem NX-Server bekannt gemacht und dessen Passwort gesetzt werden:
user$ sudo nxserver --adduser <Benutzername> user$ sudo nxserver --passwd <Benutzername> NX> 100 NXSERVER – Version 1.4.0–45-SVN OS (GPL) New password: Password changed. NX> 999 Bye
Jetzt können Sie sich bereits mit Hilfe eines NX-Clients auf dem Rechner einloggen. Für Ubuntu-Clients installieren Sie hierfür das Paket \mbox{nxclient} aus dem oben definierten Repository. Das Programm wird nach der Installation folgendermaßen gestartet:
user$ /usr/NX/bin/nxclient
Abbildung 17.15 Ubuntu-Remotedesktop via NX
Danach startet eine Setup-Routine, die im Wesentlichen selbsterklärend ist. Als Desktopsystem sollte in der Regel GNOME definiert werden. Im Verlauf der Installationsroutine wird ein Icon auf dem Desktop erzeugt, das später genutzt werden kann. Nun können Sie sich auf der Remotemaschine mit Ihrer Kennung anmelden (Abbildung 17.16).
Windowsanwender laden den freien Client von der Seite http://www.nomachine.com herunter und installieren diesen. Die Konfiguration der Clients ist selbsterklärend, es muss zur Aufnahme der Verbindung die oben gesetzte Login-Passwortkombination eingegeben werden. Als Desktopsystem wird GNOME definiert (Abbildung 17.16). Danach können Sie sich auch unter Windows an der äußerst flotten Remoteverbindung erfreuen.
Abbildung 17.16 Konfiguration des NX-Clients, hier die Windows-Variante
17.4.3 Virtual Private Networking (VPN)
Das Konzept des Virtual Private Networking (VPN gibt dem Benutzer die Möglichkeit, vertrauliche Daten gesichert über ein per se unsicheres Netzwerk zu transportieren. Durch die Einrichtung eines so genannten VPN-Tunnels gelangen die Daten (abhör)sicher vom Sender zum Empfänger und zurück. Unter Ubuntu lässt sich VPN leicht mit folgendem Paket realisieren:
- openvpn
OpenVPN ist Bestandteil des Universe Repositories. Seit der Version 2.0 kann das Programm auch als Server z. B. innerhalb eines Firmennetzes betrieben werden. Für den Privatanwender bietet sich der Einsatz in Verbindung mit den üblicherweise schwach abgesicherten WLAN-Netzen an. Im Folgenden sollen zwei prominente Beispiele vorgestellt werden.
WLAN per VPN-Tunnel
Zunächst soll das für Heimanwender interessante Beispiel besprochen werden, ein WLAN mit VPN-Tunnel abzusichern. Um Komplikationen bei der Konfiguration zu vermeiden, empfiehlt es sich, zunächst die WLAN-Verschlüsselung zu deaktivieren und nach dem erfolgreichen Einrichten des VVPN wieder zu aktivieren. Das folgende Planspiel geht von der folgenden Infrastruktur aus:
- Ein Laptop, das mit einem WLAN-Device wlan0 (IP: 192.168.0.104) ausgestattet ist.
- Das VPN-Device auf der Seite des Laptops wird mit der IP-Adresse 192.168.8.104 definiert.
- Im Netz befindet sich ein Server, der über einen Ethernetadapter (IP: 192.168.0.1) an den zentralen Router angeschlossen ist.
- Die IP des VPN-Devices auf der Serverseite wird zu 192.168.8.1 definiert.
Zunächst muss auf dem Server ein Schlüssel erzeugt werden. VPN arbeitet zwar auch mit dem Konzept des privaten und öffentlichen Schlüssels, in privaten Netzen ist es jedoch am einfachsten, wenn Client und Server mit dem gleichen Schlüssel arbeiten. Mit folgendem Befehl wird der Schlüssel zunächst auf dem Server server$ erzeugt:
server$ sudo openvpn --genkey --secret \ /etc/openvpn/secret.key
Dieser Schlüssel muss nun auf sicherem Weg auf den Server befördert werden. Dazu bedient man sich des Werkzeugs scp. Zu beachten ist, dass bei der ganzen Aktion mehrfach die Rechte der Datei umdefiniert werden müssen. Das Ganze geschieht unter Zuhilfenahme der jeweiligen Homeverzeichnisse. Auf dem Server ist folgendermaßen zu verfahren:
server$ sudo cp /etc/openvpn/secret.key ~ server$ cd server$ sudo chmod a+r secret.key server$ sudo scp secret.key <Benutzer>@client:~
Auf dem Client wird der importierte Schlüssel in das Verzeichnis
/etc/openvpn befördert
client$ cd client$ sudo cp secret.key /etc/openvpn
Damit wären die Schlüssel abgeglichen. Nun wird der VPN-Tunnel »gebohrt«. Auf der Serverseite ist folgender Befehl einzugeben:
server$ sudo openvpn --daemon --dev tun0 \ --remote 192.168.0.104 \ --ifconfig 192.168.8.1 192.168.8.104 \ --secret /etc/openvpn/secret.key
Auf der Clientseite sind die IP-Adressen entsprechend anzupassen:
server$ sudo openvpn --daemon --dev tun0 \ --remote 192.168.0.1 / --ifconfig 192.168.8.104 192.168.8.1 \ --redirect-gateway \ --secret /etc/openvpn/secret.key
Der zusätzliche Parameter redirect-gateway sorgt dafür, dass auf dem Client jeglicher Datentransfer per Routing über den Tunnel geleitet wird. Auf beiden Rechnern sollte in jedem Fall ein neues Netzwerkdevice zu finden sein:
server$ ifconfig … tun0 Protokoll:UNSPEC Hardware Adresse 00–00–00–00–00–00–00–00–00–00–00–00–00–00–00–00 inet Adresse:192.168.8.1 P-z-P:192.168.8.104
Nachdem Sie per ping getestet haben, ob die Verbindung steht, können die üblichen WLAN-Schutzmechanismen (WEP-Key etc.) wieder aktiviert werden. Die beschriebene Situation ist noch einmal in Abbildung 17.17 dargestellt.
Abbildung 17.17 Topologie eines VPN
Per Internet auf den Heim-PC
Eine weitere Anwendungsmöglichkeit von VPN ist die sichere Verbindung aus dem Internet auf den heimischen Rechner. Da ein solcher Rechner vom Provider zumeist eine dynamische IP zugewiesen bekommt, kann man einen Dienst wie z. B. DynDNS (http://www.dyndns.org) in Anspruch nehmen.
Auf dem Server soll nun der VPN-Dienst gestartet werden. Da dieser aber zunächst nicht die IP-Adresse des Clients kennt, fehlt bei der Konfiguration der Parameter remote:
server$ sudo openvpn --daemon --dev tun0 \ --ifconfig 192.168.8.1 192.168.8.104 \ --secret /etc/openvpn/secret.key
Nun wartet der Server darauf, dass sich der Client bei ihm meldet. Der VPN-Befehl auf dem Client sieht folgendermaßen aus:
server$ sudo openvpn --daemon --dev tun0 \ --remote server.dyndns.org \ --ifconfig 192.168.8.104 192.168.8.1 \ --redirect-gateway \ --secret /etc/openvpn/secret.key
In diesem Fall wurde also die bislang als bekannt vorausgesetzte IP des Servers durch dessen DynDNS-Hostadresse server.dyndns.org ersetzt.
Eine Firewall durchtunneln
Mit der oben beschriebenen Methode zur Einrichtung eines VPN werden Sie in den meisten Firmennetzwerken und Internetcafés wenig Glück haben. Dort läuft der Netzwerkverkehr zumeist über eine Firewall, die für die UDP-Pakete, die VPN standardmäßig verwendet, undurchlässig ist.
Durch einen kleinen Trick lassen sich aber auch derartige Firewalls aushebeln: Fügen Sie einfach auf der Clientseite den Parameter
--proto tcp-client
und auf der Serverseite den Parameter
--proto tcp-server
beim Aufruf von openvpn hinzu. Dadurch wird eine normale, browser-konforme TCP-Verbindung aufgebaut, die durch jegliche Firewall ungehindert durchkommt. Müßig zu erwähnen, dass derartige Möglichkeiten den Administratoren schlaflose Nächte bereiten.