Portál AbcLinuxu, 30. dubna 2025 10:12

Zabezpečené VNC spojení se SSVNC

16.1.2012 14:10 | Přečteno: 3050× | Linuxení aneb hrátky se šrotem | Výběrový blog | poslední úprava: 16.1.2012 14:09

V jednom ze svých prehistorických zápisků jsem řešil problematiku VNC po Linuxem [1]. Vše ale bylo řešeno přímo, bez jakéhokoliv zabezpečení. Postupem času ale vyvstala i otázka s bezpečností připojení přes VNC, na její řešení se podívejme nyní.

VNC server, jeho nastavení a certifikát

Jako server pro zabezpečené VNC lze použít například prográmek x11vnc, což je jednoduchá konzolová utilita, se kterou lze sdílet a vzdáleně spravovat počítač s běžícím X serverem. Postup zprovoznění základního spojení jsem popisoval v minulém zápisku, nyní se podívejme na rozšířené volby pro zabezpečení spojení a to, jak se program v tomto případě chová.

Pro zabezpečení VNC serveru lze použít SSL, což je funkce, která se zapne při spuštění programu použitím přepínače -ssl. V mém případě tedy x11vnc spouštím příkazem

x11vnc -rfbauth /home/pushkin/.x11vnc -shared -http -ssl -forever -o /home/pushkin/.x11vnclog -display :0
Přičemž jedntlivé přepínače říkají programu x11vnc umístění hesla pro přístup k VNC serveru (soubor /home/pushkin/.x11vnc, přepínač -rfbauth /home/pushkin/.x11vnc), že zobrazovaná plocha má být sdílená mezi vzdáleným a lokálním uživatelem (-shared), program má vytvořit lokální mini http server, ke kterému se bude moci připojit klient za pomoci webového přohlížeče (-http). Spojení má být (v každém případě) zabezpečeno za pomoci ssl (-ssl) a po ukončení spojení má VNC server zůstat běžet (-forever). Veškeré hlášky od VNC serveru budou vypisovány do textového souboru (soubor /home/pushkin/.x11vnclog, přepínač -o /home/pushkin/.x11vnclog), jinak by byly vypisovány pouze do stdout. Sdílená plocha je přitom primární, tedy ta na adrese :0 (-display :0). Odpovědí x11vnc na jeho spuštění je v první řadě vystavení SSL certifikátu, který buď vypíše do konzole nebo do textového souboru jako v mém případě, konkrétně jde o hlášku uvedenou níže:

12/01/2012 10:55:47 Using SSL Certificate:

-----BEGIN CERTIFICATE-----
MIID5DCCAsygAwIBAgIJANCf3+Q5NH2lMA0GCSqGSIb3DQEBBQUAMIGlMQswCQYD
VQQGEwJBVTEOMAwGA1UEBxMFTGludXgxJzAlBgNVBAsTHmVrMjExcDA3LWtldi0x
MzI2MzYxNzgzLjgzMTY1ODEPMA0GA1UEChMGeDExdm5jMSYwJAYDVQQDEx14MTF2
bmMtU0VMRi1TSUdORUQtQ0VSVC0xNTg1MDEkMCIGCSqGSIb3DQEJARYVeDExdm5j
QHNlcnZlci5ub3doZXJlMB4XDTEyMDExMjA5NDk0M1oXDTEzMDExMTA5NDk0M1ow
gaUxCzAJBgNVBAYTAkFVMQ4wDAYDVQQHEwVMaW51eDEnMCUGA1UECxMeZWsyMTFw
MDcta2V2LTEzMjYzNjE3ODMuODMxNjU4MQ8wDQYDVQQKEwZ4MTF2bmMxJjAkBgNV
BAMTHXgxMXZuYy1TRUxGLVNJR05FRC1DRVJULTE1ODUwMSQwIgYJKoZIhvcNAQkB
FhV4MTF2bmNAc2VydmVyLm5vd2hlcmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQC13Qs9Ht0uVChzkmyHnB2aVUbnuVYUsgyaN1ToZ6Ypo8JLx98NdzNu
ij5uWCa9fROt/7dA2GsT4c92ceNuBTy78A18F7Q9QfatKVCVvBnTaBMvZ8lmI0jv
isgeT6IJnobFLZ5K/zKaGc8qRG8TPlQDR84Oqg9jjW/9Pl2CKj9TqnEXmi87vMp1
TKaAfVvCuyw0LtsdqFr2oWTH7rPkolSnHhH/VnsZlwpfHFLAb23J8wGsvEA5dNUl
ElTdjP0J1Hx8b6A9slZemyI1dOGQeGuwQNEClXq8tQN3HHwRnJD9aj5kHCjrgA9Z
J+KSEMlijrDrXorSE+us479JaMJjck1nAgMBAAGjFTATMBEGCWCGSAGG+EIBAQQE
AwIGQDANBgkqhkiG9w0BAQUFAAOCAQEAaQRMZu2JHSBU9z4ePglTKNbSRsJmHw/Q
4iTyZUvcMmdKPs4Vx4PSLPWTdkvw+NeuZxFDF4Qe+avYVdR/i/9FuzGe+crvqZGa
SwMgcB3CwTwzlCee0+iEQplcv9odINhpO1QNRCYm2X4Utap8SolEJNzNG5mQDb7Z
fmsukMLEoZqrexsZDK90vub4DA58E46xycWLVEEuvR9QBY/DV24+Fpatttn/sYGG
x64vVgwll8NIT3GtEjp/6yJ7pWRpB1a63OyUjSyFKz/L0zEsUmlVEFX5Kpb6lJKK
bwgZiEU3epbCxwD6/9cN9PolVJeVyDC2nbqg8dHXnR0T2fMU2PP44A==
-----END CERTIFICATE-----

