SSTP a SSL 3.0: označení versus vyjednaná verze
Označení SSL nedokazuje relaci SSL 3.0. Porovnejte deklarovaný protokol s tím, který služba skutečně vyjednává, a potom starou verzi vyřaďte.
Dva lidé se mohou dívat na stejné nasazení SSTP a dojít k opačným závěrům. Jeden čte dokumentaci produktu, vidí písmena SSL a předpokládá, že tunel provozuje protokol vyřazený před lety. Druhý ukáže na moderní handshake a prohlásí otázku za uzavřenou. Oba argumentují z označení, nikoli z vyjednané verze, a jen jedno z toho je důkaz. Srovnání, které má smysl, je mezi tím, co název slibuje, a tím, co služba skutečně vybere.
Dvě odpovědi na stejnou otázku
Argument označením se snadno vysloví: SSTP je popisován jako zabezpečený tunelovací protokol přes sockety, historický název říká SSL, a proto spojení musí být SSL 3.0. Drží se, protože název skutečně pochází z této linie a protože většina těch, kdo to opakují, se nikdy nepodívala na handshake. Drží se také proto, že závěr zní opatrně, jako by předpokládat to nejhorší byla bezpečná volba. Předpokládat to nejhorší a měřit skutečnou verzi jsou dvě různé činnosti a jen jedna z nich něco mění.
Argument důkazem klade užší otázku. Na jaké verzi protokolu se tento klient a tento server shodli, na tomto koncovém bodu, v tomto okamžiku? Odpověď přichází od služby, která ukončuje TLS, nikoli z marketingové stránky nebo z prohlížeče, který se dostal na podobně pojmenovaný web.
Oba argumenty se liší v tom, co dokážou. Označení nedokáže rozlišit staré nasazení od záplatovaného a handshake vám neřekne, co dělá nesouvisející služba na stejném hostiteli. Používejte druhý a přestaňte používat první.
Přečtěte verzi, kterou služba skutečně vybere
Začněte pojmenováním komponent: implementace klienta, implementace serveru, koncový bod TLS a vše mezi tím, co ukončuje a znovu navazuje TLS. Nástroj pro vyvažování zátěže, který ukončuje TLS a s backendem mluví prostým HTTP, mění to, čí politiku musíte číst.
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null> | grep -E 'Protocol|Cipher' Get-WinEvent -LogName System -ProviderName Schannel -MaxEvents 20
Zapište koncový bod a čas vedle výsledku, protože pozdější změna politiky činí nedatované pozorování bezcenným. Zopakujte sondu z klienta na stejné síťové cestě jako uživatelé, na kterých vám záleží, protože odposlouchávací zařízení může ukončit TLS s vlastním nastavením. Pokud se obě pozice rozcházejí, našli jste komponentu, na které záleží. Pokud se shodují, máte důkaz místo sloganu.
Oddělte pole záznamu od vyjednávání
Číslo verze vypadající archaicky v jednom poli není stejný fakt jako relace SSL 3.0. RFC 7568 považuje verzi záznamové vrstvy a vyjednaný protokol za odlišné záležitosti a právě z tohoto rozlišení pocházejí sebejisté chybné odpovědi. Přečtěte vyjednaný protokol, potom šifru a teprve pak uzavřete závěr o relaci.
Stejný dokument je jednoznačný ohledně samotného protokolu: SSL 3.0 se nesmí používat a vyjednávání nebo fallback na něj je zakázán. Důvodem je vadná konstrukce CBC, kterou zneužil útok POODLE, a to je vlastnost protokolu, nikoli konfigurace jedné aplikace.
Proto „tuto zátěž je pravděpodobně těžké zneužít“ není argument pro ponechání SSL 3.0 zapnutého. Požadavek zní protokol odstranit, ne vyhrát debatu o jedné demonstraci.
Vyřaďte SSL 3.0 s politikou, kterou unesete
V systému Windows jsou nastavení protokolů Schannel pod klíčem Protocols a čtou se zvlášť pro roli klienta a serveru, a proto změna, která opraví jeden směr, může nechat druhý nedotčený. Aktuální nastavení a jejich požadavky na restart dokumentuje Microsoft a knihovna TLS třetí strany na stejném hostiteli je zcela ignoruje.
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server' Get-ChildItem 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols'
Změňte politiku podporovanou cestou správy, potvrďte, že vlastnící služba znovu načte konfiguraci, a zachovejte schválenou cestu zpět. Vložení širokého skriptu registru z jiného prostředí je způsob, jak se z opravy jedné služby stane výpadek všech klientů TLS na stroji. Rozsah restartu zde hraje roli: nastavení, které vypadá použité, může stále držet v paměti služba, která ho znovu nenačetla.
Protějšek, který stále vyžaduje zastaralou verzi, potřebuje aktualizaci nebo plán migrace. Nedokumentovaná výjimka, která tiše obnoví starý protokol, není strategie kompatibility a nepřežije příští audit.
Přebírejte změnu na nových spojeních
Testujte s novými relacemi po změně politiky, protože spojení navázané před změnou nic nedokazuje o konfiguraci, která nyní platí. Potvrďte, že povolený protokol uspěje a zakázaný selže v rámci autorizovaného validačního postupu, a poté ponechte identitu certifikátu a kontroly důvěry přesně tak, jak byly.
Pamatujte, co handshake nepokrývá. SSTP přenáší autentizaci PPP po vrstvě TLS, takže moderní verze protokolu nic neříká o tom, který uživatel byl autorizován ani ke kterým zdrojům se relace může dostat. To jsou oddělené kontroly s oddělenými důkazy.
Zapište výsledek jako službu, backend, povolenou politiku a pozorovanou verzi. Takový záznam přesně odpovídá na bezpečnostní otázku, což nedělá ani argument označením, ani argument nepohodlím.