Většina našich zákazníků ani netuší že mají zapnutý WEDOS Global Protection. Vidí jen klidně spící web, který útoky ani nezaregistruje. Přitom ještě pár hodin předtím to byl problémový web, který přetěžoval server a ohrožoval další zákazníky. Podpora během pěti minut přesměrovala provoz ze serveru na více jak stovku anycastových reverzních proxy, které okamžitě začali filtrovat provoz. Co se skrývá pod kapotou? Technicky je toho pod povrchem překvapivě dost. Pojďme se na to podívat detailněji.
Architektura: dvě platformy, sedm vrstev
Ochrana běží na dvou nezávislých, funkčně identických platformách. Každá na odlišeném hardware.
Uvnitř každé platformy je provoz zpracováván v sedmi vrstvách od vstupní L4 vrstvy, přes load balancing a cache (Varnish), až po výstupní vrstvu směrem k origin serveru zákazníka. Šest z nich běží na HAProxy, sedmá je právě ta cache. Každá vrstva má tři samostatné konfigurační profily podle typu provozu:
- vip — vyhrazena pro enterprise zákazník
- general — běžný provoz
- attack — profil aktivovaný při detekovaném útoku, s přísnějšími pravidly
Právě proto je konfigurace HAProxy tak rozsáhlá, napříč oběma platformami, šesti HAProxy vrstvami a třemi profily se sečte na zhruba 140 tisíc řádků konfigurace. Důležité je ale vědět, že to nejsou statisíce jedinečných rozhodnutí: profil attack z velké části dědí základ z general a liší se jen v konkrétních limitech a akcích. Reálná „unikátní“ rozhodovací logika je tak výrazně menší, než by se dalo z počtu řádků usuzovat. HAProxy config je ale nutně explicitní a opakovaný, protože každá vrstva a profil musí být nezávisle auditovatelný a nezávisle měnitelný bez rizika, že se rozbije zbytek systému.
Mozek systému: Lua moduly
Samotný HAProxy umí směrovat a filtrovat provoz podle pravidel, ale rozhodovací logiku, tedy „je tohle útok, nebo ne?“ mu dodává sada vlastních modulů napsaných v Lua. Jde o víc než 9 tisíc řádků kódu rozdělených do specializovaných částí, například:
- dns_reader.lua (přes 4 000 řádků) — asynchronní DNS klient a cache, který průběžně načítá konfigurační pravidla uložená v DNS TXT záznamech a řeší překlad originů jednotlivých domén.
- log_logic.lua (přes 2 500 řádků) — normalizuje a vyhodnocuje logy z celé infrastruktury v reálném čase, což je základ pro rozhodování, ne jen pro zpětnou analýzu.
Zbylé moduly se starají například o JA4 fingerprinting (rozpoznávání klientů podle otisku TLS handshake, mnohem odolnější metoda než klasické User-Agent hlavičky), o klasifikaci CMS (část pravidel je na míru), klasifikaci robotů tedy odlišení legitimních crawlerů a další moduly postupně přibývají.
Tahle vrstva se doplňuje o Varnish/AVC konfiguraci (přes 9 tisíc řádků YAML mezi oběma platformami) pro cachování a další zpracování na aplikační úrovni.
Data, která „krmí“ systém
Rozhodovací logika je jen tak dobrá, jak aktuální jsou data, se kterými pracuje. WEDOS Global Protection udržuje přes 100 MB živě aktualizovaných seznamů jako IP rozsahy, ASN mapování, geolokační data, JA4 otisky a DNS mapy a to ve více než 220 souborech. Tyto seznamy se z velké části stahují a aktualizují automatizovaně, nejde tedy o ručně psaná data, ale o produkční vstup, který se musí neustále synchronizovat s reálným internetovým provozem. K tomu se přidávají regexové seznamy pro rozpoznávání vzorů v požadavcích a přes 270 šablon chybových/challenge stránek, které se zobrazí, když systém provoz vyhodnotí jako podezřelý.
Administrace: jedna aplikace, 34 tisíc řádků
Nad celou infrastrukturou stojí nová administrátorská aplikace, kterou už brzy nasadíme. Jde technicky o jeden HTML+JS soubor o více než 34 tisících řádcích, plně čitelný zdrojový kód (žádný minifikovaný build).
Kdo na tom pracuje a proč je to citlivé
WEDOS Global Protection je bezpečnostní infrastruktura, a k tomu se váže logický princip: samotný zdrojový kód a jádro rozhodovací logiky má v ruce jen úzká skupina lidí. Není to otázka důvěry, ale principu. Čím víc lidí zná přesné detaily toho, jak systém rozpoznává útoky, tím snáz by šlo tuhle znalost zneužít k jejich obejití. Bezpečnostní systémy se dlouhodobě staví na tom, že citlivá logika je izolovaná od širokého okruhu lidí.
Na druhou stranu se na vývoji reálně podílí mnohem širší skupina lidí, než jen ti, kdo commitují do repozitáře. Testuje se, posílají se poznatky a hotové kusy konfigurace zvenčí, které se pak integrují do produkčního nastavení, ať jde o návrhy nových pravidel, ladění prahových hodnot podle konkrétních incidentů, nebo zpětnou vazbu z provozu. Tenhle model – úzké jádro se zdrojovým kódem, širší okruh spolupráce a testování, je přesně to, co bezpečnostní infrastruktura tohoto typu vyžaduje.
WEDOS Global Protection je na rozdíl od VEDOS Hostingu daleko známější v zahraničí, kde máme řadu velkých a významných partnerů. I od nich dostáváme zpětnou vazbu, kterou následně párujeme s logy a celý systém vylepšujeme.
Co si z toho odnést
WEDOS Global Protection není jednorázový produkt, který se „udělal a je hotovo“ je to živý systém, který se týden co týden dolaďuje podle nových typů útoků a chování internetového provozu. Za jednoduchým přepínačem v administraci stojí desítky tisíc řádků vlastní logiky, stovky tisíc řádků konfigurace rozdělené do vrstev a profilů, a neustálý přísun aktuálních dat o hrozbách z celého internetu to vše chráněné omezeným přístupem k samotnému srdci systému. Samotná hardwarová část, konektivita jsou pak další složitá část.