Tento certifikát je vhodné si zkopírovat a nosit s sebou (respektive jeho MD5 součet) jako kontrolu pro vzdáleného klienta, který bude tak jako tak vyžadovat potvrzení certifikátu vystaveného serverem.

Klient, připojení přes webový prohlížeč

K takto zprovozněnému VNC serveru se lze připojit například z webového prohlížeče se zprovozněnou Javou připojením se na adresu http://server:5800. Odpovědí prohlížeče bude upozornění na neznámý certifikát, jehož vlastnosti si lze prohlédnout a následně je nutno jej odsouhlasit.

Připojení z webového prohlížeče Připojení z webového prohlížeče, certifikát

Po odsouhlasení certifikátu VNC server přesměruje spojení na port 5900 a lze se klasickým způsobem přihlásit k VNC serveru.

Připojení z webového prohlížeče, login

Klient, připojení pomocí ssvnc

ssvnc je TightVNC server s podporou SSH a SSL navržený přímo pro připojení k x11vnc. Navenek má velice jednoduché grafické rozhraní, které však umožňuje vše potřebné včetně prohlédnutí si certifikátu ještě před samotným připojováním k VNC serveru. Pozor - na rozdíl od webového klienta se zde do adresy nezadává port pro připojení, nýbrž číslo displaye, tedy například "server:0".

SSVNC, prohlížení vertifikátu

Po prohlédnutí a zkontrolování certifikátu již lze přistoupit k přihlášení a normálně na vzdáleném počítači pracovat. Cerifikát si lze samozřejmě pro příští připojení uložit.

SSVNC, uložení certifikátu

POZOR!! Jak je uvedeno i na webových stránkách SSVNC, uživatelé distribuce Debian a jejích derivátů by si měli zkontrolovat používanou verzi knihovny OpenSSL z důvodů možné zranitelnosti, více viz: http://www.debian.org/security/2008/dsa-1571.

       

Hodnocení: 100 %

        špatnédobré        

Obrázky

Zabezpečené VNC spojení se SSVNC, obrázek 1 Zabezpečené VNC spojení se SSVNC, obrázek 2 Zabezpečené VNC spojení se SSVNC, obrázek 3 Zabezpečené VNC spojení se SSVNC, obrázek 4 Zabezpečené VNC spojení se SSVNC, obrázek 5

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

16.1.2012 14:39 Dag | skóre: 25 | blog: bzuk
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
Odpovědět | Sbalit | Link | Blokovat | Admin
Dík!
16.1.2012 15:24 marek_hb
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
Odpovědět | Sbalit | Link | Blokovat | Admin
super, díky moc
Michal Fecko avatar 16.1.2012 21:12 Michal Fecko | skóre: 31 | blog: Poznámkový blog
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
Odpovědět | Sbalit | Link | Blokovat | Admin
Ako je to s pripojením na Linux mašinu (na ktorej beží SSVNC server) a Win mašinou s bežným VNC klientom (RealVNC, TightVNC či UltraVNC)?
pushkin avatar 17.1.2012 06:39 pushkin | skóre: 43 | blog: FluxBlog
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
Alespoň co jsem měl možnost vyzkoušet, tak klasické TightVNC se chová stejně pod Linuxem i pod Windows, tj. zahlásí, že server nabídl nepodporovaný způsob zabezpečení. RealVNC asi dopadne stejně - alespoň podle informací na jejich webu, kde o SSL/SSH není ani zmínka. Nicméně stále lze použít buď windowsí verzi SSVNC nebo webový prohlížeč s Javou, obojí jsem zkoušel a funguje to.
17.1.2012 13:06 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
Svoje postřehy ohledně VNC připojení z Linuxu na Windows přes ssh jsem sepsal v článku VNC - používáme vzdálený desktop.
When your hammer is C++, everything begins to look like a thumb.
17.1.2012 13:20 Radek Hladik | skóre: 20
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
Ono je to s VNC a SSL (resp. šifrováním obecně) trošku komplikovanější. Standardně VNC nabízí mechanismus autentikačních protokolů, které se při hello nabídnou, vybere se shodný a vhodný a ten se použije. Takže to, že se zde bavíme o SSL znamená konkrétně mechanismus VeNCrypt, který sám o sobě má svoje mechanismy (X509+heslo,X509,...). Například šifrování s UltraVNC je úplně jiné a využívá nějakých jejich speciálních vlasntostí.

