RDP protokol na stanicích s Windows Vista, Windows 7 a novějšími, umožňuje šifrovat dvěma transportními šifrovacími protokoly. Jedním je prehistorický RDP Security Layer. Druhým standardní TLS - všude se říká SSL, ale SSL je prehistorický název, nestandardní, to co se ve skutečnnosti ustavuje je ovykle automaticky prefereované TLS.
V případě RDP Security Layer se jedná sice o šifrování, ale bez ověření identity serveru. Znamená to, že na komunikace je možné podnikat aktivní MITM (man in the middle) útoky a v klidu celou komunikaci odposlouchávat. K tomu, aby to šlo, by útočník musel stát uprostřed vašeho TCP spojení s cílovým RDP serverem (nebo stanicí samozřejmě). Na LAN i WiFi to ale není prakticky žádný problém a po cestě přes internet procházíte množstvím naprosto anonymních uzlů.
Je proto samozřejmě lepší používat rovnou TLS. To je vy výchozím nastavení také samo od sebe zapnuto. Jenže nastavení umožňuje domluvu (negotiate). Prostě umožňuje, aby se klient se serverem domluvili na šifrovací metodě. Kvůli starším klientům, kteří by TLS ještě neovládali. No a to je kámen úrazu. Když dělám MITM, tak se přece můžu na stranu klienta tvářit, že jsem starý server, který TLS neumí a stejně tak se zase můžu tvářit na stranu serveru, že jsem prehistorický klient, který TLS neumí. A domluvíme se s útočníkem na RDP Security Layer a je to (tzv. downgrade attack).
Co tedy musíme udělat, abychom si TLS vynutili? Musíme přepnout RDP natvrdo na TLS a ten starý RDP Security Layer vůbec nepovolovat.
Na serverech je to jednoduché - stačí v konzoli Remote Desktop Session Host Configuration na Windows 2008 R2 přepnout protokoly. Jenže někdo to nastavení na Windows 2012 totálně zprznil. A na stanicích tohle GUI není vůbec.
Jak vynutím TLS pro RDP přes zásady skupin (group policy)
Buď si udělejte na doméně nový Group Policy Object (GPO), nebo daném RDP serveru stačí spustit lokální gpedit.msc. Uvnitř GPO je potom:
Computer Configuration - Administrative Templates - Windows Components - Remote Desktop Services - Remote Desktop Session Host - Security
Require use of specifi security layer for remote (RDP) connections = ENABLED = SSL (TLS 1.0)
A je to.