Blokování 10 000+ IP adres na hostingu

Jetset

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #45 kdy: 23. 10. 2014, 15:25:14 »
Kdyz prevedes adresy na 32 bitova cisla, seradis je a pak budes hledat metodou puleni intervalu, tak pri 16Ki adresach budes potrebujes maximalne 14 porovnavani a vis, jestli ji mas nebo ne. To bude tak rychle, ze nema smysl kvuli tomu volat SQL. Tabulka bude mit 64KiB, to je srovnatelne s delkou vetsiho programu v PHP, takze rychlost jejiho nacteni bude taky pomerne velka. Pokud ji misto cteni jenom namapujes do pameti, bude to pravdepodobne jeste rychlejsi. Vzhledem k tomu, ze pokud se to bude pouzivat casto, bude stejne v cache, to znamena, ze namapovani teto tabulky do pameti bude vlastne jenom inicializace tabulek v memory manageru. Ale nevim, jestli to PHP umoznuje.


Podepisuji se pod petici o zruseni blbych otazek v overovaci. Za chvili tam budou i otazky ve kterem roce byl 15 sjezd KSC a jestli se ho osobne zucastnil i Lenin :-)


Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #46 kdy: 23. 10. 2014, 18:37:58 »
Přinejmenším některé hostingy pravděpodobně mod_php používají.
On už umí mod_php fungovat v režimu suExec, tedy že se pro každý požadavek změní efektivní UID na daného uživatele? Nebo "sdílený webhosting" znamená, že zákazníci spolu sdílí i všechna data a skripty?

jaksi i v jakémkoli *CGI módu (mimo samotný CGI) normálně persistentní konexe fungují
To, že je něco technicky proveditelné, je to zapnuté, a prakticky se to použije, jsou tři různé věci. To má ten sdílený webhosting v poolu navázaná spojení pro všechny uživatele? Nebo má navázaná anonymní spojení, která se musí při každém požadavku přihlásit?

Co kdybys místo mlžení se snažil říci nějaká fakta (např. většina sdílených hostingů používá technologii XY, ve které nefungují persistentní konexe protože YZ).
Co používá většina sdílených hostingů je celkem jedno. I kdyby měl ten hosting v poolu navázaná spojení do databáze, která už prošla autentizací, pořád musíte poslat do databáze požadavek (nejspíš po síti), databáze jej musí rozparsovat, vyhledat v indexu, vrátit odpověď (opět nejspíš po síti), klient musí vytáhnout data z odpovědi - a má výsledek. Když to porovnáte s řešením bez databáze (vyhledat v indexu a má výsledek), zjistíte, že řešení s databází dělá všechno, co řešení bez databáze, a k tomu ještě spoustu dalších věcí. Které se zkrátka nestihnou udělat v nulovém čase.
Ten sdílený webhosting k tomu už jenom dodává další zdržení, protože těžko bude optimalizován na velmi rychlé vyřízení několika typický dotazů (na to jsou optimalizovány třeba CDN), ale naopak je optimalizován na to, že každý požadavek je úplně jiný a mezi požadavky na jeden web je naopak větší prodleva. Takže zrovna držet v poolu autentizovaná spojení do databáze může být kontraproduktivní.

Že to bude jako v tom vláknu o autorských právech - v okamžiku, kdy jsem od Tebe chtěl jasné vyjádření, z kterého by bylo jasně vidět, jaké tvrdíš blbiny, taks po pár pokusech se odpovědi vyhnout jsi z diskuse zmizel.
Chcete diskutovat o tématu, nebo si chcete vymýšlet báchorky?

Trupik

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #47 kdy: 24. 10. 2014, 07:41:01 »
Filip: prevádzkujeme zdieľaný hostingový server od roku 2005, normálne na mod_php, so stovkami zákazníkov. Aby si ľudia nevideli súbory, na to je v PHP open_basedir. Je potrebné sa trochu pohrať s konfiguráciou a zakázať niektoré funkcie, ale tie by si musel zakázať aj pri CGI. Tvoj predpoklad, že sa to nedá, je jednoducho mylný.

