Hlavní navigace

Názor k článku Hardening webového serveru Apache: šifrování a certifikáty od Filip Jirsák - Michal Vymazal: Ne, nejde o názor. Vy jste...

  • Článek je starý, nové názory již nelze přidávat.
  • 11. 2. 2020 12:06

    Filip Jirsák

    Michal Vymazal: Ne, nejde o názor. Vy jste v článku uvedl chybné a nesmyslné tvrzení, že v protokolech SSLv2, SSLv3 a TLS 1.0 budou uživatelská jména. Po dotazu jste se odkazoval na dokument BSI, kde ovšem žádné takové tvrzení není. To jsem doložil.

    Proč je to tvrzení nesmyslné jsem nedoložil, ale když chcete… Je potřeba trochu znát, jak HTTP a TLS dohromady skládá HTTPS. TLS je univerzální šifrovaný tunel, kterým mohu procházet různé protokoly. HTTP (ve verzích 0.9 a 1.x) je textový protokol skládající se z hlaviček a těla. Uživatelská jména a hesla při přihlašování k webové stránce se přenášejí buď v hlavičkách (při použití HTTP autentizace) nebo (dnes u webů prakticky výhradně) v těle požadavku jako formulářová data. HTTPS je protokol HTTP tunelovaný skrze TLS spojení. To znamená, že TLS neví nic o tom, kde uvnitř je uživatelské jméno a heslo – to je záležitost HTTP protokolu. Pokud by tedy uvedené protokoly přenášely nešifrovaně uživatelské jméno a heslo, musely by přenášet nešifrovaně i vše okolo, nebo-li celý vnitřek komunikace. Jinými slovy, šifrovací protokoly SSLv2, SSLv3 a TLS 1.0 by od roku 1995 deset let vše přenášely nešifrovaně a nikdo by si toho nevšiml, až v roce 2006 by si toho konečně někdo všiml a malým updatem na TLS 1.1 by se najednou šifrování zprovoznilo. Ale nikomu by to nešifrování dál nevadilo a dalších víc než deset let by se v pohodě TLS 1.0 používalo.

    Samozřejmě, kdokoli si to přečte, a ví trochu o co jde, musí se smíchy válet po zemi. Bohužel je to jen ale rozepsání důsledků vašeho tvrzení v článku.

    Vtip je v tom, ze TLS v1.0 umoznoval (za jistych okolnosti) downgrade na NULL cipher neboli TLS_EMPTY_RENE­GOTIATION.
    Už to z vás pomalu leze a začínáte chápat, proč je to tvrzení v článku nesmyslné. Za prvé píšete „za jistých okolností“. Ano, samozřejmě, za jistých okolností – což je úplně něco jiného, než (implicitní) „vždy“, které je v článku. Přičemž ty jisté okolnosti jsou mimo jiné to, že to server musí podporovat. Takže pro obranu před tímto útokem stačí vypnout podporu nulové šifry na serveru, a nemusíte vypínat TLS 1.0.

    Dále nulová šifra samozřejmě znamená, že není šifrováno vůbec nic – takže by byla nešifrovaná celá komunikace, ne jen jméno a heslo.

    Shrnuto a podtrženo – v článku tvrdíte, že budou vždy přenášeny přihlašovací údaje nešifrovaně, přičemž chybně jsou obě tvrzení. Nebude to vždy, ale jen pokud útočník na komunikaci zaútočí a server takový útok umožní. A pokud už útočník takový útok provede, nebude se to týkat jen uživatelských jmen a hesel, ale nešifrované bude celá komunikace.

    Podobne je to i se zbytkem Vasich ostatnich tvrzeni.
    Ano, jsou logická, pravdivá a nesnažím se tvrdit, že je něco napsaného v textu, kde to napsané není.

    Muj clanek je o hardeningu te casti Apache, ktera se tyka sifrovaneho provozu.
    To jsem psal v prvním komentáři, že by v článku měla být popsána jen konfigurace Apache a neměl byste se pouštět do obecných úvah „proč to nakonfigurovat právě takhle“, když tomu (bohužel) nerozumíte.

    A jako podklad pro tento "implementacni scenar" jsem zvolil dopourceni BSI Technical Guideline TR-02102–2, kde jsem navic ocitoval i nektera jejich oduvodneni, proc nepouzivat SSLv2, SSLv3, TLSv1.0 a TLS v1.1.
    Neocitoval, vy jste si je vymyslel. Pro vaši informaci, citace vypadá tak, že je napsaná v uvozovkách, je u ní uvedeno, odkud se cituje tak, abych dokázal citaci v původním dokumentu najít. A v tom původním dokumentu najdu buď přesný text citace, nebo třeba bude lehce upravený slovosled, abych vytvořil samostatnou větu z něčeho, co se v původním textu váže na okolní text. Případně tam bude to samé v jiném jazyce. Takže pokud by ten váš výmysl s přihlašovacím jménem a heslem byl citací, musel bych být schopen v původním dokumentu najít slovo „password“ – ono tam je, jednou a v úplně jiném kontextu. Nevím, jak ještě víc byste chtěl dokázat tvrzení, že si vymýšlíte – za mne jako důkaz bohatě stačí už to, že jste třikrát napsal, že citujete z dokumentu BSI, přitom jste ani jednou nepoužil citaci (nevložil jste sem konkrétní text BSI), ani jednou jste neodkázal na konkrétní kapitolu dokumentu (na rozdíl od mne – a tvrdíte, že já svá tvrzení nedokazuju), dokonce ani na konkrétní stránku jste nebyl schopen odkázat.

    Důvod, proč nepoužívat TLS 1.0 a TLS 1.1 je ten, že jsou to z dnešního pohledu už slabé protokoly – mají známé díry, které je sice možné vhodnou konfigurací serveru a klienta zalepit, ale často si nemůžete být jistý, že druhá strana tu záplatu opravdu má. Což je zároveň důvod, proč už relativně dlouho platí, že se doporučuje tyhle protokoly opustit, ale k tomu, že přestanou být prohlížeči (ve výchozí konfiguraci) podporované dochází až letos. Jinými slovy platilo (a pořád platí), pokud máte dobrý důvod tyhle protokoly podporovat (např. musíte podporovat staré HTTPS klienty, kteří novější protokol neumí), nakonfigurujte je tak, aby byly bezpečné, a pak je můžete dál používat. Což je diametrálně odlišné od SSLv2 a SSLv3, které zabezpečit nejde – proto je k nim jednoznačný postoj „nepoužívat“, a pokud někde máte zařízení, které nic jiného neumí, je potřeba se k tomu chovat, jako by ten provoz byl nešifrovaný.

    Mozna jste od clanku ocekaval neco jineho, ale to je jiz Vase zalezitost.
    Očekával bych, že v článku nebudou zjevné nesmysly.