ForumVNC-Sicherheit
Stefan Koch – Donnerstag, 05. Mai 2005 00:46 Uhr

Hallo,

Wie ist eigentlich die Sicherheit mit VNC (Zugriff mit Passwort über das Internet)? Ich habe gehört dies sollte sehr unsicher sein. Meine Idee wäre nämlich, dass man an unserem Schulserver einen Remotezugriff über VNC einrichtet, so dass man von Zuhause aus Einstellungen verändern kann.

Serverbetriebssystem: SuSE Linux 9.2 Eval

Wäre vielleicht VPN die bessere Art?

Danke!

3 Antworten
Jürgen Nistal – Donnerstag, 05. Mai 2005 01:34 Uhr

Hi Stefan,

VNC an sich ist sehr unsicher, weil es nur ein Passwort gibt und kein
Benutzername und der Netzwerkverkehr im Klartext übermittelt wird.

VNC kann man aber sehr sicher einrichten, in dem man VNC über SSH tunnelt.

VNC in einem VPN zu nutzen halte ich für etwas fragwürdig, da im virtuellen
Netz ja wieder jeder Rechner den Netzwerkverkehr abhören kann.

Die Frage die sich mir stellt: wozu brauchst du überhaupt VNC?

Da es schlecht bis gar nicht möglich ist einen “Windows”-Rechner ohne Maus und
bunter Oberfläche zu bedienen ist VNC hierfür notwendig. Das geht auch sehr
gut, auch über DSL.
Allerdings mach auch VNC aus “Windows” kein Betriebssystem, an dem gleichzeitig
mehrere Menschen arbeiten können.

Wenn du deine Linux-Server nur “aus der Ferne” administrieren möchtest reicht
eigentlich SSH. Das sollte sowieso laufen, selbst wenn du VNC verwendest (siehe
oben) und X11-Anwendungen kannst du problemlos ebenfalls über SSH tunnel, da
brauchst du dann auch kein VNC.

Es gib lediglich ein Szenario in dem für mich ein VNC-Server unter Linux
sinnvoll erscheint, aber ich will dir ja VNC ausreden. ;-)

Zu NX (FreeNX) kann ich nichts sagen, denn das habe ich noch nicht ausprobiert.

Schönes langes Wochenende

Jürgen

Philipp Vogt – Donnerstag, 05. Mai 2005 11:57 Uhr

Hallo!

Noch eine kleine Anmerkung zu Deiner Aussage:

“Wenn du deine Linux-Server nur “aus der Ferne” administrieren möchtest reicht
eigentlich SSH. Das sollte sowieso laufen, selbst wenn du VNC verwendest (siehe
oben) und X11-Anwendungen kannst du problemlos ebenfalls über SSH tunnel, da
brauchst du dann auch kein VNC.”

IMHO brauchen X11-Anwendungen, die ueber SSH getunnelt werden, viel Bandbreite. Zumindest ein Tunneln eines Netscapes von der Uni zu mir nach Hause war einfach unpraktikabel, weil zu langsam. V.a. vnc 4 ist wesentlich bandbreitesparender als alle bisherigen, da er scheinbar (so steht es zumindest in der Beschreibung) Events/Updates innerhalb von 20ms zusammenfasst. So ist die benoetigte Bandbreite z.B. von meinem Server (per SSH 1152×864 16bpp) sehr gering (im Gegensatz zu den vnc 3.x-Versionen).

V.a wenn jemand eine graphische Oberflaeche zur Administration bevorzugt (was ich auf jeden Fall machen wuerde, wenn es denn solch eine gaebe – Webmin bitte nicht als Beispiel bringen, thx ;-))), ist eigentlich nichts gegen SSH und vnc zu sagen. V.a. wenn die Verbindung durch widrige Umstaende abbricht und Du in Deinem “per SSH editier ich mal meine config mit vi und hab Stunden nimmer gespeichert” mal unterbrochen wirst. SSH: alles is weg; vnc: neu connecten und weitermachen. Auch ned uebel: vnc + konsole + langwierige tasks (updates etc). Du kannst dazwischen einfach disconnecten und alles laeuft weiter. Find ich recht angenehm.

Kurz und gut: wenn er vnc einsetzen will, sollte er das ganze ueber SSH tunneln. Aber X11 ueber SSH find ich unnoetig.

Und vnc ausreden: naja, wie gesagt ist der Linux-Mythos noch immer, dass per Kommandozeile alles immer besser zu erledigen ist. Leider (weil das IMHO einfach bedeutet, dass config-GUIs stiefmuetterlich behandelt werden…).

mit freundlichen Gruessen

