Počet blokovaných přenosů přesáhl 60 % aneb jak jsme pokročili s ochranou vašich webů

[gtranslate]

Je to zhruba čtyři a půl roku, co jsme hromadně spustili filtraci provozu pro webhostingy naší IPS/IDS ochranou. Systém pokročilé detekce a eliminace hrozeb. Původní pravidla pro filtrování se s těmi dnešními už nedají srovnávat. Jsou daleko benevolentnější, ale přesto efektivnější než kdykoliv předtím.

Tři stupně ochrany

Než se někdo dostane na váš web, musí projít přes tři stupně ochrany.

  1. DDoS ochrana – Nejdříve jsou to senzory naší masivní DDoS ochrany. Ty hledají hlavně nestandardní (nadlimitní) podezřelý provoz. Pokud jej najdou, tak provoz odkloní přes výhybku na výkonné servery, kde se začne s filtrováním. V březnu 2020 jsme zastavili DDoS útok o síle 44,5 Gbps. Nikdo si ničeho nevšiml.
  2. Předsazená ochranaPředsazenou ochranu jsme vám představili v dubnu 2019. Jedná se o velice rychlou filtraci postavenou na analýze přístupů ze všech našich webserverů, které stahujeme na jedno centrální místo a v reálném čase vyhodnocujeme.
  3. IPS/IDS ochrana – A teď přichází na řadu IPS/IDS ochrana, která detailně zkoumá příchozí i odchozí provoz. Na základě více jak dvaceti tisíc pravidel, které se průběžně přidávají a upravují (manuálně i automaticky), dokáže zachytit jak známé hrozby, tak i ty potenciální. Nevýhodou je, že prozatím neumíme filtrovat provoz přes HTTPS. Již brzo budeme umět i to.

Do toho nepočítáme trvalá pravidla na samotných serverech a routerech. Každý paket směřující k nám na servery je tedy 3x posouzen a teprve potom se dostane k serverům. Celé to zabere několik mikrosekund. To malé zdržení za to stojí. 

Systém ochran vyvíjíme několik let a neustále ho vylepšujeme.

Počet zablokovaných přístupů roste

Tento týden jsem si všimli, že počet zablokovaných přístupů na předsazené a IPS/IDS ochraně se přehoupl přes 60 % provozu. Převážná většina přístupů se blokuje právě na předsazené ochraně. Trochu nás znejistělo, jestli toho už neblokujeme třeba moc, ale oproti předchozím rokům jsme benevolentnější třeba k robotům a to díky chytřejším pravidlům. Tím jsme také snížili podíl falešně pozitivních blokací a blokujeme na kratší dobu.

Vysvětlení je asi jednoduché. Hardware, konektivita a další věci spojené s Internetem jsou levnější. Útočníci prostě mají více zdrojů. Je to jako s e-mailovým SPAMem. Je ho více a více (ale i ten umíme blokovat velmi dobře).

Hodně blokovaných přístupů nemusí přímo chtít nějakou zranitelnost zneužít, ale jen hledají, zda-li se na cílovém webu náhodou nenachází. Tohle samozřejmě blokujeme. Většinou automaticky, ale umíme zakročit i manuálně, jako tomu bylo v případě zranitelnosti PHP framework Nette a nebo jako v případě, kde jsme zase blokovali zneužití “děravého” pluginu pro WordPress. A takových příkladů je mnohem více…

Různá pravidla pro různé servery anebo nejdůležitější je člověk až potom robot

Vše je velmi komplikované a funguje zde určitý systém reputací. Jde o velké množství dat a jejich analýzu a nastavení prázdných pravidel. Sbíráme logy ze všech serverů, využíváme desítky různých blacklistů (i placených) a stahujeme různé databáze hrozeb (i placených) a zároveň se naše filtry chovají inteligentně. To vše mění naše filtrace dynamicky a v reálném čase a i několikrát za sekundu. 

Ačkoli sbíráme data ze všech hostingů NoLimit a WMS, tak jednotlivé servery mohou mít individuální pravidla a nastavení, která se dynamicky mění v čase.

