Ez a cikk némileg elüt az eddigiektől, ugyanis ez alkalommal nem egy talált programról, IT újdonságról vagy egy probléma mélyebb körüljárásáról lesz szó. Engedjétek meg. hogy bemutassuk a Botfogót.
Mi az a Botfogó?
A történet néhány hónappal ezelőtt kezdődött. Ekkor kezdtek az oldalra találni az első, kereső űrlapot dolgoztató botok. Ezek nem csinálnak mást, mint beírnak egy (általában orosz) oldalcímet a keresőbe (http-vel együtt) majd „megnyomják” a keresés gombot. Eme botok ezzel azt akarják elérni, hogy a bérlőjük (igen, többségében ezek már bérbe adott reklám robotok) termékét reklámozzák a lehető legtöbb helyen, minél hatékonyabban. Esetünkben meg szeretnék jelentetni reklámjukat az oldalunkon. Ehhez pedig nem restek mindenféle űrlapot kitölteni, amit csak találnak, hátha valahova sikerül beküldeni a szemetüket.
Szóval megjelentek és a főoldalra kitett űrlapon keresztül szorgalmasan küldözgetik be a vackukat, ami nyilvánvalóan nem kerül ki sehova, de kitartóak. A keresés viszont erőforrásba kerül, az ilyen szemét feldolgozása pedig felesleges pazarlás, azaz jó lenne eltüntetni a balanszot.
Első gondolat, hogy a védendő űrlapokhoz pakoljunk Captchát. Nos, szeretnétek a középső sávba egy szép ReCaptcha-t látni? Mert én nem. Ráadásul piszkos idegesítő is lenne. Vagy a keresést kössük regisztrációhoz? Ez „némi” túlkapás lenne, és nem szolgálná az érdekünket. Szóval megfelelő megoldás kell. Erre születik a Botfogó.
Tehát olyan, mint a fail2ban?
Pillanatnyilag nagyon hasonlóak, ugyanakkor később több differenciáló tényező is lesz köztük. Jelenleg a Botfogót egyféle mintafelismerő fail2ban-ként érdemes elképzelni. Felismeri, ha a fentebb említett kéretlen keresés keletkezik. Úgy véljük felismeri a shellshock próbálkozások többségét is. A tesztelt anyagokban végig felismerte. Tesztelt anyag = szervert ért próbálkozások. :)
Tehát egyféle IDS?
Nem. Egy valamire való IDS azonnal be tud avatkozni. A Botfogó jelenleg esemény utáni tabletta alkalmazás, amely a naplóállományok átnézésével igyekszik megtalálni a gyanús tevékenységet és megfelelő bizonyosság mellett betenni egy rossz fiúk listába.
Fontos különbség még a Botfogó és pl. a fail2ban között, hogy amíg a legtöbb megoldás tűzfal szinten működik, mi jelenleg alkalmazás szinten. Ez azt jelenti, hogy a kérés megérkezik pl. a webkiszolgálóhoz, de az megkérdezi Botfogót, hogy mit szól ahhoz az IP címhez. Ha azt mondja, hogy üsse kavics, akkor folytatódhat a kiszolgálás, de ha feketelistázva van az azonosító, akkor nem szolgál ki semmit.
Tehát hol is a helye?
Egyféle félút a fail2ban és a Snort/Suricata között. Mivel nem tűzfal szinten vannak kitiltva a kellemetlenkedők, így némileg több erőforrás szükséges a blokkolás fenntartásához is. Azonban ez megadja a lehetőséget ahhoz – és a fejlesztésnek ez az egyik fontos szempontja –, hogy az ártatlanul kiszűrt IP cím tulajdonosa bizonyítsa magáról, hogy ő nem is akar nekünk rosszat. Ez tipikusan majd egy Captcha teszt kitöltésével fog történni.
Nem lenne egyszerűbb feketelistákat töltögetni és tűzfalba importálni?
De igen, egyszerűbb lenne, de akkor elvesztenénk a lehetőséget, hogy az ártatlan felhasználó bizonyíthasson. Másrészt pedig nincs szükségünk több tízezer IP cím tiltására, mikor csak néhány százzal van (jelenleg) bajunk. Harmadrészt pedig ezek ugye nem célzott támadások, hanem robotok automatizált szkennelése, amikben minta van, és amit fel lehet ismerni.
Pillanatnyilag nem akarunk világméretű antibot hálózatot működtetni, mindössze hatékonyan és rugalmasan szeretnénk védekezni. Arról nem is beszélve, hogy jó móka optimalizálgatni az algoritmusokat. :)
Hogy áll a fejlesztés?
Az alapvető funkciók már működnek, azaz egész ügyesen bogarássza ki a hozzáférési naplóból a számára nem tetsző elemeket és ezeket indoklással be is rakja a kis adatbázisába. Többek közt felismeri, ha lyukas WordPress & Joomla & Drupal & PHPMyAdmin telepítést keresnek rajtunk, ahogy az azonosítatlan felhasználóval történő cikk létrehozásnak sem örül.
Szépen, meggondoltan és a szabadidőnkben haladgatunk a fejlesztésével, ami nem igazán eszeveszett sebességű. Ugyanakkor ha eléri majd a 0.1-es verziót és futni fog mindenféle kis szőrös házi kedvenc veszélyeztetése nélkül, közzétesszük.
Hozzászólások
A projekt
Tetszetős projekt! Mint webfejlesztő, egyszerű, minimális védelemmel sem ellátott weboldalnál például rengeteg adattal bombázhatják meg az adott weboldalt. Bizonyos információk alapján már kiszűrhetőek lehetnek ezek a botok, a kliens identitásának szűrésével, hogy a statisztika se görbüljön például. Űrlapnál pedig (ha mégis átjut) kisebb fejtörők illetve a bemenet szűrése. Kíváncsi leszek a fejleményre :)