Portál AbcLinuxu, 30. dubna 2025 10:12
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í.
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 :0Př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.
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.
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.
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".
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.
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.
Tiskni
Sdílej:
*) 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ě.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.