Vogge

P.S: ich administrier normal auch Server nur per SSH, allerdings waer mir manchmal ein richtiges GUI lieber als z.b. die textversion von yast2 ;-)))

Jürgen Nistal – Donnerstag, 05. Mai 2005 14:21 Uhr

Hi Vogge,

meine Überlegung zum Thema VNC lautet einfach: Ist der Nutzen in diesem
Szenario größer als die Kosten/das Risiko?

Meine Antwort auf diese Frage lautet schlicht: Nein.

Der Grund für diese Antwort liegt im ersten Satz meines ursprünglichen
Kommentars: VNC an sich ist sehr unsicher!
Und in dem Wissen, dass hier einen Fehler zu machen nicht schwer ist, aber die
Folgen für den Server verheerend sein können.
Einen ungesicherten VNC-Server irgenwo hinzustellen ist eine Einladung für
ungebetene Gäste.

Schau dir einfach mal deine SSH-Logdatei an: SSH-Brute-Force Angriffe.
Schau dir dein Webserver-Log an: Apache- und IIS-Angriffe im Minutentakt.

Die Risiken von VNC kann man alle ausschalten, wenn man sich genug Mühe gibt
und genug Kenntnisse besitzt.

Allerdings: Lohnt der Aufwand? Hier geht es, so wie ich es verstanden habe, um
die “Teilzeitadministration” (also am Wochenende und “nach Dienstschluß”) eines
Schulservers. Es ist also den Tag über physikalischer Zugriff mit allen
Multimediafeatures möglich die auf einem Server so sinnvoll sind. ;-)

Dafür jetzt eine VNC-Server auf dem Server einzurichten, wasserdicht zu
konfigurieren und dann auch noch abzusichern ist relativ viel Aufwand für einen
relativ kleinen Komfortgewinn.

Ja, VNC braucht wohl weniger Bandbreite als X11-Anwendungen über SSH getunnelt,
aber wie sieht es mit kompression der SSH-Verbindung aus? Ich habe es noch
nicht ausprobiert, könnte mir aber vorstellen dass das zumindest ein wenig
hilft.

Zum Stichwort “Eine Stunde nicht gespeichert”: Du benutzt schlicht den falschen
Editor. ;-) (Oh ja, Emacs vs vi!)
Emacs legt alle paar Sekunden eine Sicherheitskopie deiner Änderungen an, die
beim Speichern gelöscht wird. Wenn da die Verbindung abbricht ist die
Sicherheitskopie noch da und Emacs fragt beim Start ob er nicht doch lieber die
bearbeitete Fassung laden soll…

Im Übrigen habe ich geschrieben das es für mich genau ein Szenario gibt in
dem VNC für mich sinnvoll erscheint, und das hattest du aufgelistet: Wenn ich
von verschiedenen Arbeitsplätzen an einer *Desktop-Sitzung* arbeiten
muss/will.
Für den Administrator ist dies eher unwahrscheinlich.

Auf der Kommandozeile ist SSH+VNC+Bash schlicht unnötig, denn es gibt das
Programm “screen” das für die Shell das ist, was VNC für den Desktop darstellt.
(Natürlich minus Netzwerkverbindung, denn die wird ja von SSH realisiert.)
“screen” unterstützt sogar verschiedene virtuelle Terminalsitzungen.

In einem Punkt gebe ich dir Recht: Wer unbedingt VNC benutzen will soll es
tun.
Aber die Frage hier war: Ist VNC unsicher und gibt es Alternativen.

Und wenn etwas unsicher und unnötig ist, weil es alternativen gibt, die
sicherer sind, aber nicht ganz so bequem, warum sollte ich dann schreiben: “Ja
Junge, mach das mal”?
Nur weil der dann übt den gehackten Server neu zu installieren? ;-)

Das “ausreden” hatte ich übrigens mit einem Augenzwinkern markiert, falls du es
übersehen haben solltest. 8-)
Ich bin zwar Kommandozeilenfetischist, aber wenn jemand ein GUI-Programm
verwenden will um Benutzer einzurichten: Wer bin ich, das ich im das verbieten
will?

Ich mag einfach keine GUI-Administrationsprogramme, weil sie meine
Möglichkeiten auf das einschränken, was der Autor des GUI-Programms realisiert
hat, und nicht das bieten, was wirklich möglich ist.
Andererseits sind sinnvolle Vorschläge auch viel wert. 8-)