Například pokud máme server, kde se v důsledku třeba úspěšné reklamní kampaně zvedne několika webům naráz návštěvnost nad rámec všech rezerv, tak může dojít k omezování přístupů třeba robotů. Tyto situace jsou poměrně extrémní, ale občas se mohou přihodit. Cílem je zachovat chod služeb i za cenu, že si roboti budou muset třeba hodinku počkat.

Samozřejmě to neznamená, že vám hned začnou chodit varování o nedostupnosti z monitoringu. Restrikce se týkají opakovaných přístupů, které zásadně zatěžují server nadměrnou aktivitou.

Jen abyste měli představu, tak “běžný” agresivní robot dokáže udělat třeba tisíc požadavků za vteřinu a tam nemůžete čekat, protože by to okamžitě zákazníci poznali. Takto přetížený webserver má problém to rozdýchat a v některých případech by to muselo skončit i restartem webového serveru. To jsou dlouhé minuty pomalého načítání vašeho webu s následným výpadkem. Proti tomu se prostě musíme bránit a také bráníme. Na prvním místě jsou u nás zákazníci. 

U robotů rozhoduje co dělají, ne co jsou zač

V dnešní době se nemůžete spoléhat na to, že nějaký robot o sobě tvrdí, že je třeba GoogleBot. Pokud bychom všem “googlebotům” dovolili neomezený pohyb po serverech v rámci nějakého whitelistu, tak to nedopadne dobře.

Mimochodem máme specializované filtry, které hledají falešné roboty. Pokud se někdo vydává za robota, který přistupuje jen z určitých IP adres a najednou tu máme přístup z jiné IP adresy, tak tento přístup můžeme zablokovat, výrazně omezit počet přístupů (zkušební provoz) anebo jej limitujeme v tom, co může dělat – nesmí třeba odesílat formuláře anebo přistupovat do administrace WordPress.

Právě o tom všem je chytrá ochrana. Spousta možností, kde se dá najít kompromis téměř pro každého.

Proto sledujeme hlavně aktivitu IP adres. Pokud nějaká IP adresa začne spouštět jeden anebo i více filtrů naráz, tak jí zablokujeme na omezenou dobu. Když si nedá pokoj, tak na delší a pak delší…

Roboti vyhledávačů mají výjimky, ale musí se chovat slušně

Vyhledávače máme všichni rádi a chceme, aby všechen náš obsah co nejdříve měli k dispozici v aktuální podobě. Proto ke všem známým vyhledávačům přistupujeme jinak, než třeba k robotům, co sbírají marketingová data.

Tvůrci robotů vyhledávačů počítají s tím, že mohou web anebo server přetížit, proto také reagují na různé varovné znamení, jako je například omezený počet přístupů za určitý čas anebo vzrůstající délku odezvy.

Například Google dokázal natolik přesně spočítat limity našich serverů, že prakticky nenaráží na omezení. Je to krásně vidět na následujícím grafu. Horní graf ukazuje počet přístupů GoogleBota a dolní kolik přístupů bylo zablokováno. Jedná se o 7 denní graf po hodinách.

Jen zlomek přístupů je zablokován. Pro GoogleBota evidujeme konkrétní IPv4 adresy.

Je až neuvěřitelné, jak hezky dokáže rozložit Google zátěž v čase. Naproti tomu SeznamBot jednou za čas zavelí “Zteč!” a větráky v serverech zařadí vyšší obrátky, protože se musí přetaktovat procesory na vyšší výkon 🙂

Proto také má větší množství zablokovaných požadavků. I tak se však jedná jen o zanedbatelný zlomek.

Další zajímavosti:

  • Oba se nejvíce zajímají o soubor robots.txt
    • Google měl 7.785.218 požadavků za posledních 7 dní
    • Seznam měl 6.129.646 požadavků za posledních 7 dní
  • Google také poměrně aktivně hledá soubor ads.txt – 667.876 požadavků

Roboti podle počtu přístupů

V následující tabulce najdete přístup top 45 nejaktivnějších robotů (podle toho jak se sami identifikovali) za posledních 7 dní. Tito roboti tedy prošli přes DDoS ochranu, předsazenou ochranu i IPS/IDS ochranu. Z tabulky jsou odstraněny skripty a univerzální roboti jako crawler, robot, Python request, Apache-HttpClient atd.

