Wordpress a totální vytížení serveru
June 9, 2008 Category: Programování, Zkušenosti 1 Comment »
Před časem se mi ozval Dalibor Behún pro kterého jsem programoval web http://www.proofreading.cz/ s tím, že dostal na českém hostingu nůž na krk, protože totálně vytěžujeme server. Odpověď se hned nabízela – wordpress je poměrně nenasytný produkt a dokáže zkonzumovat strašná kvanta systémových prostředků. Klasika, nahodíme WP-Cache a problém bude vyřešen. Bohužel, opatření se minulo účinkem. Z hostingu stále docházely stížnosti a nakonec i onen nůž na krk v podobě 24 hodin na uklidnění situace a nebo opuštění serveru. To už byla seriózní výhružka a přitom žádná zjevná příčina, na statistikách web nevykazoval zvýšenou návštěvnost, vše co šlo bylo cacheované, části webu které jsme sami dopsali a na které jsme byli náležitě hrdi byly pro jistotu cacheované vlastním systémem…
A přesto, nic nepomáhalo. Poslední možnost, pohled do logů apache… První varovný signál, log za jeden den měl několik megabajtů. Tedy zagzipovvaný, rozbalený měl kolem 100MB. To už bylo podezřelé. V logu bylo řádově statisíce řádků za den. Web měl přesto del statistik návštěvnost řádově v tisících. A po letmém pohledu do logu bylo zarážející zejména jak často je tam požadavek ve tvaru:
“GET /jak-se-poprat-s-nazvy-firem-s-malym-pismenem/scripts/scripts/scripts/scripts/scripts/scripts/scripts/scripts/\”%20+%20gaJsHost%20+%20\”google-analytics.com/\”%20+%20gaJsHost%20+%20\”google-analytics.com/scripts/scripts/scripts/scripts/scripts/scripts/\”%20+%20gaJsHost%20+%20\”google-analytics.com/ga.js
Dokonce tak často, že tvořily 91% denní komunikace serveru se světem. Jak je vidět z odkazu, problém byl v nějakém skriptu, který se snažil stáhnout celý web a ideálně i stránky, které na webu nejsou. Web totiž v patičce obsahoval kód google analytiky, který pomocí document.write připisoval do stránky své umístění (buď http nebo https). Útočící skript si to vzal po svém a pokusil se za aktuální URL vložit /scripts/ a text který se vkládal pomocí document.write.
Taková stránka ale nevyhodila regulérní 404 ale pouze upozornění botovi nesrozumitelné. A kód na analytiku. Rekurze byla na světě.
Řešení se ukázalo jako velmi prosté, pokud nám něco přistoupí do /scripts/ ohlásíme 404 chybu (stránka nenalezena) a ukončíme skript. Efekt byl okamžitý.
Name: Michal Tuláček
October 9th, 2008 at 19:31
Mám podobný problém. Keďže nie som programátor, existuje niekde návod, ako to prakticky vyriešiť? Díky.