Ich bin halt Windowsgeschädigt: Ich fühle mich bevormundet wenn mir Bill Gates
oder einer seiner Schergen vorschreibt was für Optionen er für sinnvoll hält,
nicht was das Programm an Optionen bietet.
Hast du mal versucht Änderungen, die du vor Monaten gemacht hast,
nachzuvollziehen?
Ich führe ein “Logbuch” in dem ich alle Änderungen protokolliere. Das hat mir
schon mehr als ein mal den Arsch gerettet.
Jetzt protokollier’ doch mal Änderungen die du in einem GUI-Programm gemacht
hast. Ich finde es einfach kürzer die Konfigurationsdatei und die geänderten
Optionen aufzuschreiben.

Schönes langes Wochenende noch

Jürgen

Tobias Hunger – Donnerstag, 05. Mai 2005 17:22 Uhr

Kleine Anmerkung: Textsessions (egal ob per SSH oder anders) kannst Du mit dem
ohnehin extrem nützlichen screen auch nach einer Verbindungsunterbrechung
fortsetzen.

In die Diskussion ob GUI oder Kommandozeile “besser” ist lasse ich mich nicht
schon wieder rein ziehen!

Philipp Vogt – Freitag, 06. Mai 2005 11:49 Uhr

Hallo!

ad “meine Überlegung zum Thema VNC lautet einfach: Ist der Nutzen in diesem
Szenario größer als die Kosten/das Risiko? ”

Er fragt ja nach dem Risiko. Antwort: um das Risiko zu minimieren (denn die Passworte werden sonst im Klartext uebermittelt): Firewall erlaubt keine Zugriffe von aussen auf den VNC (sprich entspr. Ports sperren bzw. nur den SSH-Port offen lassen vgl. englisches vs. deutsches System) und nur ueber SSH-Tunnel erlauben. Das ist/war auch Deine Antwort. Passt.

ad SSH-Bruteforce: ?! soll er nun SSH abdrehen? Besser (haettest Du wahrscheinlich auch geschrieben): nur normale User duerfen per SSH einloggen (siehe sshd_config) und von dort aus su, wenn man mit root arbeiten will. Andere Moeglichkeit (aus bekannten Gruenden ned viel sicherer): SSH auf anderen Port legen. Noch sicherer: knock-Programme, die einen Port erst nach einer Klopfsequenz an bestimmten Ports freigeben. Am Sichersten: Inselsystem in einem Hochsicherheitsraum ohne Tastatur und Bildschirm eingemauert ;-)))

X11 und ssh-kompression: nach meiner Erfahrung fast garnichts. YMMV

emacs vs. vi: stern g stern ich musste ja irgendwie meinen Punkt rueberbringen. Sry fuer das Beispiel ;-)

ad screen: hast Du recht. Hab ich jemanden hier sogar selbst mal geraten. Dieser wollte damals aber definitiv etwas fuer die Kommandozeile.

ad “Ich mag einfach keine GUI-Administrationsprogramme, weil sie meine
Möglichkeiten auf das einschränken, was der Autor des GUI-Programms realisiert
hat, und nicht das bieten, was wirklich möglich ist.”

Genau _das_ ist der springende Punkt! Scheinbar ist es oft so, dass GUI-Entwickler und Programmentwickler 2 total verschieden Personen/Entitaeten sind! Es ist nicht so, dass der Programmentwickler auch die Optionen in ein GUI uebernimmt, sondern einer der das Programm mag, dafuer ein GUI entwickelt! Das ist das Problem. Leider. Genug davon ;-)

ad GUI und “Logbuch”: wozu gibt es die Systempunkte unter Windows, zu denen man zurueckkehren kann? Bzw: was hindert dich als GUI-/Progammentwickler die versch. Versionen zu speichern? Ich geh ja auch her und kopier ja auch die configfiles um (a la: sshd_config.050506 und dann editier ich sshd_config).

Ok, abschliessend. Du hast natuerlich recht: Wenn es geht, dann kein GUI auf einem Server. Soweit stimmen wir ueberein. Allerdings bedeutet diese Regel auch, dass es auf absehbare Zeit keine guten GUIs fuer Administrationsaufgaben geben wird. IMHO: Leider. Ansonsten eben so wie wir bisher vorgeschlagen haben: SSH+richtig eingestellte Firewall+VNC. Das Risiko sollte dann vertretbar gering sein. Wiederum: IMHO

mfG

Philipp

Jürgen Nistal – Freitag, 06. Mai 2005 14:19 Uhr

Hi Philipp,

im Grunde liegen wir in der Einschätzung wirklich nicht weit auseinander. 8-)