Iná vec je, že pconnect je v takom prípade na houby, pretože každý request obsluhuje iný apache a tak sa potrebuje zakaždým pripájať na inú DB. Pri používaní perzistentných spojení by si za chvíľu došiel k tomu, že každý apache bude pripojený na každú databázu. Príklad: pri 200 databázach a 50 apačoch by to bolo 10.000 spojení na databázu. Toľko Ti databázový server nedá a aj keby dal, tak dopady na spotrebu prostriedkov systému budú horšie než nadväzovať spojenie vždy odznova.

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #48 kdy: 24. 10. 2014, 08:17:37 »
Aby si ľudia nevideli súbory, na to je v PHP open_basedir. Je potrebné sa trochu pohrať s konfiguráciou a zakázať niektoré funkcie, ale tie by si musel zakázať aj pri CGI. Tvoj predpoklad, že sa to nedá, je jednoducho mylný.
Můj názor je, že tímto způsobem se to bezpečně udělat nedá. Musíte zakázat některé funkce – opravdu si si vzpomenete úplně na všechny? A kontrolujete to s každou aktualizací? Pak se rozhodnete, že zákazníkům povolíte cron, nebo vedle FTP i SSH, nebo cokoli jiného – a budete vše znovu kontrolovat, zda neexistuje nějaká kombinace, jak to obejít? Pro řízení přístupu k souborům jsou určena přístupová práva na úrovni operačního systému, operační systém to hlídá a dělá to dobře. Nevěřím tomu, že to PHP dělá stejně dobře.

Když se dívám na CVE:
  • CVE-2014-5120 2014-08-22 might allow remote attackers to overwrite arbitrary files
  • CVE-2014-3597 2014-08-22 Multiple buffer overflows possibly execute arbitrary code
  • CVE-2014-3515 2014-07-09 allows remote attackers to execute arbitrary code
  • CVE-2013-6420 2014-07-17 allows remote attackers to execute arbitrary code or cause a denial of service (memory corruption)
  • … pár měsíců přeskočím …
  • CVE-2012-1171 2014-02-18 allows remote attackers to bypass the open_basedir protection mechanism and read arbitrary files

Váš předpoklad, že se to dá zabezpečit, shledávám mylným.

Trupik

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #49 kdy: 24. 10. 2014, 15:07:37 »
Keď tu začnem pastovať CVE-čka k linuxovému jadru, bude z toho vyplývať, že hosting sa nedá zabezpečiť nad servermi s Linuxom?

...

Áno, treba sa o to starať, robiť updaty, kontrolovať konfigurácie. To ale nie je žiadne špecifikum zdieľaného hostingu či mod_php. To pokladám za nutnú podmienku toho, aby vôbec človek mohol mať kľudné svedomie, keď pripája nejaký server na internet.


Logik

  • *****
  • 817
    • Zobrazit profil
    • E-mail
Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #50 kdy: 24. 10. 2014, 15:43:37 »
Citace
On už umí mod_php fungovat v režimu suExec,...?
Neumí. Bezpečnost se řeší jinak. Úroveň bezpečnosti je nižší, ale dostatečná na to, jak levné hostingové programy se na takovém webhostingu provozují. To, že se ptáš na takové základní věci jen ukazuje, že kecáš do věcí, o kterejch nic nevíš.

Citace
2)To, že je něco technicky proveditelné, je to zapnuté, a prakticky se to použije, jsou tři různé věci.
To co jsi tvrdil bylo: "Pokud se interpret PHP startuje znova pro každý požadavek, není kde ten pool držet." Tak jsme Ti ukázali, že zaprve evidetnně na sdíleném hostinu je normální běžet na mod_php, kde se PHP nestartuje vůbec, a že při řešení s FastCGI se taktéž PHP nestartuje pokaždé znova. Prostě to cos tvrdil byla nepravda a ukazuje to, že naprosto netušíš, jak jsou postavené normální hostingy. Teď se jen vykrucuješ a snažíš se to cos předtím říkal, překroutit a tvrdit, že je zakázaný pconnect. V tom máš pravdu, že to na některých hostingách je, ale jsou hostingy, kde pconnect vyladit a použít umí, např.

https://github.com/bradleyboy/webhost-whois/issues/2
https://webhosting.vse.cz/info/informace/technicke-informace/?print=yes

Což je i odpověď na tvojí povýšenou otázku: Já si rád přečtu o sdíleném webhostingu, kde má každý uživatel připravený pool otevřených databázových spojení k MySQL databázi na lokálním serveru.

Základ je ale to, že jsi se snažil tvrdit, že na sdíleném hostingu se vždycky spouští nový php proces, což prostě není velmi často pravda a ukazuje to, že kecáš do věcí, o kterejch nic nevíš.

