Jak jsme se včera zapotili aneb když po dlouhé době někdo vymyslí zajímavý DDoS útok

[gtranslate]

Včera ve večerních hodinách se po delší době objevil DDoS útok, který na naší interní společnou komunikaci přitáhl všechny. Část řešila problém, další průběžně sledovali, jak se situace vyvíjí, aby věděli, co psát zákazníkům…

Tento druh útoku nebyl zas až tak nový. V posledních dnech jsme jej řešili v menším měřítku. Nedělal příliš velké trable, protože nezpůsoboval delší výpadky služeb, ale jen chvilkou částečnou nedostupnost a to ještě v zanedbatelné míře.

Jednalo se o velice specifický ACK flood útok, který se používá k přetížení webserveru cíle. Obecně ACK (případně další podobné typy SYN+ACK) útok probíhá tak, že útočník pošle podvržené pakety na velmi velké množství serverů, které pak pošlou odpověď na cíl útoku. Cíl pak musí řešit velké množství paketů z různých IP adres, až dojde k vyčerpání místa v různých tabulkách, což znamená většinou nedostupnost služby.

V našem případě to bylo trochu jiné. Velký útok začal kolem deváté hodiny večer, kdy u části webhostingů docházelo k 22% ztrátě paketů. Bylo to nárazové. Pár sekund problém a potom desítky sekund klid. Ze začátku to vypadalo na problém u proxy serverů, které nezvládaly nápor. Což se stát nemůže. Každý proxy server u webhostingu je nastaven tak, že v případě nefunkčnosti se restartuje a jeho roli přeberou další. Navíc pokud by proxy servery nestíhaly, tak se vytvoří a spustí další. V tom je krása WEDOS Cloudu 🙂 Prostě neomezené škálování infrastruktury podle potřeby.

Po pár minutách už technici hledali skrytý útok, aby mohli upravit filtry. Což není jednoduché, protože na nás anebo naše zákazníky útočí někdo pořád. Máme tu útoky, které trvají i desítky dnů.

Když bylo vidět, že to jen tak lehce nepůjde, zapnuli jsme zpřísněný režim. To zahrnuje například blokaci ICMP paketů, což je například PING a dále třeba blokování přístupu z určitých zemích (Čína, Rusko, Jižní Amerika atd.) Tohle dočasné opatření minimalizovalo dopad útoku, ovšem zákazníci, kteří mají měření dostupnosti přes PING anebo z jedné z blokovaných zemí dostali varování o nedostupnosti, i když jejich služba fungovala normálně a nijak se jich to netýkalo.

Mezitím naši odborníci na bezpečnost analyzovali útok. Například zjistili, že 627 paketů z 1000 má nulovou délku, což jasně ukázalo na ACK malé útoky z posledních dnů jen ve velkém. Ovšem velice chytře. Aby se útočník vyhnul detekci, tak posílal pakety nárazově a plošně na všechny servery. Chvíli šlo na cíl pár set paketů a pak naráz třeba 15 tisíc za vteřinu a hned konec.

Ukázka TCP-ACK útoku

Následovala úprava pravidel u DDoS ochrany tak, aby byla citlivější a zároveň zvýšení počtu proxy serverů, aby si případnou nárazovou zátěž mezi sebou rozložily. Jednoduše jsme přidali další proxy servery a útoku jsme snáze odolali a byl klid.

Dále to asi není zajímavé. Útok se opakoval ještě kolem jedenácté večer a jedné v noci.

Něco ze zákulisí naší ochrany

V naší síťové infrastruktuře máme hned několik prvků, které využíváme pro detekci a eliminaci DDoS útoků. Našim cílem je ochránit nejen naši síťovou infrastrukturu, ale i vaše služby.

