Get flood elleni védekezés
2012-05-20T22:17:35+02:00
2012-05-21T22:51:13+02:00
2022-07-24T02:02:25+02:00
  • No, a támadóm körülbelül pont ilyesmivel nyomhatta a bulit.

    A session-ös ötletem nem jött be...


    NA, a nagy kérdés: hogy lehet EZT blokkolni?
    Mutasd a teljes hozzászólást!
  • Teszteléshez használható egyszerűen:
    Leszedsz egy apacheot és valamelyik könyvtárban van egy ab bináris.
    command lineban elkóricálsz a könyvtárba és:
    ab -n 100 -c 10 http://www.yahoo.com/

    - 100 request 10 szálon
    Using Apache Bench for Simple Load Testing
    Mutasd a teljes hozzászólást!
  • Rendicsek!

    Most próbálok utánaguglizni, hogy mi egyáltalán egy ilyesmi támadás, illetve hogyan tudok én ilyet magamnak tesztelés céljából előidézni.
    Itt van most mellettem egy másik pc, próbálnám ddos-olni mindenféle youtube-on látott dologgal, de semmi eredmény.
    Mutasd a teljes hozzászólást!
  • Senkinek nem jár a pont, mert ez egy társalgótéma.
    Mutasd a teljes hozzászólást!
  • Session csak akkor megoldás, ha a támadó küld session id-t. Ha nem, a sessionben tárolt dolgok csak a helyet foglalják.

    A támadó log alapján nem ember kattint, hanem robot. Az egyes szálakat lelassíthatja a sleep(), de csak ha küld session id-t.

    IP tiltás esetén meg vigyázni kell, nehogy olyat tiltson, amit nem jó tiltani. Pl. google
    Mutasd a teljes hozzászólást!
  • Te döntöd el kinek adod a pontot. Add annak aki szerinted a legjobb megoldást adta a kérdésedre.
    Mutasd a teljes hozzászólást!
  • Jó ötlet az ip cím mentés, a sleep pedig - tényleg!

    Szerintem a probléma meg van oldva. Kinek jár a pont?
    Mutasd a teljes hozzászólást!
  • Vannak programok amik get vagy post metódussal megpróbálnak sqlinjection -t bejuttatni amik elég gyorsan pörögnek, és egy second alatt többször is lefutnak, új értékekkel próbálkozva.
    A te esetedben szerintem nem az adatszerzés volt a cél, csak simán vandálkodott valaki.

    Szerintem a session is jó ötlet. Próbáld meg úgy megírni a programot, hogy rakja session -be az user ip címét és egy időpontot ha a session üres.
    Ha nem üres (vagyis a következő oldalletöltéskor) ellenőrizd hogy mennyi idő telt el az előző lekéréstől, ezután írd felül a session tartalmát az aktuális idővel és ip -vel.
    Ha az eltelt idő <= 1, akkor késleltesd az oldalbtöltést, pl: sleep(2); 2 mp -el.
    Így biztos nem tudja lefagyasztani a szervered, és a támadó előbb utóbb megunja.
    Bőven elég 1 mp, mert senki nem kattintgat 1 mp -ként egy oldalon sem. Ha pedig igen akkor ott már valami bibi van.
    Mutasd a teljes hozzászólást!
  • Szerintem akkor azt fogom csinálni, hogy valahogy naplózom az oldalbetöltéseket. És ha egy ip címről 1 mp-en belül pl 5-nél több lekérés van akkor egy sima filekezeléses függvénnyel hozzáfűzöm a .htaccess filehoz az ip címet.

    Itt már csak az a kérdés, hogy hol tároljam ezeket az adatokat (naplózás)?

    Vagy mi lenne, ha egyszerűen csak session-t használnék? Hülyeség?
    pl.

    if (mktime() == $_SESSION['utolso']) die; $_SESSION['utolso'] = mktime();

    Így csak 1 valós/hasznos kérést tudna végrehajtani egy másodpercben az user.

    Az a baj, hogy nagyon azt sem tudom, hogy egy ilyen tömeges get küldés hogy működik...
    Mutasd a teljes hozzászólást!
  • egyre több oldalt találni, amin lekérhető IP alapján nagyjából honnan lép fel. Ugyanitt általában adnak lehetőséget hogy megtudd proxy-ról jön-e. Ezt a két dolgot már tiltásra is tudod használni, hiszen általában az ilyen okosok proxyról jönnek be és vandálkodnak.
    Közösségi oldal esetén meg csak van pár megbízható tag, akik segítenek a vandálok kirúgásához, ha működik email aktiválás,vagy bizonyos funkciók késleltetett elérése, megnehezítheted a dolgát, és idővel ráun.
    A floodolást meg kiszúrhatod simán, túl sok a kísérlet, letiltod. IP címe mehet htaccess be, és kész.
    Aki meg otthoni szerverről floodol, már visszakereshető, illetve csapdába csalható. Ha van googlenál ismerősöd, egyik modulodat 1 napra megkéred tegye fel google szerverre, amire ha támadó szándékkal lép hamarosan felkeresik a zsaruk
    Ha van bejegyzett domainje, még név és cím és tel szám is elérhető.
    Mutasd a teljes hozzászólást!


  • Mutasd a teljes hozzászólást!
  • A legegyszerűbb, ha fogsz egy pár havert, kocsiba pattansz és megbeszéled vele
    Mutasd a teljes hozzászólást!
  • Itt már csak az az egy probléma van, hogy mi van, ha dinamikus az ip címe és címet vált?
    Folyton írkáljam át (fűzzem hozzá) az ip címeket?
    Mutasd a teljes hozzászólást!
  • Szerintem csinálj inkább egy .htaccess -t és abban tiltsd le az ip-t.

    Ezt írd bele a .htaccess fájlba:
    order deny,allow allow from all deny from 87.229.111.22

    De ajánlom még figyelmedbe ezt a kis olvasni valót:
    A hasznos .htaccess fájl

    A sql -be írásos olvasásos módszert nem ajánlanám mert nagyon meg fogja terhelni a mysql szervered.
    Nálam 2gb ram van és 2000Mhz proci, de mindig veszekednek az apache és a mysql az erőforrásokon.
    Mutasd a teljes hozzászólást!
  • Igen, ezen én is gondolkoztam, de persze ezt dinamikusan oldanám meg.

    Azaz minden megnyitást bele sql-be, majd minden megnyitáskor olvas is sql-ből, hogy az aktuális másodpercben volt-e kérés erről az ip címről.
    header helyében meg egy sima die-ra gondoltam.

    Ha nincs más lehetőség ez marad.
    Mutasd a teljes hozzászólást!
  • Ennek így még nincs sok értelme.
    Ha a header után beszúr még egy die()-t, akkor már esetleg valamennyi (de így is jobb megoldás az iptables).
    Mutasd a teljes hozzászólást!
  • A kép alapján nem az adatszerzés a célja az illetőnek, csak a kár okozás, mivel programmal küldi a get infókat és az értékeket nem nagyon variálja.
    Nekem is ubuntu szerverem van már lassan egy éve, és eddig semmi gond nem volt vele. Csak ajánlani tudom.
    Ha nincs .htacces -ed akkor php -val is ki tudod tiltani, de ha dinamikus az ip -je akkor nem sokáig tart a kitiltás.

    <?php if($_SERVER['REMOTE_ADDR'] == "87.229.111.22"){ header("Location: http://google.hu"); } ?>

    Így ha mégegyszer megnyitja az oldala akkor eldobja a pl: google -hez.
    Mutasd a teljes hozzászólást!
  • Ennyit tudok:


    Get flood (kép)


    sql injectionnal is próbálkozott (arra is volt naplózás), de azzal nem jutott semmire sem

    @NevemTeve: iptables-hez kell mindenképpen plusz gép? (ha nyáron lesz több időm cserélek Debianra/Ubuntu server-re)

    @djjjozsi: el is mondhatnád hogyan!
    Mutasd a teljes hozzászólást!
  • htaccess -be betéve kitilthatod pikk pakk.
    Mutasd a teljes hozzászólást!
  • Az iptables nevű szoftvereszközt kell használni, hogy az arról az IP-ről érkező csomagokat minden további nélkül eldobja a tűzfal. Legalábbis linux esetében.
    Szerk: most látom, hogy Windows-os gépet használsz... bátor ember vagy...
    Mutasd a teljes hozzászólást!
  • Pontosan milyen get parancsokkal bombázott?
    sqlinjection -el próbálkozott? ...vagy csak az értékeket átírta és ezzel próbált valami hibát kicsalni a szervertől.

    sqlinjection ellen tudsz védekezni úgyis, ha a get paramétereket mielőtt átadod feldolgozásra akkor mysql_real_escape_string() -be rakod.
    pl:
    ... WHERE valami = 'mysql_real_escape_string($_GET['valami'])' ...
    Mutasd a teljes hozzászólást!
  • Üdv!

    Vagy egy saját építésű weboldalam, php, mysql-t használ a lapok megjelenítésére.

    A napokban összeakadt a bajszom egy vérpistikével, aki elkezdte get parancsok küldésével bombázni a weboldalamat. A szerver saját, így volt LOGolás (így tudom, hogy egyáltalán mi történt).
    CPU 100% és a webszerver nem válaszolt http kérelmekre...és hiphop keletkezett katasztrofális méretű logfile telis-tele get parancsokkal ugyanarról az ip címről.

    A szerver előtti átjárón (router) van DDOS védelem (ICMP-FLOOD Attack Filtering, UDP-FLOOD Filtering, TCP-SYN-FLOOD Attack Filtering), de sajnos mégis megkapott minden kérelmet a szerver.

    Véleményem szerint talán a php kódban lehetne hegeszteni valamit, hogy megakadályozzam ezeket a flood-okat.
    De így belegondolva vezérlési szerkezeteket kéne használni, nomeg sql-t kőkeményen logolás céljából, ami megint terhelés.

    Másik szervert pedig iptables-sel nem szívesen állítanék be, mert így is baromi magas a szerver fenntartási költsége...eddig a router megfelelt.

    Windows 2003-as szerverem van, apache-al.

    Mit lehet tenni ezügyben szerintetek?
    Köszi
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd