Blokování 10 000+ IP adres na hostingu

xyz

Blokování 10 000+ IP adres na hostingu
« kdy: 19. 10. 2014, 12:53:37 »
Resim vykonovy problem s kterym si nevim rady.

V soucasnosti mam levny webhosting, kde mam moznost blokovat skrze

.htaccess
nebo skrze basePresenter moji aplikace v PHP (mam maximalne 5 php procesu v case)
nechtene IP adresy.

Zatim jich tam mam jen par desitek, takze vykonove nemam problem.
Ale uvedomil jsem si, ze budu potrebovat blokovat i TOR exit nody (cca 1000 IP), a verejne proxy servery cca 8000 IP.

kdyz to cele dam do .htaccess, tak to tim asi hodne zpomalim.
v PHP mi zase chybi neco jako je v Pythonu set  pro velmi rychle hledani v unikatni kolekci.

Dalo by se to nejak rozumne resit bez toho abych prechazel na vlastni vps?




« Poslední změna: 20. 10. 2014, 08:00:36 od Petr Krčmář »


JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Jestli tam mate Linux: http://www.root.cz/clanky/ipset-odlehcete-pretizenym-iptables . Snad je jedno, kde to blokujete.

xyz

sdileny webhosting = nemam tam roota. Jsem zakaznik

Lol Phirae

Kup si VPS.

xyz

koukam, ze to ani nectete cele.



Lol Phirae

Jo, čtu to celé... voni tě z toho levného sdíleného hostingu brzo vykopnou, takže to pochopíš sám.

xyz

Jasne! moje aplikace ma asi tak 2x rychlejsi execution time nez bezne hostovane prasarny typu WP a Joomla. A jediny o co se snazim, aby to tak zustalo.

uz zadnej zbytecnej offtopic.
nic te nanapada? tak nepis.

Rejpal

Kup si VPS. Chápu, že cenový rozdíl mezi hostingem a vpskou v hodnotě dvou piv měsíčně je docela dost.

OT: Osobně mám zase problém se zabezpečením kola. Nechci, aby mi ho na ulici, když jsem v práci, v obchodu, kině..., ukradli. Známí říkali, že si mám pořídit na kolo zámek, ale já si ho prostě nechci kupovat. Poradíte mi někdo jak rozumně a bezpečně někde nechat kolo?

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Kup si VPS. Chápu, že cenový rozdíl mezi hostingem a vpskou v hodnotě dvou piv měsíčně je docela dost.

OT: Osobně mám zase problém se zabezpečením kola. Nechci, aby mi ho na ulici, když jsem v práci, v obchodu, kině..., ukradli. Známí říkali, že si mám pořídit na kolo zámek, ale já si ho prostě nechci kupovat. Poradíte mi někdo jak rozumně a bezpečně někde nechat kolo?

Ano, s tim ti poradim. Privaz k tomu kolu dve zle, hosmdesatikilove dogy. Akorat je musis vytrenovat, aby zustaly na miste, kdyz jim das povel, aby ti s tim kolem neutekly. Je to mnohem spolehlivejsi nez nejaky zamek, ale prodrazi se to na zradle.

McFly

  • *****
  • 584
    • Zobrazit profil
    • E-mail
Tor exit nody můžeš kontrolovat snadno v PHP, nemusíš si nikde vést seznam. Poslední čas řeším problém se spamujícími zombie stroji na netu, ty se snažím detekovat pomocí  http://www.stopforumspam.com/usage - bohužel je tam i pár false positive nálezů. :-/

xyz

Tem co radili VPS ┌∩┐(◣_◢)┌∩┐   >:(

Ted jsem si to zmeril.
V PHP nacteni 11 000 IP adres z textoveho souboru do pole + zjisteni, jestli se v nich nachazi/nenachazi nejaka IP tam zabere 3 - 5 ms

27 tisic adres  - 7ms
111 tisic adres - 30ms

Vzhledem k tomu, ze potrebuju blokovat kolem tech 10k, to muzu klidne mit v PHP.

Žirafa

No, vždycky to můžeš zkusit a pak zjistit, zda se to projevilo na výkonu. A pokud se to na zátěži serveru projeví, tak můžeš očekávat, že tě opravdu z toho hostingu pošlou pryč (a nebo budou chtít připlatit).

Další možnost je to ošetřit ve tvé webové aplikaci. Pokud máš adresy (string nebo integer) a chceš kontrolovat, zda daná proměnná není v zakázané množině, existuje hodně způsobů:


A proč vlastně chceš / potřebuješ blokovat TORy a VPNka? Na to je nějaký zákon nebo speciální požadavek?

Lol Phirae

┌∩┐(◣_◢)┌∩┐   >:(

Ted jsem si to zmeril.

No, to na tom nejseš nic moc, ale nezoufej, prej to většinou není až tak zásadní.  ;D

v PHP mi zase chybi neco jako je v Pythonu set  pro velmi rychle hledani v unikatni kolekci.
Jako set se chovají klíče v asociativním poli. Takže třeba nadefinovavat každou zablokovanou IP adresu jako klíč do pole a pak je vyhledávat.

Kód: [Vybrat]
<?php
$blacklist 
= [ "192.0.2.1" => True"192.0.2.2" => True, ];
echo 
array_key_exists("192.0.2.1"$blacklist);

andy

Co potrebujes je identifikovat, ci ma danu ip cenu testovat. Cize napr. keby si mal 4 bitove polia dlzky 256 bitov a kazdy bit nastavis na 1 ak v danom zozname existuje ip s takou hodnotou oktetu (cize mas ip 10.0.0.2, tak nastavis v prvom 10.bit a vo stvrtom 2.bit) tak uz vies, ze existuje moznost takej kombinacie (a teda grepujes subor s ip, pripadne robis select do db kde mas indexy). Ak to tam nemas, tak urcite neexistuje. To je len tak prvy napad...ale mrkni na bloom filter. Neviem sice ako funguje, ale riesi nieco podobne.