Zablokoval jsem 1.5 milionu ip adres
Minule jsem psal, jak byl bandcamp explorer neustále pod palbou ai společností. Jejich crawlery se snažili sáhnout každý bajt každé stránky na internetu, aby ho vzápětí hodili do křemíkového kotle ai modelů. Když jsem zablokoval čtyři nebo pět rozsahů ip adres, které páchaly největší škodu, počet dotazů se propadl z 2.5 milionu denně na 200-600 tisíc.
To byl jen začátek.
Včera jsem se díval do logů webserveru a tam na mě čekal dárek: tisíce ip adres stahovaly url, které BC explorer nikdy nemohl sám vrátit.
Asi takhle: FGCI aplikace, která BC explorer pohání, brala v potaz jen query
část adresy. To je ten kus za otazníkem, třeba v url
https://example.com/who/is?q=luigi je to ?q=luigi. Cestu, /who/is v ukázce, to zcela ignorovalo. Dvě různá url s identickými query, ale různými
cestami, vrátila identický obsah. Hloupé crawlery je přesto považovali za
dvě různé stránky. Jejich adresy se lišily a odpovědí nebylo přesměrování.
Nějakým způsobem se muselo stát, že crawler načetl jednu adresu vedoucí na BC explorer s neprázdnou cestou a dostal zpátky validní stránku s odkazy na další stránky se stejnou cestou. Najednou viděl paralelní vesmír s identickým obsahem, ale odlišnými jmény a začal stahovat. (Mimochodem nebyla to zcela náhodná cesta, ale část specifické adresy, která existuje na internetu a dá se snadno najít.)
Tohle byla chyba na mojí straně. Adresy je dobré držet unikátní a přesměrovávat na kanonické url. Ale moje chyba se stala požehnáním, protože každé ip, která kdy stáhla stránku s těmito druhy adres, můžu přímo zablokovat. Očividně patří do koordinovaného botnetu.
A tak jsem zablokoval milion a půl ip adres. Prohnal jsem logy grepem, adresy převedl do binárního formátu a seřadil. Teď FCGI aplikace začne každý dotaz binárním hledáním, jestli ip adresa odesílatele není bloklá. Většinou je.
Tady máte počty přístupů po hodinách.
200 = dotaz není blokován. 403, žlutá = bot otravuje z blokované adresy. 404, černá = bot se snaží načíst očividně špatné url, měl by být zablokován.
Je vidět, že i když blokuju mega a půl ipček, stejně to vyhmátne jen část nelegitimního provozu. Obrovské množství maligních ip adres položí jen jeden dotaz a už se nikdy neukáže.
Sčítání škod: Začal jsem v situaci, kdy byl server bombardován 2.5 milionu dotazů denně a končím, kdy každý den projde 84000 potenciálně legitimních dotazů. To je jen 3.4% a nejde pouze o aktivitu lidí. Z velké části jsou to stále boti. Jen se chovají slušně nebo se umí lépe maskovat.