Citace
> jaksi i v jakémkoli *CGI módu
To má ten sdílený webhosting v poolu navázaná spojení pro všechny uživatele? Nebo má navázaná anonymní spojení, která se musí při každém požadavku přihlásit?
Z položené otázky je jasné, že
1) nevíš, jak fungují persistentní mysql konexe v PHP. Nastuduj si to třeba tady: http://php.net/manual/en/features.persistent-connections.php
2)  Nevíš, jak se nastavuje webhosting funguje v režimu *CGI. Tam se to zabezpečuje tak, že každému uživateli běží FastCGI proces pod jeho uživatelem, takže nějakej pool společnejch konexí by nemohl fungovat, i kdyby to PHP umělo. Tvé otázky jen ukazují, že o věci nevíš vůbec, ale vůbec nic, jen děláš chytrýho.

Jestli se ptáš, jak je to udělaný v praxi, tak např. tak, že FastCGI skripty maj krátkou dobu životnosti, která zaručí, že opakované dotazy z těch pár vytížených webů (u kterých o výkon jde) - a např. ze site, který zrovna prolejzá nějakej webcrawler - pojedou z poolu procesů, které si budou držet konexi do DB, zatímco takoví Ti běžní uživatelé (pět dotazů za den) fungujou v podstatě stejně jako CGI.

Citace
A proč to píšete do téhle diskuse, kde se bavíme o sdíleném webhostingu...?
.....
.....
Co používá většina sdílených hostingů je celkem jedno.
Je krásné, jak umíš během dvou příspěvků naprosto popřít to, číms argumentoval předtím....

Citace
... I kdyby měl ten hosting v poolu navázaná spojení do databáze, která už prošla autentizací, pořád musíte poslat do databáze požadavek (nejspíš po síti), databáze jej musí rozparsovat, vyhledat v indexu, vrátit odpověď (opět nejspíš po síti), klient musí vytáhnout data z odpovědi - a má výsledek. Když to porovnáte s řešením bez databáze (vyhledat v indexu a má výsledek), zjistíte, že řešení s databází dělá všechno, co řešení bez databáze, a k tomu ještě spoustu dalších věcí. Které se zkrátka nestihnou udělat v nulovém čase.
Opět jen ukazuješ neschopnost diskutovat. Toto tvrzení jsi již jednou předložil a já Ti ho vcelku jasně vyvrátil provedeným testem, který dopadl pro mysql lépe než pro řešení v php. Důkaz ignoruješ a furt dokolečka opakuješ své nepravdy.

Nu a jinak tam máš spoustu nepřesností: dneska se virtualizuje, takže db a php běží na jednom stroji, takže žádné síťové latence - opět kdybys znal realitu webhostingu, tak takovou blbost nenapíšeš. Také ignoruješ mysql má query cache (takže žádné parsování dotazu) - navíc řešení napsané v php se parsovat musí úplně stejně. Také jsi zapoměl na takový drobný detail, že v řešení bez databáze musíš ten index nějak do paměti dostat, zatímco mysql ho v paměti má. Atd... Zanedbáváš tolik "detailů", že z toho je něco jako důkaz, že vlak drncá: http://vtipy.yin.cz/o-policajtech/26/proc-vlak-na-kolejich-drnca/

Ale to je vcelku jedno - debata o každém jednotlivém nesmyslu v Tvojí argumentaci by byla asi podobně plodná, jako debata o autorských právech, podstatné je, že v Tvé ohnuté realitě to možná pomalejší být musí - ale ve skutečné realitě test ukázal, že řešení s databází je rychlejší, i když tvrdíš opak.