V první linii jsou “hrubé filtry”, jedná se o výkonné servery (a osazené mnoha 10GE kartami), které jen filtrují vybraný (napadený) provoz. Nic dalšího nemají za úkol. Jsou tam například úplně “obyčejné” blacklisty. Prostě jakmile je IP adresa na blacklistu, tak všechen provoz z ní se zahazuje. IP adresy se na blacklist dostanou různě. Mají například špatnou reputaci anebo jsou tam přidány na základě aktuálních útoků nebo jde o IP adresy, které získáváme z různých blacklistů (včetně placených). “Hrubý filtr” má na starosti také filtrování zemí  a kontinentů v případě masivních útoků. Zároveň tam jsou další prvky ochrany jako například různé filtrace pomocí synproxy.

Další z část ochrany, kterou využíváme, je zaměřená čistě proti DDoS útokům. Poměrně složitý systém využívá několik sond, což jsou velmi výkonné servery, umístěné v síti na různých místech. Na těchto sondách probíhá monitoring provozu a jeho následné vyhodnocování. Sondy jsou jak na vstupu do naší sítě, tak i uvnitř naší sítě a vlastní sondu má každý filtr (jak na vstupu, tak na výstupu). Takže máme detailní přehled o provozu v celé síti.

Pokud sondy dle nastavených parametrů detekují útok, zašlou tuto informaci centrálnímu systému, který provede nadefinovaná opatření zcela automaticky. Nejčastěji se podezřelý datový tok přesměruje na tzv. výhybku. Detekce to zjistí maximálně do sekundy a prakticky okamžitě je provoz přesměrován. 

Napadená data tak “netečou” přímo na server, který je cílem útoku (a do zbytku naší sítě), ale jsou směrována přes speciální filtry. Filtry jsou velice výkonné servery s vysokým výpočetním výkonem. Jejich úkolem je důkladnější zkoumání provozu a jeho následná filtrace. Vše je plně automatické. 

Filtry však plní daleko více úkonů, aby zamezily přetěžování naší infrastruktury. Mohou například blokovat podezřelý síťový provoz podle zemí původu IP adresy, filtrovat TCP-SYN útoky a spousty dalších věcí. Běžně tyto filtry pracují až s několika tisíci pravidly.

Rovněž při provozu přes tuto výhybku můžeme nastavit omezení ICMP protokolu (využívá ping). PING se velmi často používá k měření dostupnosti serveru. Někteří zákazníci jej však nevhodně používají k měření dostupnosti webu.  Pokud je totiž  proti nám vedený silný útok a provoz teče přes výhybku, kde je zakázaný ICMP (PING), tak monitoring začne hlásit výpadek. Přitom web dále funguje.

Nejen proto je pro monitoring lepší využívat HTTP(S) požadavky zaslané na web a kontrolovat návratový kód. Může se stát spousta věcí, kdy PING bude hlásit dostupnost ale web nebude fungovat (nepovedená automatická aktualizace, napadení webu a jeho  přesměrování, přetížení, vypnutí atd.).

Před webovými servery máme ještě další ochranu. Online filtraci, která má různé funkce a potom IDS/IPS ochranu. 

Součástí naší komplexní ochrany je tedy i IDS/IPS (systém detekce a prevence), který je umístěn před webhostingové servery. Ten monitoruje i obsah a způsob komunikace, který pak porovnává s databázemi nejčastějších hrozeb. Například pokud se někdo pokusí zneužít díru ve vašem redakčním systému a tuto díru náš IPS/IDS systém zná, tak jej zablokuje. Aktuálně tato ochrana je u všech webhostingů. Funguje pouze na http provozu. Připravujeme změnu, aby byla funkční i na https. Jen pro zajímavost dodáváme, že průměrně zahodíme  přes 40% provozu, který směřuje na webové servery. Nikomu nechybí. Je to například skenování anebo různí roboti  a útoky. 

Dále používáme i takzvaný  ratelimitter, který omezuje počet spojení na server, na konkrétní webhosting a IP adresy návštěvníka za určitý časový úsek. Takto nemáme problém zablokovat závadnou komunikaci při zachování dostupnosti pro zbývající návštěvníky vašeho webu.

Celá naše ochrana je poměrně složitá, ale více či méně automatická. Provozujeme ji ve výsledku na více než 20 serverech. V případě potřeby můžeme přidat kdykoliv další a navýšit tak kapacitu pro filtrace.