Staráme se o jeden větší globální magazín. Pořád tam desítky redaktorů píšou články, 24/7 all over the globe.
Před pár dny web přestával reagovat v rámci slušnosti a ačkoliv má pro sebe slušný server, šel do kolen.
Dali jsme hlavy dohromady se správcem a zjistili jsme, že armáda botů web vysiluje nesmyslnými dotazy na adresy, které neexistují. DDoS útok jak ze slabikáře. Šlo o naprosto normální dotazy, které nešlo nijak odlišit. Jen jich bylo trochu moc za sekundu.
Navzdory různým úrovním cache se jim dařilo server řádně vytížit.
Navrhli jsme a po schválení provedli následující:
- ihned jsme zakázali přístup na adresy obsahující /tag/ (za pár hodin jsme ho zase povolili)
- vyřadili jsme nepotřebné sekce článků ze sitemap webu (štítky; rubriky a archivy majitel v sitemapě chce mít)
- nasadili jsme statickou html cache pro obsah do roku 2019 (archiv má 10 let), nový obsah se necachuje
Další kroky byly plánovány takto:
- pokud se bude útok opakovat, zanalyzujeme přístupové logy a identifikujeme crawlery, které web mapují a chystají mapu pro boty, kteří jdou ve druhé vlně
- zakázat pomocí robots.txt přístup těmto crawlerům (boty nepoznáme, není co zakázat)
- zakázat stránkování (boti zkoušeli stránkování do absurdně vysokých čísel), resp. vytunit chybové stránku 404
Provedli jsme ihned první tři kroky. Přes noc se web nacachoval, statické html mělo přes 9 GB, poté ji plugin zneplatnil a smazal, začala se vytvářet znovu. Vyladíme.
Útoky ale přestaly v podstatě ihned – boti přišli o sitemapu a pokud poslali vyzvědače, aby sestavili novou, měli bychom je poznat. Resp. budeme přísní a zlí a zakážeme všechny kromě povolených crawlerů (podle nějakého seznamu, který vylepšíme).
Samozřejmě se také zrychlily odezvy serveru, protože vrací hotové html. Dotazů na starý obsah je nakonec jen ~10 %, ale dokázaly bez cache celkem zkomplikovat život.
Nový obsah se stále necachuje. Asi budeme majitele trochu přesvědčovat…