Hlavní navigace

DDoS útok na servery Internet Info: pohled administrátora

19. 6. 2014
Doba čtení: 5 minut

Sdílet

Protože se mnoho lidí ptá, co se v pondělí stalo, dávám takovou hromadnou odpověď. Předem varuji, že se nejedná o žádný dramatický příběh se šťastným koncem a šťavnatou zápletkou. Čekám, že diskuze k článku bude zajímavější než článek sám a poskytne zajímavé nápady. Byť tomuto typu útoku je těžké odolat.

První vlna

První příznaky, že provoz není běžný, jsme zaznamenali v pondělí v 8:28, kdy nastalo přetížení na serveru, který se stará o diskuzní fóra. Projevy byly obdobné, jako když se roboti masivně snaží hádat hesla/vytvářet nové registrace a zaplnit fórum reklamou, případně přes něj spamovat členy. Řešíme to standardně automatickou blokací IP adres, které generují nadměrný provoz. Během deseti minut se situace vrátila do normálu a provoz odezněl.

Další problém nastal v 9:13, kdy skokově narostl počet otevřených spojení na load balanceru na cca 200 000 spojení ve stavu ESTABLISHED a jádro začalo logovat SYN flood na portu 80. Samozřejmě používáme syncookies, ale ty nám nepomohou v okamžiku, kdy je spojení již sestaveno.

Porovnáním počtu spojení mezi load balancerem a backendy s příchozími spojeními bylo jasné, že se jedná o situaci, kdy někdo otevírá spojení, ale dále do něj neposílá data (tento útok se jmenuje Slowloris – pozn. redakce). Backendy totiž byly bez zátěže. Proto jsme se pokusili o zvýšení počtu spojení na hranice, které nám umožnily naše zdroje s nadějí, že útočníků není tolik, a tak jim budeme udržovat jejich hluchá spojení, což není až tak výpočetně náročné, a paralelně odbavíme běžný provoz. Navíc jsme snížili všechny timeouty postupně až na jednu sekundu, abychom se rychleji zbavovali těch, co neposílají žádná data.

Paralelně jsme blokovali na firewallu IP adresy, které měly více než 100 otevřených spojení. To se ale ukázalo jako krajně neefektivní, protože i s takovým limitem jsme měli příliš mnoho otevřených spojení. Resp. limitace se vůbec neprojevila. Takový limit navíc omezuje i regulérní provoz z větších sítí natovaných na stejnou IP adresu. 

Cílem útoku byl především Měšec.cz. Proto jsme jej začali v DNS propagovat s jinou IP adresou s nadějí, že útočníci mají cíl nakešovaný. Tento předpoklad se nepotvrdil, během chvíle se provoz přelil na novou IP adresu. Proto jsme Měšec přetáhli na vlastní instanci load balanceru s limitovanými zdroji, aby zbytek webů fungoval normálně. Z pohledu návštěvníků se ale jednalo o vypnutí Měšce, protože naděje, že se úspěšně spojí, nebyla velká. Ale při ustání útoku by došlo k automatickému zotavení.

Útočník zřejmě zjistil, že botnet hlásí masivně chyby a během asi 20 minut změnil cíl útoku na forum.mesec.cz,  které zůstalo na hlavním load balanceru. To vedlo k jeho dalšímu zahlcení.

Bylo jasné, že se dostáváme do situace, kterou nedokážeme řešit našimi zdroji. Analýza útoku ukazovala, že drtivá většina požadavků pochází ze zahraničních IP adres. Proto jsme s těžkým srdcem požádali Master Internet o odpojení zahraniční konektivity pro Měšec. I to útočník detekoval a zaútočil na Navrcholu, které potřebují k hladkému chodu všechny servery, protože poskytuje měřící kódy. Nechtěli jsme čekat na další rozšíření útoku na jiný server, proto jsme se rozhodli odpojit všechny servery od zahraniční konektivity.

Z pohledu českých čtenářů došlo ke zotavení služeb zhruba v 11:00. S určitou výjimkou není úplně snadné poznat českou konektivitu od zahraniční. V našem případě jsme zůstali připojení do NIX.CZ a odpojili jsme všechny ostatní linky přivádějící nám konektivitu. Někteří poskytovatelé ale posílají i český provoz přes linky, které z našeho pohledu vedou do zahraničí. Někteří čeští uživatelé tak zůstali odříznuti a postupně jsme přidávali výjimky na sítě, které byly blokovány zbytečně. Postupně jsme zkoušeli obnovovat zahraniční konektivitu, ale to vedlo k opětovnému strmému nárůstu provozu.

