UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Analýza protokolů pro vzdálenou správu Ondřej Krejčí Bakalářská práce 2014
Prohlášení autora Prohlašuji, že jsem tuto práci vypracoval samostatně. Veškeré literární prameny a informace, které jsem v práci využil, jsou uvedeny v seznamu použité literatury. Byl jsem seznámen s tím, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorský zákon, zejména se skutečností, že Univerzita Pardubice má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle 60 odst. 1 autorského zákona, a s tím, že pokud dojde k užití této práce mnou nebo bude poskytnuta licence o užití jinému subjektu, je Univerzita Pardubice oprávněna ode mne požadovat přiměřený příspěvek na úhradu nákladů, které na vytvoření díla vynaložila, a to podle okolností až do jejich skutečné výše. Souhlasím s prezenčním zpřístupněním své práce v Univerzitní knihovně. V Pardubicích dne 7. 5. 2014 Ondřej Krejčí
Poděkování Tímto bych rád poděkoval Ing. Soně Neradové za věcné rady a trpělivost v průběhu zpracování této bakalářské práce. Poděkování také patří mé rodině za podporu a vytvoření kvalitního zázemí během studia na vysoké škole.
Anotace Cílem práce je provést komparativní analýzu dostupných protokolů pro vzdálenou správu a přístup. Autor práce v teoretické části představí a srovná moderní protokoly (VNC a jeho varianty, RDP a jeho verze a Terminal Services). V praktické části práce se bude autor zabývat implementací protokolů pro vzdálenou správu, provede jejich implementaci a odchycení provozu pomocí programu Wireshark. Dále bude poukázáno na zásadní rozdíly mezi jednotlivými protokoly a jejich možnostmi jejich nasazení. Klíčová slova VNC, RDP, RFC, VPN, SSH, Wireshark Title Analysis of protocols for remote management Annotation The aim of thesis is carry out a comparative analysis of available protocols for remote management and access. The author of thesis in theoretical part will introduce and compare modern protocols (VNC and his variants, RDP and his versions and Terminal Services). In the practical part of the thesis the author will address the implementation of the protocol for remote management, performs their implementation and catching traffic using Wireshark. It will also be pointed out major differences between individual protocols and their potential deployment. Keywords VNC, RDP, RFC, VPN, SSH, Wireshark
Obsah Seznam zkratek... 8 Seznam obrázků... 9 Seznam tabulek... 9 Úvod... 10 1 Vzdálená správa... 11 2 Základní pojmy... 11 2.1 Analýza paketů a program Wireshark... 11 2.2 Klient-server... 12 2.3 Veřejná a neveřejná IP adresa... 14 2.4 VPN... 14 2.4.1 Zabezpečení VPN... 14 2.4.2 Dělení VPN... 15 2.5 SSH... 16 2.5.1 Transportní vrstva... 17 2.5.2 Autentizační vrstva... 19 2.5.3 Vrstva spojení... 20 2.6 Tenký a tlustý klient... 21 2.7 Model ISO/OSI... 22 2.7.1 Prezentační vrstva... 22 2.7.2 Aplikační vrstva... 22 3 Představení VNC... 23 3.1 Vznik VNC... 23 3.2 Vlastnosti VNC... 23 3.3 Zabezpečení VNC... 23 3.4 Protokol RFB... 24 3.4.1 Architektura protokolu... 24 3.5 Implementace VNC... 26 3.5.1 RealVNC... 26 3.5.2 UltraVNC... 29 3.5.3 TightVNC... 31 3.5.4 Porovnání VNC derivátů... 33
4 Představení RDP... 34 4.1 Architektura protokolu... 34 4.1.1 RDP spojení... 34 4.1.2 Statické virtuální kanály... 38 4.1.3 Přenos a komprese dat... 38 4.1.4 Zabezpečení protokolu... 38 4.2 Implementace protokolu... 39 4.2.1 Vzdálená plocha - Vzdálená pomoc... 39 4.2.2 Terminal Services... 40 4.2.3 RDP klienti... 41 4.2.4 Verze protokolu... 41 5 Porovnání VNC a RDP... 43 5.1 Vlastnosti protokolů... 43 5.2 Implementace protokolů... 44 5.2.1 Operační systém Linux... 44 5.2.2 Operační systém Windows... 44 5.3 Využití protokolů v praxi... 44 Závěr... 46 Literatura... 47
Seznam zkratek 3DES AES CBC DES EAP-TLS FIPS GPL GSSAPI HTTP HTTPS ISO/OSI ITU L2F L2TP MPPE MS-CHAP PDU PPP PPTP RC4 RDP RFB RLE RSH SSH SSL SSTP STLS TCP/IP TLS VNC VPN WAN ZRLE Triple DES Advanced Encryption Standard Cipher Block Chaining Data Encryption standard Extensible Authentication Protocol - Transport Layer Security Federal Information Processing Standards General Public Licence Generic Security Service Application Program Interface Hypertext Transfer Protocol Hypertext Transfer Protocol Secure International Standards Organization/Open Systems Interconnection International Telecommunication Union Layer 2 Forwarding Layer Two Tunneling Protocol Microsoft Point-to-Point Encryption Microsoft - Challenge-Handshake Authentication Protocol Protocol Data Unit Point-to-Point Protocol Point-to-Point Tunneling Protocol Arcfour Remote Desktop Protocol Remote Framebuffer Run-length encoding Remote Shell Secure Shell Secure Sockets Layer Secure Socket Tunneling Protocol Specified Transfer Listing Service Transmission Control Protocol / Internet Protocol Transport Layer Security Virtual Network Computing Virtual Private Network Wide Area Network Zlib Run-Lenght Encoding 8
Seznam obrázků Obrázek 1 Blokové schéma vzdálené správy... 11 Obrázek 2 Obecný model klient-server... 13 Obrázek 3 Vzdálená správa klient-server... 13 Obrázek 4 Site-to-site VPN... 15 Obrázek 5 Remote Access VPN... 16 Obrázek 6 SSH Protokol Stack... 17 Obrázek 7 Transportní vrstva, výměna paketů... 17 Obrázek 8 Paket s verzí protokolu na straně klienta... 18 Obrázek 9 Paket s verzí protokolu na straně serveru... 18 Obrázek 10 SSH, proces výměny klíčů... 18 Obrázek 11 Vrstva spojení, výměna zpráv... 21 Obrázek 12 Porovnání ISO/OSI modelu s TCP/IP... 22 Obrázek 13 Komunikace RFB protkolu... 24 Obrázek 14 Framebuffer - parametry serveru... 25 Obrázek 15 RFB - nastavení pixelu... 25 Obrázek 16 Navázání spojení VNC... 26 Obrázek 17 RealVNC Server a Viewer... 28 Obrázek 18 Žádost klienta o aktualizaci framebufferu... 28 Obrázek 19 Zachycení pohybu myši klienta... 28 Obrázek 20 UltraVNC Secure Plugin... 29 Obrázek 21 UltraVNC Server a Viewer... 30 Obrázek 22 Zachycené parametry framebufferu... 31 Obrázek 23 TightVNC TCP Stream... 31 Obrázek 24 TightVNC Server a Viewer... 32 Obrázek 25 Nešifrované spojení, zachycený framebuffer... 32 Obrázek 26 Šifrované spojení pomocí SSH tunelu... 33 Obrázek 27 RDP X.224 Connect Request... 34 Obrázek 28 RDP X.224 Connect Confirm... 34 Obrázek 29 RDP připojovací sekvence (CORPORATION, 2013)... 37 Obrázek 30 TPKT protokol... 38 Obrázek 31 Protokol T.125... 38 Obrázek 32 RDP vzdálené plocha... 40 Obrázek 33 Xrdp server... 41 Seznam tabulek Tabulka 1 Definované šifrovací algoritmy... 19 Tabulka 2 RealVNC, rozdělení licencí... 27 Tabulka 3 Porovnání VNC programů... 33 9
Úvod V dnešní době, kdy čas hraje velkou roli, může vzdálené ovládání počítače ušetřit nejen mnoho času, ale i finančních nákladů. Díky vzdálené správě uživatel nemusí být fyzicky přítomen u spravované platformy. Vzdálená správa může být využita nejen v komerční sféře, ale i k pomoci méně zkušeným uživatelům. Další velkou výhodou je možnost správy více počítačů nebo inteligentních zařízení jako smartphone, serverových či síťových zařízení. Hlavním cílem této bakalářské práce je provést podrobnou analýzu dostupných protokolů pro vzdálenou správu a přístup. Celá komunikace je zachycena pomocí síťového nástroje, který je schopen zachytit kompletní příchozí i odchodí pakety na zkoumaném síťovém rozhraní. První kapitola práce je věnována základním pojmům spojenými se vzdálenou správou. Je v ní nastíněn proces zachycení a analýzy paketů. Dále v ní jsou podrobně vysvětleny tunely pro zabezpečení komunikace vzdálené správy mimo lokální síť. Součástí této kapitoly je i krátký popis referenčního ISO/OSI modelu a jeho vrstvy spojené s protokoly RDP, RFB a VNC. Druhá kapitola práce je zaměřena na představení VNC. Obsahuje především popis historie dálkové správy, vlastnosti a zabezpečení původního protokolu VNC. V další části kapitoly je podrobně popsána architektura protokolu RFB, moderní protokoly VNC a jeho varianty. Závěr druhé kapitoly tvoří implementace, zachycení provozu a porovnání nabízených služeb zmíněných protokolů VNC. Třetí kapitola této práce má za cíl představit protokol RDP. Je zde podrobně popsána architektura protokolu společně s verzemi RDP protokolu. Dále jsou v ní představeny RDP klienti a Terminal Services pro různé operační systémy. Na závěr této kapitoly je provedena implementace protokolu na dva operační systémy a zachycení komunikace. Čtvrtá kapitola je zároveň poslední kapitolou této práce. Je zaměřena především na porovnání protokolů, které slouží ke vzdálené správě. Je zde poukázáno na zásadní rozdíly mezi protokoly VNC a RDP. Závěrem této kapitoly jsou popsány možnosti nasazení zkoumaných protokolů v praxi. V této bakalářské práci jsou veškeré obrazové dokumentace vytvořeny autorem, pokud není uvedeno jinak. 10
1 Vzdálená správa Vzdálená správa je služba, která umožňuje zásah na počítači uživatele bez nutnosti fyzického kontaktu s počítačem. Počítač lze efektivně spravovat buď vzdáleně v lokální síti, nebo mimo lokální síť. Hlavní motivací pro zavedení vzdálené správy je: instalace a nastavení nových zařízení či aplikací, vzdálená aktualizace operačního systému, podpora klienta při správě počítače/ serveru, podpora pro ICT outsourcing, zvýšení efektivity práce. Velkou výhodou jsou současné programy, které uživatelům nabízí snadnou instalaci a jejich ovládání nevyžadují přílišné znalosti v dané problematice. Hlavní nevýhodou vzdálené správy je její bezpečnost. Pokud není přenos dostatečně chráněn, může dojít vcelku snadno k jeho odposlouchávání. Obrázek 1 Blokové schéma vzdálené správy 2 Základní pojmy 2.1 Analýza paketů a program Wireshark Analýza paketů je proces, při kterém dochází k zachycení a ztvárnění aktuálních dat přenášených po síti. Díky tomu lze lépe porozumět komunikaci v dané síti a odstranit případné závady. Analýza paketů nám umožňuje zjistit: uživatele v síti, vlastnosti sítě, špičkový čas využití sítě, 11
neefektivní a nezabezpečené aplikace, nebezpečné aktivity a možné útoky, kdo a co využívá dostupnou šířku pásma. Zachycení a analýzu paketů umožňuje paketový sniffer. (Sanders, 2012, s. 20-21) K dispozici existuje mnoho nástrojů, které jsou produkovány jak v komerční tak i bezplatné verzi. Každý nástroj je navržen k jiným účelům a při jejich výběru je nutné zohlednit nejméně tyto faktory: podporované protokoly, podpora operačního systému, podpora programu a dokumentace, pořizovací náklady. V této práci byl zvolen program Wireshark. Program Wireshark byl vytvořen Geraldem Combsem v roce 1998 s původním názvem Etheral. Wireshark je bezplatný software šířený pod licencí GPL, která umožňuje osobní i komerční využití. (Sanders, 2012, s. 53-55) 2.2 Klient-server Síťová architektura klient-server nejen ve vzdálené správě rozlišuje dva typy koncových zařízení, která mezi sebou komunikují prostřednictví počítačové sítě. Zařízení se označují jako klient a server. Komunikace probíhá na základě dotazů a odpovědí. (HORÁK, a další, 2006, s. 49) Klientem je označováno zařízení, které zajišťuje uživatelské rozhraní. Klient zahájí komunikaci vysláním dotazu na server. Z hlediska požadavků na hardware, klient zpravidla obsahuje vstupně - výstupní zařízení. Server je jádrem počítačové sítě. V něm jsou shromažďována a jím jsou zároveň i zpracovávána data. Server tato data a služby poskytuje klientům, na základě jejich požadavků. Obvykle se náročnější operace provádějí na straně serveru. Tím je klient ušetřen zpracovávat náročné operace a dostává pak pouze výsledné informace. Výhodou této architektury je nezávislost platformy klienta na platformě serveru a opačně. Při správné a účelné komunikaci lze za pomocí architektury klient-server minimalizovat objem přenášených dat. 12
Klient Klient Klient Server Klient Obrázek 2 Obecný model klient-server Z pohledu vzdálené správy lze klient-server chápat takto. Server je program, který sdílí prostředky a obrazovku. Klient je program, který interaguje se serverem. Lze jednoduše říci, že klient ovládá server. Pokud dojde ke ztrátě spojení a jeho následnému obnovení, server a všechny jeho aplikace zůstanou ve stejném stavu, jakém byly před ztrátou spojení. Hlavním účelem komunikace klient-server je snaha o minimalizování objemu dat přenášených po síti. Model klient-server využívají aplikace pro vzdálenou správu počítače typu VNC i RDP. (WHITE, 2007, s. 282-283) Události klávesnice a myši Počítačová síť Server Klient Obraz desktopu serveru Obrázek 3 Vzdálená správa klient-server 13
2.3 Veřejná a neveřejná IP adresa Veřejná IP adresa představuje jedinečnou adresu, která identifikuje zařízení v rámci celé sítě Internet. Tato adresa navíc umožňuje přímé spojení protokolů TCP/UDP. Dostupnost z celé sítě Internet zvyšuje riziko útoku. Z tohoto důvodu je nutné počítač chránit pomocí síťových prvků. Veřejnou IP adresu přiděluje poskytovatel internetového spojení. Z hlediska vzdálené správy je veřejná IP adresa velice vhodná, ale nikoli nezbytná. I přes správně nastavenou veřejnou IP adresu, může nastat konflikt při požadavku o spojení. Ten neprojde skrz místní router. V takovém případě je možné provést konfiguraci routeru neboli přesměrování portů. Neveřejná IP adresa je opakem IP adresy veřejné. Tato IP adresa je zpravidla z Internetu nepřístupná. Z pohledu vzdálené správy mimo lokální síť existuje řešení. Tím je zavedení vlastní privátní sítě VPN, tunelového spoje nebo pomocných programů např. LogMeIn Hamachi. 2.4 VPN VPN je označení pro virtuální privátní síť umožňující propojení koncových zařízení nebo celých sítí skrz veřejnou počítačovou síť. Propojením sítí pomocí VPN lze vytvořit privátní zabezpečenou linku z veřejné nezabezpečené sítě. Tím je odstraněna hrozba odposlechu. Takto vytvořené VPN okruhy jsou podobné linkám mezi sítěmi u rozsáhlých WAN sítí. Z uživatelského pohledu jsou síťové prostředky přístupné stejným způsobem jako v rámci jedné lokální sítě. Laicky řečeno při propojení sítí nebo koncových zařízení pomocí VPN je dosaženo stavu, ve kterém zařízení mohou komunikovat, jako kdyby byly propojeny v jedné lokální síti. Toho je možné docílit pomocí tunelovacích protokolů obsažených v TCP/IP modelu. 2.4.1 Zabezpečení VPN Jak již bylo uvedeno výše VPN vytváří zabezpečenou linku a brání tím odposlechu komunikace a ztrátě dat. Hlavní úkoly zabezpečení jsou: Autentizace - zabrání neoprávněnému vstupu do virtuální primární sítě. Integrita dat - odhalí manipulaci s daty u přenášených zpráv. Šifrování dat - při zachycení paketu pomocí snifferu, útočník uvidí pouze šifrované informace. Zabezpečení je zajištěno pomocí tunelovacích protokolů a šifrování. Vytvořené spojení pomocí tunelu zapouzdří pakety protokolu do datagramu jiného protokolu. K řešení se používají standardně protokoly PPTP, L2TP a SSTP. Protokoly částečně vycházejí z funkcí protokolu PPP. Protokol PPTP při přenosu zapouzdřuje rámce protokolu PPP do datagramů IP. PPP rámce jsou šifrovány pomocí MPPE s využitím šifrovacích klíčů MS-CHAPv2 nebo EAP-TLS. Šifrovací klíč MS-CHAPv2 byl prolomen a není považován za bezpečný. 14
Následný protokol L2TP vychází z protokolů PPTP a L2F. Protokol využívá šifrovací služby IPsec protokolu. Šifrování zpráv je založeno na DES nebo 3DES algoritmu. Oproti PPTP již nepodporuje MPPE šifrování PPP datagramů. Nejnovější protokol SSTP využívá SSL kanálu protokolu HTTPS pro zapouzdření PPP přenosu. (MICROSOFT) 2.4.2 Dělení VPN VPN linky lze rozdělit dle zapouzdření: Tunelovaná linka o zapouzdřený a zašifrovaný je celý paket. Transportní linka o zapouzdřená a zašifrovaná je pouze datová část paketu. VPN lze dále rozdělit na typy Site-to-site a Remote access. Site-to-site VPN je označení pro spojení dvou vzdálených sítí. Tato možnost je využívána pro spojení např. dvou vzdálených firemních poboček. Pro úspěšné spojení je nutné vytvořit nejprve spojení lokální sítě s VPN serverem. Následně lze vytvořit VPN mezi servery. Obrázek 4 Site-to-site VPN Remote Access VPN je označení pro vzdálený přístup na server z domácí sítě s využitím veřejné sítě. Tato možnost je využívána např. pro připojení klienta do podnikové privátní sítě. 15
Obrázek 5 Remote Access VPN 2.5 SSH SSH protokol vznikl pro zabezpečení síťové komunikace s cílem jednoduché a levné realizace. Počáteční verze SSH-1 měla nahradit stávající nezabezpečené protokoly Rsh, Telnet a další systémy vzdáleného přihlášení. Rok později od zveřejnění SSH verze 1 byl vydán SSH protokol verze 2. Ten vylepšil SSH-1 v mnoha ohledech, bohužel ale nezajistil kompatibilitu s SSH-1. SSH protokol je realizován na principu klient-server. Protokol je dostupný pro většinu operačních systémů čímž se stal oblíbenou volbou pro vzdálené přihlášení a tunelování. Protokol naslouchá na portu 22. Struktura protokolu je složena ze tří částí: transportní vrstva, autentizační vrstva, vrstva spojení. 16
Obrázek 6 SSH Protokol Stack 2.5.1 Transportní vrstva Transportní vrstva protokolu SSH zajišťuje autentizaci serveru, kompresi, počáteční výměnu klíčů a ověření integrity. Obrázek 7 Transportní vrstva, výměna paketů 17
Funkce transportní vrstvy lze rozdělit do tří základních kroků, jak je zobrazeno na obrázku Obrázek 7. V prvním kroku dojde k navázání TCP spojení mezi klientem a serverem. Po navázání spojení si klient a server vymění paket, který obsahuje identifikační řetězec ve tvaru SSHprotoversion-softwareversion SP komentář CR LF. Řetězec přenáší informace o verzi protokolu, softwaru a znaky ukončení. Obrázek 8 Paket s verzí protokolu na straně klienta Obrázek 9 Paket s verzí protokolu na straně serveru Druhý krok slouží k synchronizaci šifrovacího algoritmu. Klient a server si vzájemně vymění SSH_MSG_KEXINIT pakety. Tyto pakety obsahují seznam seřazených a podporovaných šifrovacích algoritmů. Algoritmy zahrnují výměnu klíčů, šifrování, algoritmus komprese a MAC algoritmus. Poté je vybrán první společně podporovaný algoritmus. Pořadí je určeno ze seznamu klienta. Obrázek 10 SSH, proces výměny klíčů 18
Tabulka 1 Definované šifrovací algoritmy Šifra Popis Použití 3DES-CBC 3DES v CBC módu povinné Blow fish-cbc Blow fish v módu CBC volitelné Twofish256-CBC Twofish v CBC módu s 256bit klíčem volitelné Twofish192-CBC Twofish v CBC módu s 192bit klíčem volitelné Twofish128-CBC Twofish v CBC módu s 128bit klíčem volitelné AES256-CBC AES v módu CBC s 256bit klíčem volitelné AES192-CBC AES v módu CBC s 192bit klíčem volitelné AES128-CBC AES v módu CBC s 128bit klíčem doporučené Serpent256-CBC Serpent v módu CBC s 256bit klíčem volitelné Serpent192-CBC Serpent v módu CBC s 192bit klíčem volitelné Serpent128-CBC Serpent v módu CBC s 128bit klíčem volitelné Arcfour RC4 s 128bit klíčem volitelné Cast128-CBC Cast 128 v režimu CBC volitelné Poslední krok slouží k výměně klíčů. Klient a server si vymění pakety SSH_MSG_NEWKEY. Tyto pakety signalizují úspěšné dokončení výměny klíčů. Závěrem klient odešle SSH_MSG_SERVICE_REQUEST, na který naváže protokol spojení nebo autentizační protokol. Od tohoto momentu je celá komunikace šifrována. (STALLINGS, 2010) 2.5.2 Autentizační vrstva Autentizační vrstva poskytuje prostředky, kterými je klient ověřen na straně serveru. Na počátku autentizace klient odešle na server SSH_MSG_USERAUTH_REQUEST žádost. Tato žádost obsahuje uživatelské jméno, název služby (typicky SSH protokol) a název autentizační metody, která je použitá k ověření žádosti. Server přijme požadavek o autentizaci. V případě úspěšné autentizace odešle klientovi SSH_MSG_USERAUTH_SUCCESS odpověď a autentizační protokol je u konce. V opačném případě odešle SSH_MSG_USERAUTH_FAITURE odpověď. V ní je obsažen seznam jedné nebo více metod, které jsou potřebné k autentizaci. Server může požadovat jednu nebo více z následujících autentizačních metod: password, hostbased, publickey, 19
GSSAPI, keyboard-interactive. (STALLINGS, 2010) 2.5.3 Vrstva spojení Vrstva spojení definuje koncept kanálů a jejich požadavků, pomocí kterých jsou realizovány SSH služby. Všechny typy komunikace jako je např. terminálová relace jsou rozděleny na samostatné kanály. Pro každý kanál je definováno unikátní číslo, které nemusí být stejné na obou koncích komunikace. Životnost kanálu je rozdělena do tří fází: otevření kanálu, přenos dat a uzavření kanálu. K otevření kanálu dochází zasláním zprávy SSH_MSG_CHANNEL_OPEN, která obsahuje číslo odesílatele kanálu, číslo příjemce kanálu a velikost paketu. V případě že kanál nebyl úspěšně vytvořen server odešle SSH_MSG_CHANNEL_OPEN_FAIURE zprávu, ve které je obsažen kód s příčinou selhání. Po úspěšném otevření kanálu probíhá přenos dat za použití zprávy SSH_MSG_CHANNEL_DATA. Tato obousměrná komunikace může pracovat do uzavření kanálu. V případě požadavku na uzavření kanálu dochází k odeslání SSH_MSG_CHANNEL_CLOSE, která obsahuje číslo příjemce kanálu a kanál je uzavřen. SSH rozlišuje tyto typy kanálů: Direct, Forwarded-tcpip, Session, X11. (STALLINGS, 2010) 20
2.6 Tenký a tlustý klient Obrázek 11 Vrstva spojení, výměna zpráv Tenký klient je entita, která při vykonávání své funkce silně závisí na svém serveru. Tento klient se zpravidla vyskytuje ve vícevrstvé architektuře. Nejčastější tenký klient je webový prohlížeč, který s prezentační vrstvou komunikuje přes HTTP protokol a zajišťuje pouze zobrazování dat. Nároky na jeho instalaci a konfiguraci jsou minimální. Tlustý klient je entita v architektuře klient-server nebo síti, která obvykle obsahuje mnoho funkcí nezávislých na centrálním serveru. Tlustý klient stále vyžaduje alespoň občasné připojení k síti nebo centrálnímu serveru. Dokáže vykonávat řadu funkcí, aniž by musel být připojen. Na druhé straně tenký klient provádí nejmenší možný počet operací a při zpracování se dotazuje na server, kde jsou data zpracována nebo ověřena. Nároky na jeho instalaci a konfiguraci jsou podstatně náročnější. 21
2.7 Model ISO/OSI Referenční model ISO/OSI standardizuje návrh řešení komunikačních zařízení v počítačové síti pomocí vrstveného modelu. Model nespecifikuje implementaci otevřeného systému. Uvádí pouze obecné principy a síťové struktury, které se skládají ze sedmi funkčních vrstev. V rámci modelu má každá vrstva jasně specifikovaný úkol, který bude řešit. Dále jsou specifikovány funkce a služby, které každá vrstva poskytuje vrstvě vyšší a také služby, které vyžadují od vrstvy nižší. Každá funkce vrstvy je implementována protokoly. Naopak jeden protokol může provést i několik funkcí. (ŠIMONOVÁ, 2004, s. 24-27) ISO/OSI Model TCP/IP Model Aplikační Prezentační RDP, VNC, RFB Aplikační Relační Transportní Transportní Síťová Síťová vrstva Linková Fyzická Vrstva síťového rozhraní Obrázek 12 Porovnání ISO/OSI modelu s TCP/IP 2.7.1 Prezentační vrstva Prezentační vrstva referenčního modelu ISO zajišťuje čitelnost informací odeslané z aplikační vrstvy do jiného systému aplikační vrstvy. V případě potřeby prezentační vrstva realizuje komprese přenášených dat, eventuálně i jejich šifrování. Pokud jsou přijata šifrovaná data, dojde k jejich dešifrování před předáním zprávy aplikační vrstvě. (KOLEKTIV, 2003, s. 737) 2.7.2 Aplikační vrstva Aplikační vrstva referenčního modelu OSI poskytuje síťové služby, které jsou nejblíže k uživateli. Tato vrstva naváže komunikaci s určenými partnery a synchronizuje postupy pro 22
obnovení a kontrolu integrity dat. Protokol RDP pracuje na této vrstvě OSI modelu. Programy, jako jsou například RealVNC, Internet Explorer a další aplikace koncového uživatele, jsou příkladem programů, které využívají služby poskytované aplikační vrstvou pro uživatele. (KOLEKTIV, 2003, s. 737) 3 Představení VNC VNC je systém sloužící k vzdálené správě počítače s plně grafickým uživatelským rozhraním. Kompletní systém se skládá z VNC serveru, klienta a komunikačního protokolu. Systém pracuje jako klient-server. Komunikace probíhá přes počítačovou síť pomocí protokolu RFB. Značnou výhodou VNC je nezávislost na platformě. Tato nezávislost umožňuje například připojení VNC klienta systému Linux k VNC serveru systému Windows. 3.1 Vznik VNC Na počátku vývoje VNC stojí firma ORL (Olivetti & Oracle Research Lab). Původní zdrojový kód byl publikován jako open source pod licencí GPL. Za pomoci firmy AT&T byl v roce 2002 výzkum ukončen. Po uzavření ORL byl zformován nový projekt RealVNC, který pokračoval ve vývoji VNC. Nezávisle na RealVNC vznikly další implementace VNC jako jsou UltraVNC a TightVNC. Proto je možné setkat se různými výrobci a typy VNC. (LABORATORIES, 1999) 3.2 Vlastnosti VNC VNC podporuje vícenásobné připojení klientů k jednomu serveru. Využití je v praxi efektivní pouze v případě, kdy jeden klient ovládá prostředky. Ostatní klienti by měli být ideálně v režimu view. Ten nabízí stejný obraz serveru bez možnosti jeho ovládání. Komunikace standardně probíhá na portech 5900-5906. VNC klient se připojuje defaultně k portu 5900. Při změně konfigurace klienta i serveru lze použít připojení pomocí webového prohlížeče s podporou Javy. Tento klient komunikuje na portech 5800-5806. 3.3 Zabezpečení VNC Před zahájením komunikace (je-li tato fáze nastavena) musí klient projít autentizací. Autentizace je zabezpečená pomocí systému challenge-response. Tento typ zabezpečení je založen na základě náhodné výzvy a ověřované odpovědi. Při shodě informací dojde k povolení přístupu a navázání spojení se serverem. Po kladně vyřízené autentizaci dochází k samotné komunikaci, která standardně není zabezpečená. Síťový provoz není šifrován a může dojít k jeho odposlouchávání třetí stranou. Ta pak může snadno zachytit nejen obraz serveru, ale i příkazy ze strany klienta. Hrozbu odposlechu lze snadno odstranit pomocí VPN či zabezpečeného SSH tunelu. Ten 23
pak umožní nezabezpečené relaci VNC komunikovat skrz zabezpečený tunel. (VAŠEK, 2009) 3.4 Protokol RFB RFB je jednoduchý protokol pro vzdálenou správu s grafickým uživatelským rozhraním. Vzhledem k jeho činnosti na úrovni framebufferu je možné ho využít na každém grafickém a okenním operačním systému. RFB protokol je velice často zastoupen ve VNC aplikacích. (RICHARDSON, 2010) Obrázek 13 Komunikace RFB protkolu 3.4.1 Architektura protokolu RFB protokol je tenký klient. V protokolu je kladen důraz na velmi malé požadavky ze strany klienta. Tím je zajištěna funkčnost na velkém množství hardwaru. Protokol umožňuje klientovi stát bez příslušnosti. Pokud dojde k odpojení od serveru a jeho opětovnému připojení ke stejnému serveru, stav uživatelského rozhraní zůstane zachován. Jak již bylo uvedeno, framebuffer je důležitou součástí protokolu. Díky framebufferu je RFB protokol možné využít na mnoha systémech jako je Windows, Mac OS ale i na dalších systémech, které jsou postaveny na grafickém režimu správy oken. Framebuffer je složen z více částí neboli bufferů. Buffer uchovává informace o barevné hloubce pro každý pixel. Hodnoty jsou rozdělený podle počtu barev. Dále se uchovává alfa kanál, který se používá ve spojitosti s průhledností daného pixelu. Pomocí barevné hloubky, velikosti palety a rozlišení výstupního signálu lze vypočítat množství paměti potřebné pro framebuffer. 24
Obrázek 14 Framebuffer - parametry serveru Obrázek 15 RFB - nastavení pixelu Navázání komunikace klienta se serverem je rozděleno do tří fází. V první fázi dochází k synchronizaci verze protokolu a typu zabezpečení. Server navrhne nejvyšší možnou verzi protokolu. Po přijetí zprávy klient odpoví zvolenou verzí protokolu. Zabezpečení nevyžaduje autentizaci, při níž se používá šifrování DES. V druhé fázi probíhá inicializace, ve které dochází k výběru přístupové formy mezi klientem a serverem. Forma přístupu je rozdělena na sdílený a výlučný přístup k serveru. 25
Obrázek 16 Navázání spojení VNC Třetí fáze slouží k běžné komunikaci mezi klientem a serverem. Zde server odpovídá na obdržená vstupní data odesláním obrazových dat ke klientu. Kódovací metody ZRLE, RAW a další, zmenšují vytížení přenosové linky. (RICHARDSON, 2010) 3.5 Implementace VNC VNC, jak již bylo uvedeno v úvodu této kapitoly, má mnoho implementací. Příkladem může být RealVNC, UltraVNC nebo TightVNC. Nastavení klientských i serverových částí je podobné. Všechny tři zmíněné VNC deriváty umožňují nastavení hesel pro autentizaci administrátora resp. klienta v režimu view. Dále je možné nastavení portů a kvality přenosu dat. Všechny implementace nabízejí i Java klienta. Ten bývá zaveden pro větší možnost implementace. V případě UltraVNC Java klient řeší zároveň kompatibilitu s operačním systémem Linux. Výše zmíněné VNC deriváty se liší převážně v množství poskytovaných služeb, zabezpečení přenosu, podpory pro operační systémy a mobilní telefony. 3.5.1 RealVNC RealVNC byl založen v roce 2002 z původních vývojářů VNC. RealVNC jako jediný z výše uvedených softwarů spadá do kategorie komerčních. Je založen na jednoduché peerto-peer architektuře. Díky tomu není potřeba žádný další síťový prvek nebo centrální server. Velkou výhodou tohoto softwaru je podpora operačních systémů. Instalaci lze 26
provést na počítačích s operačním systémem Windows, UNIX, Linux a MAC. Klientský software lze provozovat i na mobilních platformách Windows Mobile, Android a ios. Software je rozdělen do tří licenčních skupin: Free, Personal a Enterprise. Bezplatná Free verze poskytuje pouze autentizaci a standardní funkce jako je nastavení kvality přenosu a změny portu. Ostatní rozšiřující funkce jsou placené. Rozdělení licencí a poskytovaných služeb je zobrazeno v tabulce Tabulka 2. (RealVNC, 2002) Tabulka 2 RealVNC, rozdělení licencí Vlastnost / licence Free Personal Enterprise Multiplatformní vzdálená správa ANO ANO ANO VNC autentizace ANO ANO ANO Osobní využití ANO ANO ANO Komerční využití NE ANO ANO 128bit AES šifrování NE ANO ANO 256bit AES šifrování NE NE ANO Autentizace systému NE ANO ANO Optimalizace výkonu NE ANO ANO Tisk NE ANO ANO Přenos soborů NE ANO ANO Chat NE ANO ANO Vyhrazený kanál pro podporu NE ANO ANO 27
Obrázek 17 RealVNC Server a Viewer Obrázek 18 Žádost klienta o aktualizaci framebufferu Obrázek 19 Zachycení pohybu myši klienta 28
3.5.2 UltraVNC První verze UltraVNC byla zveřejněna v roce 2005. Jedná se o výkonný, bezplatný a snadno použitelný software. Vychází z původního zdrojového kódu VNC. Spolu s VNC využívá také protokol RFB. Díky tomu je kompatibilní s větší částí aplikací založených na tomto standardu. UltraVNC lze implementovat na operační systémy Windows od verze Windows XP. Dále obsahuje Java Viewer, pomocí něhož se lze připojit a zároveň provést přenos dat z jednoduché aplikace na UltraVNC server. Tento Viewer lze využít i na systému Linux a Mac. K šifrování komunikace je možné využít SecureVNCPlugin. Ten nabízí uživateli možnost výběru šifry a délky klíče. Na straně serveru je vygenerován privátní klíč, umístěný na straně klienta a veřejný pro stranu serveru. Pro správnou funkci pluginu musí být zaveden jak na straně serveru, tak i na straně klienta. Plugin nelze využít v případě křížení UltraVNC s jiným VNC derivátem. (UltraVNC, 2008) Obrázek 20 UltraVNC Secure Plugin UltraVNC oproti původní verzi VNC dále obsahuje: nastavitelné DSM šifrování komunikace, přenos souborů, chatovací nástroj, přídavné funkce (odstranění tapety, odstranění Aero u Windows Vista,...). 29
Obrázek 21 UltraVNC Server a Viewer 30
Obrázek 22 Zachycené parametry framebufferu 3.5.3 TightVNC TightVNC stejně jako UltraVNC je bezplatný software s využitím FRB protokolu. Jeho první verze byla zveřejněna roku 2001. Software lze implementovat na operační systémy Windows, Linux a mobilní platformy Windows Mobile, Android a ios. TightVNC poskytuje kromě základních nastavení pouze přenos souborů. Jeho nevýhodou je nedostatečné zabezpečení komunikace pomocí 56bit DES. Tento nedostatek lze odstranit použitím SSH tunelu. (KAPLINSKY, 1999) Obrázek 23 TightVNC TCP Stream 31