Jak lze v nette zabranit ddos utokum

tomasde
Člen | 26
+
0
-

Mam pocit ze nekdo skousi na muj web ddos utoky.
Nette mi vyhazuje chybu

Nette\Database\ConnectionException: SQLSTATE[08004] [1040] Too many connections #08004

Coz si myslim ze muze zpusobovat ddos utok. Nekdo v loopu proste vola stranku
Koukal jsem i na adressy jake vola. Utocnik si mysli, ze mam shitackej nebezpecnej wordpress, protoze ty adresy jsou wp_......php
________
Mam zmerit cas nekam ulozit a kazdymu navstevnikovy dat min cas a max pocet refreshu za sec ?
Normalni uzivatel asi nebude volat stranku 3-vice krat za sec. Takze kdyz by k teto podmince doslo, tak by mu to vyhodilo 429.

Editoval tomasde (6. 4. 23:21)

Michalek
Člen | 212
+
0
-

Nešlo by spíš v htaccess zablokovat přístupy na wp-* stránky?

tomasde
Člen | 26
+
0
-

on ty adresy meni ne vzdy to jsou adresy s predponou wp_ posledni utoky uz jsou rovnou na existujici stranky home a podobne

Editoval tomasde (6. 4. 23:23)

tomasde
Člen | 26
+
0
-

udelal jsem limit 10 reqestu za sec
Snad to bude fakcit hodil jsem to do basePresenteru
I kdyz mi to jako dobre rereni moc neprijde to neustaly zapisovani do cache pri kazdym requestu :-(

private function rateLimiter($maxRequests = 10, $timeFrame = 60): void {
        $request = $this->getHttpRequest();
        $ipAddress = $request->getRemoteAddress();
        $cacheKey = 'rate_' . md5($ipAddress);

        // Získáme počet požadavků za poslední časové okno
        $requestCount = $this->cache->load($cacheKey);

        if ($requestCount === null) {
            $this->cache->save($cacheKey, 1, [
                'expire' => '+' . $timeFrame . ' seconds'
            ]);
        } else {
            if ($requestCount >= $maxRequests) {
                $this->error('Too many requests, please try again later.',\Nette\Http\IResponse::S429_TooManyRequests);
            }

            $this->cache->save($cacheKey, $requestCount + 1, [
                'expire' => '+' . $this->timeFrame . ' seconds'
            ]);
        }
    }
Felix
Nette Core | 1270
+
+4
-

Tohle se obecne resi o daleko lepe na urovni loadbalanceru/webserveru. Pokud jsi na webhostingu, zkus tam hodit aspon cloudflare. To ti odfiltruje podezrely provoz.

Kamil Valenta
Člen | 844
+
+1
-

Přesně tak, pokud v cestě není balancer, pro Apache je např. mod_evasive. Jinak 10 requestů za sec. je hodně málo. To snadno „vyžere“ ajaxová stránka. O to snadněji, když kdejaký větší subjekt / firma / obec je schovaná za jednou společnou IP…

tomasde
Člen | 26
+
0
-

Diky ale mod_evasive a naky extra veci na sdilenym hostingu absolutne nehrozi. Kdysi to byval jeden z nejlepsich hostingu. Dneska je to absolutne neauktualizovana sr… Akorad pridaj novou verzi php a nazdar. Je tam jen php, mysql, mail,ftp a nazdar. Zadny extra nastavovani ani neni povoleny, nebo naky extra veci navic. Uz kdybych chtel pridat rozsireni do php tak nehrozi. Nemuzu prechazet jinam, protoze mam na tom servru tolik webu a emailu, ze proste prechod jinam je nemozny. Dokonce tam mam weby ktere jsem nekomu kdysi delal a porad bezi. Proste sem jen prikoupil domenu.

Editoval tomasde (7. 4. 11:54)

Kamil Valenta
Člen | 844
+
+4
-

tomasde napsal(a):

Diky ale mod_evasive a naky extra veci na sdilenym hostingu absolutne nehrozi.

Jak už bylo řečeno, můžeš do cesty strčit Cloudflare a odfiltrovat to tam. Je to jen změna v DNS.

Nemuzu prechazet jinam, protoze mam na tom servru tolik webu a emailu, ze proste prechod jinam je nemozny.

Vždy existuje cesta. I kdybys kopíroval 10 webů za den, tisíce jich tam přece nemáš. V dnešní době není sebemenší důvod zůstávat u hostera se špatnými službami.

mystik
Člen | 320
+
+1
-

Mod evasive by mel byt IMHO standard u kazdeho hostingu. Zkus jim napsat jestli by ho mohli doinstalovat.

hrach
Člen | 1844
+
+2
-

Ja jsem vsemu zmigroval DNS na cloudflare. Ta protection je v basicu zadarmo a je to uplne zakladni step, jak na to. A hlavne fakt neni treba resit zadny hosting veci a finetuning.

tomasde
Člen | 26
+
-2
-

To Hrach: Me ta cloudflare prijde otravna. Kdyz jdu nekam na stranky a objevi se tam tohle a musis cekat nez se to vypi..uje. A zakazniky to 100% odradi protoze netusi co to je a vyvola to v nich pocit ze je stranka nefunkcni, hackla nebo zaskodnicka. Ja se snazim vyhejbat vsem otravnejm vecem na strankach. Tj reklamy, vyskakovaci hovadiny, cookie dotazovaci nesmysl..... Udelal jsem jen takovej malinkej prouzicek dole na strankach aby je to neobtezovalo a byrokraticka zk.. eu byla spokojena a nevopruzovala.
Me osobne vsechny tyhle otravny veci na strankach stvou, proto tim nechci otravovat a odrazovat svoje zakazniky.

Vyresil jsem to tak, chvilku jsem si monitoroval adresy na jaky utoci. Bud maj predponu wp_ nebo jsou i jine. Ale vzdy konci .php
Takze sem .php zablokoval v htaccess

RewriteCond %{THE_REQUEST} \.php[\s?] [NC]
	RewriteRule ^ - [F]

	RewriteCond %{HTTP_USER_AGENT} (AhrefsBot|SemrushBot|MJ12bot|DotBot|BLEXBot|Sogou|YandexBot|crawler|spider|HTTrack|Python-urllib|curl|wget) [NC]
	RewriteRule ^ - [F,L]

Pro jistotu i naky boty a je klid.

Editoval tomasde (9. 4. 15:55)

Felix
Nette Core | 1270
+
+1
-

Trochu se ztracim, resime DDOS? Jakoze fakt DDOS a nebo, ze tam prijde sem tam nejaky bot? Protoze jestli to ma byt ochrana proti DDOS, tak Cloudflare dava smysl, at to uzivatele otravuje nebo ne. Btw, nemam pocit, ze by me to nekdy otravovalo a neco na me skakalo. Pokud je lepsi aby web spadnul, protoze to nahodou nekoho otravuje, tak je to jina debata a od zacatku se snazim pomoct s necim co ti @tommasde prijde zbytecny.

hrach
Člen | 1844
+
+1
-

@tomasde:

  • ale to jsi na omylu, CF tak nefunguje by default. Je tam nekolik urovni a to, co popisujes, tak to je nejpravdepodobneji to, ze si zapnul uroven ze jsi pod utokem. Normalni ochrana CF je absolutne neviditelna.
  • dal maji featuru, ktera pousti omezene lidi na web – opet, nesouvisi s ochranou pred boty a ddosem
  • a co se tyka reklam, tak to mluvis o necem uplne jinem;