Robot Komu patří Počet požadavků
Googlebot Google 58 230 724
bingbot Bing 56 851 376
SeznamBot Seznam 48 036 897
YandexBot Yandex 13 631 396
MJ12bot Majestic 11 453 595
FacebookBot Facebook 10 818 181
Googlebot-Image Google 9 615 900
AdsBot-Google Google 5 865 139
UptimeRobot UptimeRobot 5 487 728
Adsbot Google 3 696 208
SemrushBot SEMrush 3 163 259
Mediapartners-Google Google 2 955 552
ZoominfoBot ZoomInfo 2 837 140
serpstatbot Serpsat 2 477 853
Seekport Crawler   2 406 872
Applebot Apple 2 134 281
heritrix Internet Archive 1 779 452
PetalBot Aspiegel 1 758 849
BingPreview Bing 1 662 438
WP Fastest Cache Preload Bot   1 501 166
DotBot Moz 1 402 027
YandexImages Yandex 1 367 933
dns-crawler CZ.NIC 1 239 963
aranhabot Amazon 1 230 600
Pinterestbot Pinterest 1 039 024
AhrefsBot Ahrefs 987 148
Datanyze Datanyze 870 914
Heurekabot Heureka.cz 822 107
ptolemaiaBot   767 102
Mail.RU_Bot Mail.ru 722 754
de/bot   593 131
Mediatoolkitbot Mediatoolkit 558 655
DuckDuckBot DuckDuckGo 532 675
magpie-crawler Brandwatch 425 309
AimySitemapCrawler Aimy 403 751
PingdomBot Pingdom 387 363
Sogou web spider Sogou 372 302
BLEXBot WebMeUp 333 534
CFNetwork Apple 332 778
SimplePie SimplePie 283 075
Electron   264 931
DuckDuckGo-Favicons-Bot DuckDuckGo 251 105
Seznam-Zbozi-robot Seznam 247 458
Amazonbot Amazon 239 876

Ještě před pár lety bychom některé z těchto robotů blokovali. Dnes už máme chytré filtry, které je jen omezí, když je to v zájmu našich zákazníků. Jinak jim v procházení webů nebráníme.

Co momentálně zlobí

V současné době máme největší problémy s CDN jako je třeba CloudFlare, přes které jde velké množství útoků. Jejich uživatelé si často neuvědomují, že za jejich pokročilejší ochranu je nutné si připlatit. Na IPS/IDS je filtrovat nemůžeme, protože se využívá HTTPS. IP adresy také nelze omezovat, protože jde všechno přes společné IP adresy CloudFlare. Cloudflare je prostě jedna velká komplikace. Domény, které mají CloudFlare, nepoužívají ani naše DNS a tak je nemůžeme rychle migrovat nebo bránit jiným způsobem. Ale o tom asi napíšeme až příště.

V budoucnu tohle vyřešíme vylepšením IPS/IDS ochrany, kdy budeme kontrolovat i provoz přes HTTPS.

Jinak jsme se za celou dobu setkali s nižšími desítkami problémů, kdy jsme blokovali něco víc, než jsme asi měli. To je fantastický úspěch.

Závěr

Jinak jsme s IPS/IDS ochranou nesmírně spokojeni. Blokuje velké množství škodlivého provozu, který nikomu nechybí. Na falešně pozitivní zablokování narazíme jen výjimečně. Většinou když hledáme problém, tak najdeme útoky z napadených počítačů anebo někdo zkouší dosti nešikovně různé penetrační testy. Pak může zjistit, že se mu nedaří pár hodin přihlásit do administrace redakčního systému, protože IPS/IDS blokuje POST requesty.

Samozřejmě mezi více jak dvaceti tisíci různými filtry se může občas něco podezřelého dostat omylem. Pokud byste něco takového našli, prostě nám napište přes kontaktní formulář a my to prověříme.

Naše ochrany považujeme za naši největší konkurenční výhodu. Takhle komplexní řešení jen tak nenajdete… A to jsme to popsali jen povrchně, protože to by bylo na stovky podobných článků.