VNC protokol je poměrně jendoduchý a moc toho neumí a umožňuje snadné rozšiřování (nejen těch autentikačních protokolů). Ale zpátky k VeNCryptu, ten je zajímavý i tím, že ho používá Qemu a potažmo tedy i Libvirt a spol. Také je zajímavý tím, že pro Windows existují dvě implementace, jedna přímo s názvem VeNCrypt, která se už nevyvíjí a dokázala strašně snando spadnout. Druhá je zmíněné SSVNC, což ale ve skutečnosti je jenom wrapper okolo jiných VNC klientů (a funguje i s UltraVNC). Ovšem z hlediska protokolu je to tak, že SSVNC naváže spojení, dohodne parametry, VeNCrypt autentizaci, pak nahodí stunnel, spustí VNC klienta, provede s ním vlastní začátek protokolu, podstrčí mu nějaký auth. způsob, který klient zná a pak ho přesměruje do stunnelu. Řešení funkční, ale docela kostrbaté.

Z toho důvodu a ze zvědavosti jsem se rozhodl si napsat vlastního VNC klienta s podporou pro VeNCrypt a další Qemu rozšíření. Směřuju ho především na Qemu+textovou konzoli, ale docela funguje i s grafickým VNC. Pokud má někdo zájem o vyzkoušení (říkejme tomu alfa verze :-) ), může se mi ozvat přes email v profilu.
17.1.2012 15:28 kolcon | skóre: 15 | blog: kolcon
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
Odpovědět | Sbalit | Link | Blokovat | Admin
me by spis zajimalo, jake pouzivate spravce vnc spojeni, tj. pripojit se na jedno kliknuti, vcetne spravy hesel atd.

neco jako vinagre, ale lehci, bez gnome dependenci...
pushkin avatar 17.1.2012 15:57 pushkin | skóre: 43 | blog: FluxBlog
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
To je dobrá otázka, ale pro někoho jiného - osobně žádného správce hesel nepoužívám ani necítím potřebu jej používat.
17.1.2012 16:23 kolcon | skóre: 15 | blog: kolcon
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
no ja premyslim, jestli neco takoveho treba s ncurses rozhrani nenapsat...
18.1.2012 16:08 Radovan Garabík
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
CPM
18.1.2012 20:11 kolcon | skóre: 15 | blog: kolcon
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
no, to neni uplne ono - ja myslel spis neco
+------------+
| vnc host1 |
| vnc host2 |
+------------+

kde po najeti se otevre vnc spojeni s automaticky zadanym heslem, parametry a tak
pushkin avatar 19.1.2012 07:17 pushkin | skóre: 43 | blog: FluxBlog
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
Mno, to by teoreticky nebyl problém naprogramovat za pomoci nějakého jednoduchého wrapperu pro vnc a konfiguračního souboru*, kde by byly uloženy servery s porty, hesly a příslušnými volbami. Jenom si nedovedu představit jak to nasoftit v bashi :-)
*) Což by mohl být potenciální bezpečnostní problém, protože by musel být čitelný oním wrapperem a tedy nejspíše i uživatelem, který jej spouští ... a člověk přeci nechce aby se jakýkoliv uživatel dostal kamkoliv a ještě navíc viděl hesla k serverům v nezahashované formě.
19.1.2012 19:39 kolcon | skóre: 15 | blog: kolcon
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
jj, si to asi napisu v Perlu... ten konfigurak bude nekde v ~, takze pristupny pouze pro uzivatele, co ten skript pusti
23.1.2012 16:09 Radovan Garabík
Rozbalit Rozbalit vše Re: Zabezpečené VNC spojení se SSVNC
dialog --menu 'vyber servera' 15 25 6 1 host1.cz 2 host2.cz

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.