V úterý ráno jsme vše vrátili do původního stavu. Zaznamenávali jsme zvýšený provoz na Navrcholu, takže útok zřejmě dozníval, ale jednalo se o provoz odbavitelný.

Pro představu, takto vypadal graf z netflow v době útoku. 

Graf ukazuje zátěž linky, kterou útok přišel za celé datacentrum. Útok tedy svou silou přibližně zdvojnásobil počet flow/s na dané lince, jen místo celého datacentra s tisíci servery se s provozem musela vyrovnat naše serverová farma (10 web serverů + 3 databázové – pozn. redakce). Flow je zjednodušeně řečeno pokus o spojení nebo probíhající datový tok. Pokud je na grafu nárůst o 25 000 flow, znamená to, že na nás bylo směrováno zhruba 25 000 pokusů o otevření spojení/paketů za sekundu.

Druhá vlna

Úterý probíhalo v poklidu až do 17:00, kdy začala další vlna útoku hádání hesel na diskuzních fórech. Hádajících IP adres bylo ke 3000, blokování po IP adresách zase nebylo příliš efektivní, takže jsme úplně zakázali přihlašování. Zbytek provozu ale ovlivněn nebyl a situace se zdála zvládnutelná.

Ve 21:15 ale přišla další vlna útoku, a to horší než pondělní.

Jak vidíte na grafu, počet flow/s na lince datacentra se téměř ztrojnásobil. Podle statistik na forum.mesec.cz v době útoku mířilo přes 70 000 paketů za sekundu. A to byl problém i pro naše připravené řešení, protože hardware nám přestal stíhat počty přerušení od síťových karet, a tak se nemohly uplatnit nastavené softwarové limity na load balancer. Nezbylo než znovu zakázat zahraniční konektivitu a počkat, až se útočník unaví.

Co s tím do budoucna?

Asi se ptáte, co tím útočník získal a proč to vlastně dělal. To by nás také zajímalo, ale nedokážeme na to odpovědět. Žádný vyděrač nám nenabídl přerušení útoku. Prostě nevíme.

Další logická otázka je, jak se proti takovému útoku bránit. Úmyslně neříkám ubránit, protože ubránit se DDoS útoku není vždy možné. Předpokládáme, že provedeme změny v infrastruktuře, které umožní rychleji oddělit zasažené části a zajistit hladší běh ostatních aplikací. Load balancer nebude společný, ale rozdělený, aby se daly limity na počet spojení nastavovat pro každý portál samostatně. Master Internet nám nabízí připojení přes zařízení FortiNet FortiDDos-1000B, což vyzkoušíme, byť v době bez útoku těžko poznáme efektivitu tohoto řešení. Příště taky asi rychleji sáhneme k odpojení od zahraničí, protože většina útoků, které jsme viděli, přichází právě ze sítí mimo Česko.

Pokud jste velká firma, můžete uvažovat o členství v projektu Fenix (dříve Bezpečná VLAN) na NIX.CZ, ale v zásadě se jedná o řešení podobné tomu, které jsme využili při řešení našeho útoku. Tedy připojení omezené v době útoku jen na české IP adresy a zajištěné např. proti spoofingu zdrojových IP adres.

root_podpora

Další možností obrany je převést provoz do nějaké CDN, která má lepší předpoklady, že se s útokem vyrovná. Znamená to ale hluboké zásahy do struktury webů, přináší problémy s dynamickým obsahem jako jsou diskuzní fóra a v neposlední řadě značnou finanční zátěž.

Na závěr bych rád poděkoval kolegům z AdminIT za vysoké nasazení při řešení problému a společnosti Master Internet za vynikající spolupráci při blokování útoku a rychlé reakce na naše požadavky.

Byl pro vás článek přínosný?

Autor článku

Dan Ohnesorg pracuje jako systémový administrátor, správce sítí a příležitostný programátor v jazycích, pro které se nedá najít nikdo, kdo by je znal.