Das Beispiel SSH-Brute-Force Attacken habe ich gebracht, um zu illustrieren,
dass selbst ein sicheres System wie SSH mittlerweile ständig unter Beschuß
liegt. Schon hier kann ein Fehler fatal sein, aber VNC als unsicheres System
stellt eine Einladung dar. Wenn man hier nicht hoellisch aufpasst, bestimmt
schnell ganz jemand anderes, was auf dem Server passiert.

Ich habe vor kurzem einen gebrauchten SUN-Rechner gekauft: Das root-Passwort
war leer (einfach “Enter” drücken).
Das erleichtert das Leben zwar ungemein, wenn die Kisten aber einmal am
Internet war, muss sie als kompromitiert gelten. 8-(

Ich finde das “Public-Key”-Verfahren unter SSH wird unterschätzt. Wenn ich die
“Passwort-Authentication” abstelle, können die bösen Jungs und Mädels es mit
“brutaler Gewalt” so lange versuchen bis die Sonne verlischt. ;-)
Die einzige Voraussetzung ist, dass ich den “Private-Key” immer bei mir habe,
aber das ist im Zeitalter der USB-Sticks ja kein Problem.
Ein netter Nebeneffekt: Das “SSH-Login” per “Public-Key” berührt nicht das
“root”-Passwort, also kann ich auf fünf verschiedenen Servern fuenf
verschiedene “root”-Passworte haben und mich trotzdem mit einem einzigen
Passwort, nämlich dem des “Private-Key” auf den fünf Servern einloggen.
Das hilft sehr, wenn man, wie ich, ein schlechtes Gedächtnis hat. ;-)

Neben dem “Logbuch” lege ich selbstvertändlich auch Sicherheitskopien meiner
Konfigurationsdateien an, bevor ich dran herumspiele, und eben das geht bei
“Windows” ja auch nicht.
Wieviel “Wiederherstellungspunkte” soll ich denn setzen? Wenn ich heute
herausfinde, dass die Änderungen, die letzen Monat gemacht habe doch nicht so
brilliant waren, muss ich ja auch alle dazwischenliegenden Punkte rückgängig
machen, oder?
Bei Windows 2000 gab es solch einen Schnickschnack noch nicht. ;-)

Was GUI-Administrationsprogramme betrifft gehen unsere Einschätzungen aber
etwas auseinander.
Wer ein GUI-Programm benutzen will, soll es tun, aber ich finde man sollte mich
nicht dazu zwingen es zu benutzen.
Bei Windows gibt es genau zwei Möglichkeiten: GUI-Programme (Systemsteuerung)
oder schlechte Konfigurationsdatei (Registry).
Und hier tritt genau das ein, was du bei den anderen
GUI-Administrationsprogrammen bemängelst: In der Systemsteuerung habe ich nur
einen Bruchteil der Möglichkeiten, verglichen mit der direkten Änderung an der
Registry.

Ich möchte deine Zusammenfassung ein wenig ergänzen:
Der Server sollte hinter einer “Firewall” stehen (ich empfehle einen
Pentium I + IPCop[1]) und somit auf dem Server kein Paketfilter (oft als
“Firewall” bezeichnet) nötig sein.

kein Rechner = kein Risiko
(richtig konfigurierter)SSH = geringes Risiko
(richtig konfigurierter)SSH+(richtig konfigurierter)VNC = vertretbares Riskio
(richtig konfigurierter)SSH+(falsch konfigurierter)VNC = ownd

Hier muss jeder mit sich selbst ausmachen, ob der Nutzen den Aufwand der
Absicherung und das Restrisiko überwiegt.

Man sollte im übrigen auch bedenken, dass Angriffe aus dem “sicheren” LAN eher
die Regel als die Ausnahme sind.
Deshalb gehört auf den Server nur das an Programmen, was wirklich notwendig
ist. Und da zählt eigentlich auch kein X11 dazu.

Nicht mehr ganz so langes Wochenende

Jürgen

[1] http://www.ipcop.org

Stefan Koch – Freitag, 06. Mai 2005 22:41 Uhr

Gibt es eine gute Anleitung, wie ich das einrichte, dass ich von Windows und Linux auf den Linux-Server (per SSH-VNC) zugreifen kann?

Jürgen Nistal – Samstag, 07. Mai 2005 02:22 Uhr

Hi Stefan,

wie mir scheint, sind die Würfel gefallen. ;-)

Die aktuelle c’t (10/2005)[1] hat den Schwerpunkt “PC-Fernsteuerung” mit einem
Artikel zum Thema VNC (auch unter Linux) (S.106) und in einer alten
“Linux-User”[2] ist VNC unter Linux im Detail erklärt.
Ansonsten gibt es auch einen noch einen relevanten Pro-Linux-Artikel[3].