Citace
Chcete diskutovat o tématu, nebo si chcete vymýšlet báchorky?
Báchorky? Ty chceš popřít, že jsi opustil diskusi poté, co jsem trval na tom, abys zodpověděl jednoduché otázky? (které podle mne ukazovaly rozpor v tom, cos tvrdil - a evidentně jelikož jsi udělal všechno pro to, abys na ně neodpověděl, tak si to nemyslím sám....)

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #51 kdy: 24. 10. 2014, 16:56:18 »
Keď tu začnem pastovať CVE-čka k linuxovému jadru, bude z toho vyplývať, že hosting sa nedá zabezpečiť nad servermi s Linuxom?
Já jsem neodkazoval na jen tak nějaká náhodně vybraná CVE, ale na ta, která popírají, že PHP umí oddělit uživatele i bez oddělených systémových účtů.

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #52 kdy: 24. 10. 2014, 16:59:33 »
Takže jste potvrdil to, co jsem psal já. Akorát se těmi indexy je to trochu jinak, v případě indexu databáze i čtení z indexu z disku přímo PHP mohou být data jak nakešovaná v RAM tak na disku, a programátor aplikace to přímo neovlivní. Záleží to na heuristikách OS a databázového serveru, zda odhadnou, že se hodí ta data kešovat v paměti.

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #53 kdy: 25. 10. 2014, 07:51:36 »
Už to tu určitě zaznělo, ale člověk co provozuje tak důležitou aplikaci že je nutné blokovat anonymní proyservery a velké rozsahy adres by měl používat vps s iptables. Věřím, žš pro tak dležitý projekt nebude pár stokorun (dolarů) za měsíc žádný problém.

Lol Phirae

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #54 kdy: 25. 10. 2014, 09:40:46 »
Tvé otázky jen ukazují, že o věci nevíš vůbec, ale vůbec nic, jen děláš chytrýho.

To, že vím hovno, ale jsem chytrej jako věžní hodiny, je ovšem pravidlem u 99 procent Jirsákových diskusních příspěvků... Divím se, že s ním nikdo ještě pořád má snahu diskutovat.  ;D

Logik

  • *****
  • 817
    • Zobrazit profil
    • E-mail
Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #55 kdy: 25. 10. 2014, 20:50:05 »
Citace
Takže jste potvrdil, co jsem tvrdil já
Filip Jirsák tvrdí, že
1) Běžné webhostingy nepoužívají mod_php
2) Běžné webhostingy nepoužívají sdílené konexe
3) Běžné webhostingy startují nový PHP požadavek pro každý request
4) Použití db bude pomalejší než použití filesystému

Já všechny tyto bláboly vyvrátím a co na to Filip? Že jsem jen potvrdil to, co tvrdil.
Dál ukážu praktický test, který dokazuje, že v db je to rychlejší. Co na to Filip? Že to musí být pomalejší.

Tomu se neříká diskuse, ale demagogie.

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #56 kdy: 26. 10. 2014, 08:43:42 »
Tomu se neříká diskuse, ale demagogie.
Tohle je jediná pravdivá věta z vašeho komentáře. Své komentáře jste ohodnotil správně. A proč je to demagogie? Protože píšete, že tvrdím něco, co jsem nikdy nenapsal, nebo tvrdíte, že jste ukázal praktický test, který dokazuje vaše tvrzení, přitom ve skutečnosti dokazuje jenom to, že nevíte, o čem je řeč.
Jenom abyste si trochu rozšířil obzory: to, že něco nazvete "databáze", nemá na rychlost žádný vliv, není to žádný magický urychlovač. Takže pokud sám napíšete (já vím, že je to nemožné, ale zkuste si to alespoň představit) úplně stejný kód, který to vyhledávání a kešování dělá v databázi, bude ten váš kód úplně stejně rychlý, jako ta databáze. Takže vaše pokusy dokázat, že v databázi je to vždy rychlejší, jsou marné.

DK

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #57 kdy: 26. 10. 2014, 10:28:23 »
Tomu se neříká diskuse, ale demagogie.
Tohle je jediná pravdivá věta z vašeho komentáře. Své komentáře jste ohodnotil správně. A proč je to demagogie? Protože píšete, že tvrdím něco, co jsem nikdy nenapsal, nebo tvrdíte, že jste ukázal praktický test, který dokazuje vaše tvrzení, přitom ve skutečnosti dokazuje jenom to, že nevíte, o čem je řeč.
Jenom abyste si trochu rozšířil obzory: to, že něco nazvete "databáze", nemá na rychlost žádný vliv, není to žádný magický urychlovač. Takže pokud sám napíšete (já vím, že je to nemožné, ale zkuste si to alespoň představit) úplně stejný kód, který to vyhledávání a kešování dělá v databázi, bude ten váš kód úplně stejně rychlý, jako ta databáze. Takže vaše pokusy dokázat, že v databázi je to vždy rychlejší, jsou marné.

Kdyz uz se chcete vykrucovat slovickarenim, o jake databazi se tu vlastne vede diskuze, tak dovolte par citaci


Zkoušel jste, jak "pomalé" bude to blokování přes .htaccess? Já bych odhadoval, že režie spouštění PHP interpretu bude mnohem větší, než použití běžného asociativního pole v PHP pro vyhledávání těch IP adres, a nejspíš i větší, než ten .htaccess. Jinými slovy, pokud vám stačí sdílený webhosting, nemusíte vymýšlet nic speciálního, protože úzké hrdlo vaší aplikace bude mnohem dřív úplně někde jinde, než ve vyhledávání blokovaných IP adres.

Co v databázi [myšleno MySQL] ukládat…
Původní dotaz byl, zda použití .htaccess nebo kódu v PHP nebude moc pomalé. Použití MySQL databáze by bylo ještě řádově pomalejší.
Takze uz od zacatku se zde resi MySQL databaze, ktera ukladani a vyhledavani dat bude mit reseno mnohem efektivneji, nez jste schopen v php napsat (parsovani gramatiky ma nejakou rezii, vime?)



To není pravda. Všechny frameworky pro webové aplikace které jsou o trochu víc než jen tupé demo implementují pool databázových připojení, tady je například popis PHP+MySQL: http://php.net/manual/en/function.mysql-pconnect.php
Pokud se interpret PHP startuje znova pro každý požadavek, není kde ten pool držet.


A co zkousel Logik
Startování PHP je daleko dražší operace, než konexe do mysql. Takže v okamžiku, kdy se startuje PHP, tak je to jedno - nejdražší bude start PHP procesu a nějaká další vopičárna je jedno. V okamžiku, kdy se používá nějaké fastcgi, tak jsou čásy následující:

 1.6593210697174 -  10000 dotazů do pole načteného ze souboru
1.551509141922    - 10000 dotazů do databáze
 1.1013481616974 - 10000 dotazů do databáze používající pconnect

Soubor je tedy jednoznačně pomalejší než databáze. Kód (v databázi i v souboru je 1000 ip):
...
Zde se uplatni i vase "cache operacniho systemu", soubor je porad nejpomalejsi.


Tak co dal, jak se z toho pokusite vykecat ted? (Predpokladam argumentaci, ze muj prispevek neni vubec relevantni, resim uplne neco jineho, nepouzivam diakriticka znamenka, nejsem registrovany. Je to spravne?)

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #58 kdy: 26. 10. 2014, 11:20:46 »
Takze uz od zacatku se zde resi MySQL databaze, ktera ukladani a vyhledavani dat bude mit reseno mnohem efektivneji, nez jste schopen v php napsat (parsovani gramatiky ma nejakou rezii, vime?)
Ne, tady se nebavíme o žádné databázi. Tady se bavíme o vyhledávání IPv4 adres. IPv4 adresa, to je jedno 32bitové číslo, v souboru zapsané jako čtyři po sobě jdoucí bajty. Pokud to chcete popisovat gramatikou a psát na to speciální parser, nikdo vám samozřejmě nebrání, ale je to zbytečné. Takže když odstraníte tu zbytečnou režii, kterou tam sám přidáváte, dostanete efektivnější řešení.

Zde se uplatni i vase "cache operacniho systemu", soubor je porad nejpomalejsi.
Nejpomalejší to ovšem není z toho důvodu, že se používá soubor, ale z toho důvodu, že je to nejhloupější možná implementace.

DK

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #59 kdy: 26. 10. 2014, 11:59:09 »
Takze uz od zacatku se zde resi MySQL databaze, ktera ukladani a vyhledavani dat bude mit reseno mnohem efektivneji, nez jste schopen v php napsat (parsovani gramatiky ma nejakou rezii, vime?)
Ne, tady se nebavíme o žádné databázi. Tady se bavíme o vyhledávání IPv4 adres. IPv4 adresa, to je jedno 32bitové číslo, v souboru zapsané jako čtyři po sobě jdoucí bajty. Pokud to chcete popisovat gramatikou a psát na to speciální parser, nikdo vám samozřejmě nebrání, ale je to zbytečné. Takže když odstraníte tu zbytečnou režii, kterou tam sám přidáváte, dostanete efektivnější řešení.
Jakto? Databaze muze byt definovana jakkoliv, klidne i souborem se zaznamy sekvencnich bajtu. Precejenom jsou to vase slova.

Zde se uplatni i vase "cache operacniho systemu", soubor je porad nejpomalejsi.
Nejpomalejší to ovšem není z toho důvodu, že se používá soubor, ale z toho důvodu, že je to nejhloupější možná implementace.
Implementace, kterou jste navrhoval vy.