Mit diesem Material sollte es zu schaffen sein, einen VNC-Server unter Linux so
einzurichten, dass man von einer externen Maschine darauf zugreifen kann,
zumindest hatte ich es mal damit hinbekommen.

Falls alle Stricke reißen, kann man es auch mal mit der Dokumentation, zum
Beispiel von RealVNC [4] oder TightVNC [5] versuchen…

Produktives Wochenende noch

Jürgen

[1] http://www.heise.de/ct/05/10/006/
[2] http://www.linux-user.de/ausgabe/2002/05/067-vnc/vnc.html
[3] http://www.pl-forum.de/t_netzwerk/fernsteuerung.html
[4] http://www.realvnc.com/products/free/4.1/
[5] http://www.tightvnc.com/docs.html

Volker Gülke – Donnerstag, 19. Mai 2005 10:15 Uhr

Hallo Stefan,

zuersteinmal ist VNC nur eine Möglichkeit einen “grafischen Desktop” auf dem “Server” zu starten und diesen dann mit einem Client auf eine entfernte “Workstation” zu exportieren. Hierbei werden die Tastatur- und Mauseingaben an den Server übergeben und die Bildschirmveränderungen an den Client übertragen. Ich setze VNC in der Firma dafür ein, meinen Desktop auch beim Abschalten meiner Workstation mit allen seinen Sessions bestehen zu lassen und meine Arbeit am nächsten Tag an selber Stelle fortzusetzen.

Da ich mir nicht sicher bin, ob VNC selbst die Daten auf dem Netzweg selber verschlüsselt (weiß das jemand zufällig aus dem Kopf?), verwende ich für die Verbindung zwischen VNC-Client und VNC-Server einen SSH-Tunnel, der auf jeden Fall die Verschlüsselung der Daten übernimmt. Das erledige ich mit dem folgenden SSH-Parametern (bei dem ersten VNC-Server mit VNC-Port 1):

ssh -L 5901:localhost:5901

Danach kann ich die VNC-Session auf localhost:1 verbinden und der SSH-Tunnel reicht die Anfragen hiermit weiter an den VNC-Server. Hierdurch ist sicher gestellt, daß die Datenverbindung zwischen VNC-Client und VNC-Server verschlüsselt erfolgt. Idealerweise unterdrückt man noch den Zugriff von außen auf die möglichen VNC-Ports mit einer lokalen Firewall, sodaß man gar nicht in Versuchung kommt, diese Sessions ohne SSH-Tunnel zu benutzen =;-)

Um einen Zugriff aus dem Internet zu ermöglichen, müste nun noch der Schulserver per SSH aus dem Internet erreichbar sein, was eine gute Firewall-Konfiguration vorraussetzt, die auch wirklich nur SSH-Verbindungen an den Server zuläßt und vor allem ein gut konfiguriertes und ständig auf dem neusten Sicherheits-Stand gehaltenes SSH vorraussetzt!

Minimale SSH-Konfiguration wäre sicherlich:
o SSH-Verbindungen nur per SSH2-Key erlauben.
o kein direkter Root-Zugriff
o Einschränkung des Zugriffs auf die FESTE IP-Adresse der Administrations-Workstation (so Du den eine offizielle für diese hast)

Ein VPN wäre universeller, da hiermit der lokale PC direkt im Schul-Netzwerk eingebunden würde und somit Zugriffe auf andere Dienste auch möglich sind, allerdings auch sicherlich weitaus schwieriger zu konfigurieren.

Ich würde mir überlegen, ob ich das Risiko des Remote-Zugriffs auf den Server wirklich eingehen würde. Wenn dieser Server ansonsten nur interne Services innerhalb des Schulnetzes anbietet, würde ich diesen nicht für Zugriffe aus dem Internet heraus zugänglich machen um die Administration remote zu erledigen. Abhängig von den Daten die sich auf dem Schulserver befinden (Personenbezogene Daten, Vorlagen für Prüfungsarbeiten, Notendatenbanken) könnte der Server schon interessant für der Schule zugehörige Personen sein, oder für Leute, die ein Sprungbrett für weitere Angriffe ins Internet suchen.

Ciao Volker

Volker Gülke – Donnerstag, 19. Mai 2005 10:20 Uhr

Shit, erst lesen, dann schreiben. Also VNC-verschlüsselt nicht, dann nur per SSH-Tunnel.
Ciao Volker

westerbarkeyzocker300 – Montag, 17. Februar 2020 08:33 Uhr

geht schon ordentlich ab ^_^/ übel episch dankeschön -_- Hat mir weitergeholfen !!! :D